Gluon UCI Befehle und Beispiele

GLUON (OpenWrt) – UCI Befehle und Beispiele


Dieses HowTo ist mit LinuxMint (Ubuntu) getestet. Für Windows, ist Putty dein Freund und Helfer! Der Umgang mit SSH ist von Vorteil.

ls

ist ein Befehl, mit dem ihr ein Verzeichnis anzeigen lassen könnt ( ähnlich dem dir unter Dos ), mit

ls -l

könnt ihr euch die kompletten Informationen der Dateien anzeigen lassen

cd

heißt soviel wie „Change Directory“ oder auch „Wechsel das Verzeichnis“. Damit könnt ihr in einen Ordner eurer Wahl springen. Mit

cd ..

kommt ihr in den übergeordneten Ordner, mit

cd /

in das Hauptverzeichnis

cat

gibt den Inhalt einer Datei in der Kommandozeile zurueck. Der vorteil ist das man nicht extra Vi starten muss.

vi

ist ein Kommandozeileneditor, mit dem ihr euch Dateien angucken und verändern könnt. Um damit umzugehen, sollte man bei einer Suchmaschine eures Vertrauens mal nach vi kommandos oder vi einführung suchen. kurz erwaehnt, ihr kommt mit :q! oder :q! immer aus diesen Programm wieder raus, weitere Infos entnehmt ihr bitte einer Anleitung des vi. Ein guter Einstieg ist der wikipedia Vi Artikel

top

ein Tool, mit dem ihr euch die Aktuelle Auslastung eures Systems anzeigen lassen könnt

rm

loescht eine Datei

rm -d

loescht ein Verzeichniss

Anpassen der Einstellungen in OpenWrt

UCI ist das Kommandozeilentool, welches in OpenWRT genutzt wird, um Einstellungen auszulesen oder zu ändern. Über UCI lassen sich alle Einstellungen, die auch über die Konfigurationsoberfläche möglich sind, sowie einige weitere Einstellungen vornehmen.

Dieses HowTo ist mit LinuxMint (Ubuntu) getestet. Für Windows, ist Putty dein Freund und Helfer! Der Umgang mit SSH ist von Vorteil.

Einstellungen anzeigen

Alle gesetzten Einstellungen auflisten:

uci show

Eine bestimmte Einstellung anzeigen:

uci show [Einstellung]

Beispiel:

uci show autoupdater.settings.enabled

Oder für eine Einstellungsgruppe:

uci show autoupdater.settings

 

Einstellungen setzen

uci set [Einstellung]=[Wert]

Beispiel:

uci set autoupdater.settings.enabled=1

Wichtig: Wenn du Einstellungen via UCI gesetzt hast, müssen diese via „uci commit“ am Ende aktiviert werden!




Gluon ist eine OpenWrt-basierte Freifunk-Firmware, die recht häufig (aber nicht von allen Communities) im Freifunk-Umfeld benutzt wird.

Dieses HowTo ist unter LinuxMint (Ubuntu) getestet. Für Windows, ist Putty dein Freund und Helfer! Der Umgang mit SSH ist von Vorteil.

Autoupdater Branch festlegen

Wenn der Router nach dem Reboot wieder oben ist könnt Ihr den Branch für den Autoupdater noch festlegen:

uci set autoupdater.settings.enabled=1
uci set autoupdater.settings.branch=stable
uci commit

Das Update kann man auch manuell anstoßen.

autoupdater -f

Das stable Release ist immer die jüngste stabile Version der Firmware für Produktivsysteme. Der Autoupdater ist mit dem stable Branch automatisch bei Installation aktiviert, so dass die Router sich automatisch aktuell halten. Sollte dies nicht gewünscht sein, so muss dies explizit deaktiviert werden.


Neustart in den Configmode

Manchmal ist es Notwendig in den Configmode zu starten. Dies beinhaltet die Weboberfläche des Systems zum ersten Einrichten eines Freifunk-Routers. Für gewöhnlich hält man ein paar Sekunden lang die Reset Taste gedrückt.
Folgende Ausführung würde den gleichen Effekt erzielen:

uci set gluon-setup-mode.@setup_mode[0].enabled=1
uci commit
Neustart erforderlich
reboot && exit

Kontaktdaten ändern

uci show gluon-node-info
uci set gluon-node-info.@owner[0]='owner'
uci set gluon-node-info.@owner[0].contact='ANPASSEN'
uci commit

Routernamen ändern

Der Name der auf der Karte angezeigt wird.

uci set system.@system[0].hostname='ANPASSEN'

Bei Leer- und Sonderzeichen ist auch noch dieser Wert anzupassen.
uci set system.@system[0].pretty_hostname='ANPASSEN'
uci commit

Neustart erforderlich

reboot && exit

Passwort entfernen/ändern

passwd -l root

Ein neues erstellen:

passwd

Geodaten ändern

uci set gluon-node-info.@location[0]='location'
uci set gluon-node-info.@location[0].share_location='1'
uci set gluon-node-info.@location[0].latitude='51.*ANPASSEN'
uci set gluon-node-info.@location[0].longitude='6.*ANPASSEN'
uci commit gluon-node-info
uci commit

VPN-WAN Bandbreitenlimit einstellen/ändern

Egress Limit setzen:
uci set simple-tc.mesh_vpn.enabled='1'
uci set simple-tc.mesh_vpn.limit_egress='1000*ANPASSEN'
uci commit simple-tc

Ingress Limit setzen:
uci set tunneldigger.mesh_vpn.limit_bw_down='5000*ANPASSEN'
uci commit

VPN-WAN Bandbreitenlimit zeitgesteuert an-/abschalten

gluon VPN-WAN bandwithlimit switch toggle

Hiermit kannst du das zuvor eingestellte Bandbreitenlimit aktivieren/deaktivieren, sodass du die Bandbreite Zeitgesteuert dem Freifunk-Netz zur Verfügung stellen kannst.
Wenn du die Bandbreitenbegrenzung um 06:00 Uhr aktivierst und um 18:00 Uhr deaktivierst, gibst du zwischen 06:00 und 18:00 Uhr die gedrosselte Bandbreite ab.
Zwischen 18:00 und 06:00 Uhr gibst du die volle Bandbreite ab.

Setzen der Schalter:
uci set simple-tc.mesh_vpn.clock_on=0600
uci commit
uci set simple-tc.mesh_vpn.clock_off=1800
uci commit
Löschen der Schalter:
uci delete simple-tc.mesh_vpn.clock_on
uci commit
uci delete simple-tc.mesh_vpn.clock_off
uci commit

Mesh on WAN

Wenn du die WAN-Schnittstelle nicht nur für einen Internetzugang verwenden möchtest, sondern über diese auch das Meshing-Protokoll aktivieren willst, um z.B. andere, evtl. langsamere Freifunk-Router mit dem Freifunk-Netz zu versorgen, gehst du wie folgt vor.

Aktivieren
uci set network.mesh_wan.disabled=0
uci commit network
/etc/init.d/network restart
Deaktivieren
uci set network.mesh_wan.disabled=1
uci commit network
/etc/init.d/network restart

Mesh on LAN

Eigentlich wird nur der WAN Anschluss zum Betreiben eines Freifunk Routers benötigt. Die anderen Ports jedoch bleiben ungenutzt. Das Meshing ist über diese (meist gelben) LAN Ports abgeschaltet. Diese sind für Clients, neben WLAN, eine zusätzliche Verbindungsmethode. Man kann diese Ports jedoch auch dafür benutzen um mit weiteren Routern zu „meshen“.

 
Aktivieren (Gluon 2016.1.x)
uci set network.mesh_lan.disabled=0
for ifname in $(cat /lib/gluon/core/sysconfig/lan_ifname); do
  uci del_list network.client.ifname=$ifname
done
uci commit network
/etc/init.d/network restart
 
Deaktivieren (Gluon 2016.1.x)
uci set network.mesh_lan.disabled=1
for ifname in $(cat /lib/gluon/core/sysconfig/lan_ifname); do
  uci add_list network.client.ifname=$ifname
done
uci commit network
/etc/init.d/network restart

Privates WLAN aktivieren

Es ist möglich ein privates WLAN anzulegen, das mit dem WAN-Port gebridged und separat zum Mesh Netzwerk ist. Bitte beachte, dass Mesh on Wan nicht zeitgleich aktiviert werden sollte. Effekt: Dieses private WLAN ist nun Teil des am WAN-Port anliegenden Heimnetzes. Gibt man ihm die gleichen Zugangsdaten (SSID & Passwort) wie dem bestehenden Heim-WLAN, so wird dieses effektiv erweitert. Zeitgleich fungiert der Router als Freifunk-Router. Freifunk und privates Netz bleiben dabei voneinander getrennt.
Das private WLAN kann im Config-Modus aktiviert werden, alternativ auch über die Konsole wie folgt:

uci set wireless.wan_radio0=wifi-iface
uci set wireless.wan_radio0.device=radio0
uci set wireless.wan_radio0.network=wan
uci set wireless.wan_radio0.mode=ap
uci set wireless.wan_radio0.encryption=psk2
uci set wireless.wan_radio0.ssid="$SSID"
uci set wireless.wan_radio0.key="$KEY"
uci set wireless.wan_radio0.disabled=0
uci commit
wifi

Bitte ersetze $SSID mit dem Namen deines Heimnetzwerks und $KEY mit deinem bisher üblichen Key (der vom privaten Router). Bei einem Dualband-Gerät (das 2.4 und 5 Ghz für WLAN verwendet), gibt es neben radio0 auch radio1; letzteres sollte genauso konfiguriert werden.

Zum deaktivieren des Ganzen wie folgt vorgehen:

uci set wireless.wan_radio0.disabled=1
uci commit
wifi

Mesh-VPN ( L2TP) 

Wenn du diese Option deaktivierst, kann der Knoten nur mit anderen Freifunkroutern kommunizieren, wenn er sie direkt oder indirekt per Funk erreicht. Der Zugang zum Internet (und allen nicht über Funk erreichbaren Freifunkknoten) ist dann nur möglich, wenn mindestens bei einem der erreichbaren Knoten die Option aktiviert und dieser an das Internet angeschlossen ist. Wir empfehlen diese Option in jedem Fall zu aktivieren!

L2TP deaktivieren
uci set tunneldigger.@broker[0].enabled='0'
uci commit
L2TP aktivieren
uci set tunneldigger.@broker[0].enabled='1'
uci commit

WLAN (Clientnetz) zeitgesteuert an-/abschalten

AP-Timer

Das Paket kann im Konfigurationsmodus über das Webinterface oder per Shell konfiguriert werden. Über das Webinterface lässt sich nur der tägliche Schaltmodus „daily“ verwenden, für weitere Optionen müssen uci set Befehle in der ash-Shell verwendet werden.

Die möglichen und vorhandenen Einstellungen können mit „uci show ap-timer“ angezeigt werden:

ap-timer.settings=ap-timer
ap-timer.settings.enabled=’1′
ap-timer.settings.type=’day‘
ap-timer.all=day
ap-timer.all.on=’06:20′
ap-timer.all.off=’23:59′

Erklärung:

ap-timer.settings.enabled:

0 deaktiviert den AP-Timer (default) : uci set ap-timer.settings.enabled=’0′
1 aktiviert den AP-Timer : uci set ap-timer.settings.enabled=’1′

ap-timer.settings.type:

day, $day = all : uci set ap-timer.settings.type=’day‘
week, $day = [Mon|Tue|Wed|Thu|Fri|Sat|Sun] : uci set ap-timer.settings.type=’week‘
month, $day = [01-31] : uci set ap-timer.settings.type=’month‘

ap-timer.$day:

day, $day = all : uci set ap-timer.all=’day‘
week, $day = [Mon|Tue|Wed|Thu|Fri|Sat|Sun] : uci set ap-timer.Mon=’week‘
month, $day = [01-31] : uci set ap-timer.15=’month‘

ap-timer.$day.on:

Liste der Wireless-Einschaltzeiten : uci set ap-timer.all.on=’06:20′
: uci set ap-timer.Mon.on=’06:20′
: uci set ap-timer.15.on=’06:20′

ap-timer.$day.off:

Liste der Wireless-Ausschaltzeiten : uci set ap-timer.all.off=’23:45′
: uci set ap-timer.Mon.off=’23:45′
: uci set ap-timer.15.off=’23:45′

Beispiele:

AP täglich um 06:20 Uhr ein- und um 23:45 Uhr ausschalten:

uci set ap-timer.settings.enabled=’1′
uci set ap-timer.settings.type=’day‘
uci set ap-timer.all=’day‘
uci set ap-timer.all.on=’06:20′
uci set ap-timer.all.off=’23:45′
uci commit

AP wöchentlich Montags um 06:20 Uhr ein- und um 23:45 Uhr ausschalten:

uci set ap-timer.settings.enabled=’1′
uci set ap-timer.settings.type=’week‘
uci set ap-timer.Mon=’week‘
uci set ap-timer.Mon.on=’06:20′
uci set ap-timer.Mon.off=’23:45′
uci commit

AP monatlich am 15. Tag um 06:20 Uhr ein- und um 23:45 Uhr ausschalten:

uci set ap-timer.settings.enabled=’1′
uci set ap-timer.settings.type=’month‘
uci set ap-timer.15=’month‘
uci set ap-timer.15.on=’06:20′
uci set ap-timer.15.off=’23:45′
uci commit

Es können Mehrfacheinträge erfolgen, d.h. es können täglich unterschiedliche Schaltzeiten eingerichtet werden.
Bei Einstellungstyp „week“ können verschiedene Zeiten an unterschiedlichen Wochentagen kombiniert werden, genauso
funktioniert es beim Einstellungstyp „month“. Es kann immer nur ein Einstellungstyp verwendet werden.
Um mehrere Schaltzeiten zu konfigurieren, diese einfach nacheinander eingeben.

Problembegebung:

Ggfs überprüfen. Wenn mit „uci show ap-timer“ keine Ausgabe erscheint dann hiermit fortfahren.

Das Script scheint beim Update nicht sauber installiert worden zu sein. Die Datei /etc/config/ap-timer wird nicht wie beabsichtigt ausgetauscht, so dass eine komplett auskommentierte Version auf dem Router verbleibt. Damit läuft das Script nicht. Falls ihr das haben solltet, könnt ihr die Datei mit vi editieren und die #-Auskommentierungen entfernen. Dann funktionieren auch die uci Befehle wieder.


Konfiguration „Blockmesh“ ab Freifunk Lippe Firmware 0.9.3

Unter Umständen macht es Sinn das meshen, mit einen oder mehrere umliegenden (störenden) Knoten, zu unterbinden.

Das besteht zum Beispiel bei vielen WLAN Routern auf einem Haufen die kreuz und quer durcheinander meshen.

Single-Band WLAN Router – mesh0=2,4GHz
Dual-Band WLAN Router – mesh0=5GHz, mesh1=2,4GHz

Um einen Mesh-Link zu deaktivieren, muss man die MAC-Adresse des mesh-Interface des jeweils anderen Knotens sperren. Also unbedingt auf beiden Geräten!

Zunächst muss also diese MAC-Adresse ermittelt werden, dies macht man zum Beispiel mit dem Befehl:

ifconfig mesh0 | grep HWaddr
ifconfig mesh1 | grep HWaddr

Danach trägt man das gewünschte mesh-Interface, mesh0 oder mesh1, mit folgenden Befehlen, auf dem anderen WLAN-Router ein.

Per default deaktiviert, mit ‚0‘ wird aktiviert.

uci set rsk.@blockmesh[0].disabled='1'

Zu blockende MAC-Adresse.

uci set rsk.@blockmesh[0].maclist='0a:0a:0a:0a:0a:0a 0a:0a:0a:0a:0a:0a'

Das Script wird im Hintergrund alle 15 Minuten ausgeführt, damit Änderungen auch ohne Neustart berücksichtigt werden.

Mit „iw dev mesh0 station dump“/ „iw dev mesh1 station dump“  kann der Status des mesh plink überprüft werden. Dort sollte BLOCKED stehen, wenn alles funktioniert hat.


Reboot to configmode

uci set gluon-setup-mode.@setup_mode[0].enabled=1
uci commit

Neustart erforderlich

reboot && exit

Domäne ändern ab Freifunk Lippe Firmware 1.1.2

uci set gluon.core.domain="domaincode"
gluon-reconfigure
reboot

Domaincodes: d1 / d2 / d3 / d4

In diesem Beispiel wechseln wir in die Domäne 2

uci set gluon.core.domain=d2
gluon-reconfigure
reboot

Firewall Portfreigaben

Damit Access Points / WLAN Router die mit unserer Freifunk Firmware bespielt sind funktionieren können, brauchen diese die Verbindung durch die Firewall, zu unseren Servern!

UDP 53 und UDP 20002 (für zB. die Domäne 2)

Welche Domäne hat welchen Port?

Domäne 1 = 20001
Domäne 2 = 20002
Domäne 3 = 20003
Domäne 4 = 20004


Systemzeit anzeigen lassen

date

Geschwindigkeit eines Knoten messen

Das funktioniert nur mit Knoten die am Uplink hängen, bei Knoten die meshen nicht!
START=$(date +%s);  wget -O /dev/null http://ovh.net/files/100Mio.dat; END=$(date +%s); echo $((END-START))| awk '{print int(800/$1)}'

Als Ausgabe erscheint unten links die Downloadgeschwindigkeit

root@Uhlstone-Offloader:~# START=$(date +%s); wget -O /dev/null http://ovh.net/files/100Mio.dat; END
=$(date +%s); echo $((END-START))| awk ‚{print int(800/$1)}‘
Downloading ‚http://ovh.net/files/100Mio.dat‘
Connecting to 213.186.33.6:80
Writing to ‚/dev/null‘
/dev/null 100% |*******************************| 100M 0:00:00 ETA
Download completed (104857600 bytes)
133


Einstellungen der Zeitzone und Zeitserver überprüfen

less /etc/config/system

Das sollte dann so aussehen…

config system
option timezone 'CET-1CEST,M3.5.0,M10.5.0/3'
option hostname 'Knotenname'

config timeserver 'ntp'
option enabled '1'
option enable_server '0'
list server 'ntp.fflip'
list server '0.de.pool.ntp.org'