Routerkonfiguration via SSH

Aus Freifunk München
Wechseln zu: Navigation, Suche

Wenn ein Router über SSH erreichbar ist, indem für ihn ein SSH-Key oder Passwort vergeben wurde, kann er im laufenden Betrieb umkonfiguriert werden. Im laufenden Betrieb können die Einstellungen nur per SSH geändert werden, für die Konfiguration über die Web-Oberfläche benötigt man physischen Zugang (Kabelanschluss).

Um euch über SSH mit dem Router verbinden zu können, braucht ihr unter Windows einen SSH-Client. PuTTY ist wohl der Client mit der höchsten Verbreitung. Für Android kann JuiceSSH (im Play Store) verwendet werden.

Der Router ist aus seinem(!) Freifunk WLAN oder per LAN (gelbe Buchse) per IPv6 zu erreichen. Seine IPv6 hängt jedoch vom Segment ab:

ffmuc   -> ssh root@fdef:ffc0:4fff::1
welcome -> ssh root@fdef:ffc0:4fff:1::1
umland  -> ssh root@fdef:ffc0:4fff:2::1

Außerhalb von Freifunk ist der Freifunk-Knoten über die Global-Unicast-Adresse erreichbar:

ssh root@2001:470:7ca1::1

Die IP-Adressen findet man z. B. bei den Knoteninfos auf der Knotenkarte.

Die Konfiguration via Web-Oberfläche ist hier beschrieben.

Inhaltsverzeichnis

SSH-Verbindung zum Router[Bearbeiten | Quelltext bearbeiten]

Zusätzliche SSH-Keys nachträglich auf den Router legen[Bearbeiten | Quelltext bearbeiten]

Evtl. hat man bei der initialen Konfiguration nur ein Passwort gesetzt, oder möchte noch weitere Keys auf dem Router ablegen. (Z.B., um zusammen eine Unterkunft zu administrieren.) Hierzu einfach den weiteren Public-Key in der authorized_keys Datei von dropbear hinzufügen.

vi /etc/dropbear/authorized_keys

Es empfiehlt sich nach dem Speichern noch eine zweite SSH Verbindung aufzubauen, um zu prüfen, ob noch alles funktioniert, bevor man die bestehende Verbindung trennt.

Passwort ändern[Bearbeiten | Quelltext bearbeiten]

Nach dem Login:

passwd

Im nachfolgenden Dialog wird das alte Passwort nochmals erfragt und das neue Passwort kann eingegeben werden. Die Eingaben werden nicht angezeigt.

Status anzeigen[Bearbeiten | Quelltext bearbeiten]

Aktuelle Einstellungen[Bearbeiten | Quelltext bearbeiten]

uci show

Es können auch einzelne Einstellungen abgerufen werden, z. B. die des Knotennamens

uci show system.@system[0].hostname

uci show wireless zeigt die WLAN-Einstellungen an (u.a. ob Mesh via WLAN ein- oder ausgeschaltet ist).

Ausführliche Informationen über verbundene Clients[Bearbeiten | Quelltext bearbeiten]

batctl tl

liefert Informationen zu den Clients, die mit dem lokalen Knoten verbunden sind. Mit diesem Kommando wird die sog. Claimtable ausgegeben. Der Router verwendet die Claimtable, um bei Paketen, die von benachbarten Mesh-Knoten empfangen werden zu entscheiden, ob sie an diesem Knoten irgendwie besonders behandelt werden müssen, oder ob sie unbetrachtet an das Mesh weitergeschickt werden sollen. Beispiel für eine Ausgabe:

Locally retrieved addresses (from bat0) announced via TT (TTVN: 51):
      Client         VID Flags    Last seen (CRC       )
* f8:e0:79:46:b8:45   -1 [....W.]   8.640   (0x6849fdb8)
* f4:f2:6d:f1:b4:3e   -1 [.P....]   0.000   (0x6849fdb8)
* 28:27:bf:7e:a7:9f   -1 [....W.] 407.920   (0x6849fdb8)
* 68:76:4f:97:3a:30   -1 [....W.]  15.890   (0x6849fdb8)
* 00:18:4d:ea:c0:e3   -1 [......]   9.790   (0x6849fdb8)
* f4:f2:6d:f1:b4:3e    0 [.P....]   0.000   (0xc3eb63b7)

Die Client-Spalte enthält die MAC-Adressen der Clients. In der Spalte Flags bedeutet ein W, dass es sich um ein per WLAN angemeldeter Client handelt, ein P ("permanent", "no-Purge"), dass es sich um das lokale Batman-Interface handelt. Der einzelne Eintrag im Beispiel ohne gesetzte Flags ist ein Client, der über Kabel angekoppelt ist (Mesh-on-LAN ist ausgeschaltet).

Ausgehend von diesem Mechanismus gibt es Abwandlungen der Informationsabfragen für spezielle Zwecke:

Anzahl der per WLAN verbundenen Clients anzeigen[Bearbeiten | Quelltext bearbeiten]

batctl tl | grep -cE "\[....W.\]+"

Damit werden nur die Zeilen gezählt, in denen das W-Flag gesetzt ist (s.o.)

Anzahl der verbundenen Clients auf der Statusseite anzeigen[Bearbeiten | Quelltext bearbeiten]

In /lib/gluon/status-page/www/cgi-bin/status z.B. vor io.write("<h2>Neighbours</h2>") einfügen:

io.write("<h2>Clients: ")
io.write(escape_html(sys.exec('batctl tl | grep -cE "\\\[....W.\\\]+"')))
io.write("</h2>")

Falsche/keine Anzeige in der Map[Bearbeiten | Quelltext bearbeiten]

Knotenname o.ä. wurden geändert, der Knoten meldet sich aber per SSH und auf der Map noch mit alten Daten?

/etc/init.d/system reload

Der Knoten ist aus der Map verschwunden, aber noch per SSH ansprechbar? Alfred neu starten sollte helfen.

/etc/init.d/alfred restart

Bei der neuen Karte wird respondd statt alfred verwendet. Der Neustart erfolgt mit

/etc/init.d/gluon-respondd restart

Konfiguration der Knotendaten anpassen[Bearbeiten | Quelltext bearbeiten]

Werte werden mit

uci set Variable='Wert'

gesetzt.

Nach dem Setzen aller relevanten Einstellungen muss die Konfiguration mit

uci commit

gespeichert werden.

Name ändern[Bearbeiten | Quelltext bearbeiten]

uci set system.@system[0].hostname='FF-MUC-MeinRouter'
uci commit

Falls die Daten sich nicht zeitnah aktualisieren, kann man das mit

/etc/init.d/system reload

anschieben.

Geodaten anpassen[Bearbeiten | Quelltext bearbeiten]

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.194653'
uci set gluon-node-info.@location[0].longitude='6.431345'
uci commit

Die Werte für latitude (Breitengrad) und longitude (Längengrad) passt ihr natürlich euren Gegebenheiten an. Die obigen Daten zeigen auf den Alten Markt in Mönchengladbach.

Bitte achtet darauf, den Dezimalpunkt, wie im Englischen üblich, zu verwenden. Durch setzen von share_location auf 0 könnt ihr das Anzeigen eures Routes auf der Karte deaktivieren.

Kontaktdaten ändern[Bearbeiten | Quelltext bearbeiten]

uci set gluon-node-info.@owner[0]='owner'
uci set gluon-node-info.@owner[0].contact='Hans Mustermann email@hab-ich.net'
uci commit

Falls die Daten sich nicht zeitnah aktualisieren, kann man das mit

/etc/init.d/alfred restart

anschieben.

Autoupdate konfigurieren[Bearbeiten | Quelltext bearbeiten]

Man muss sich zuerst entscheiden, ob man in Zukunft mit der aktuellen stable oder experimental release beim nächsten automatischen Update weiter machen will:

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

Alternativ: 'experimental'.

uci set autoupdater.settings.enabled='1' stellt dabei ein, dass Autoupdates in Zukunft ausgeführt werden. Wird 0 eingetragen, werden die automatischen Updates ausgeschaltet und man muss selbst für manuelle Aktualisierungen sorgen.

Update ggf. manuell anstoßen mit:

autoupdater -f

Beachte: Der branch experimental ist stable voraus! Wenn man eine experimental-Version installiert hat, dann den branch auf stable ändert und wie beschreiben den autoupdater manuell anstößt, kann das System damit antworten, dass es behauptet, die Firmware sei aktuell. Tatsächlich ist relativ zur installierten Version die aktuelle stable-Version veraltet, insofern ist diese Systemantwort korrekt. Will man die aktuelle stable-Version installieren, so muss man dies manuell wie im nächsten Abschnitt beschrieben tun. Das Umschalten auf den branch stable wie hier beschrieben hat dann den Effekt, dass keine neuen experimentellen Versionen mehr installiert werden.

Im Herbst 2016 wurden neue experimentelle Firmware-Versionen ausgerollt, die keinen Alfred mehr installiert hatten. Der Effekt war, dass die so versorgten Knoten auf der "alten" Knotenkarte nicht mehr angezeigt wurden. Um sie sowohl auf der alten als auch auf der neuen Karten anzuzeigen, musste auf die letzte stable-Version zurück gegangen werden.

Firmware aktualisieren[Bearbeiten | Quelltext bearbeiten]

cd /tmp/
wget http://firmware.ffmuc.net/stable/sysupgrade/gluon-ffmuc-v2015.7-tp-link-tl-wr841n-nd-v9-sysupgrade.bin
echo 3 > /proc/sys/vm/drop_caches
sysupgrade gluon-ffmuc-v2015.7-tp-link-tl-wr841n-nd-v9-sysupgrade.bin

URL und Dateiname müssen durch passende sysupgrade Firmware für euer Gerät (rechte Spalte) ersetzt werden.

Konfiguration des Netzverhaltens[Bearbeiten | Quelltext bearbeiten]

site.conf/Segment ändern[Bearbeiten | Quelltext bearbeiten]

Für den Namen der Variable currentsite ist als Sitecode einer der drei möglichen Werte zu verwenden:

  • ffmuc
  • ffmuc_umland
  • ffmuc_welcome
uci set currentsite.current.name='ffmuc'
uci commit
/lib/gluon/site-upgrade
reboot

Das Kommando /lib/gluon/site-upgrade wird wahrscheinlich durch ein "uci:Entry not found" quittiert, dies stellt aber kein Problem für die Segment-Umstellung dar!

Achtung: Beim Segmentwechsel gehen eventuelle manuell vorgenommene Kanaleinstellungen verloren. Der Kanal wird wieder auf "6" zurückgesetzt.

Bandbreitenbegrenzung konfigurieren[Bearbeiten | Quelltext bearbeiten]

"ingress" ist der Download, "egress" der Upload. Die Zahlenwerte entsprechen der maximalen Geschwindigkeit in kBit/s.

uci set simple-tc.mesh_vpn.limit_ingress='12000'
uci set simple-tc.mesh_vpn.limit_egress='1500'
uci set simple-tc.mesh_vpn.enabled='1'
uci commit simple-tc
/etc/init.d/fastd restart

Beispiel für eine zeitgesteuerte Bandbreitenlimitierung.

Achtung: vor v2015.7 experimental wurde nachfolgender Syntax verwendet!

uci set gluon-simple-tc.mesh_vpn='interface'
uci set gluon-simple-tc.mesh_vpn.ifname='mesh-vpn'
uci set gluon-simple-tc.mesh_vpn.enabled='1'
uci set gluon-simple-tc.mesh_vpn.limit_ingress='12000'
uci set gluon-simple-tc.mesh_vpn.limit_egress='1500'
uci commit gluon-simple-tc
/etc/init.d/fastd restart

"ingress" ist der Download, "egress" der Upload. Durch setzen von 'enabled' auf '0' wird die Bandbreitenbegrenzung deaktiviert.

TX Power (Transmit Power) anzeigen/ändern[Bearbeiten | Quelltext bearbeiten]

Wert anzeigen. Hier sind dann "TX power offset" und "Tx-Power" interessant. Siehe unten.

iwinfo

ändern (Aufpassen, dass man es nicht zu niedrig setzt, da sonst keine Verbindung mehr zum Router ;) )

uci set wireless.radio0.txpower=14 && uci commit && wifi

Ein guter Artikel über die Ermittlung des richtigen Wertes für txpower bzw. empfohlene Werte für einige Geräte: https://www.freifunk-gera-greiz.de/wiki/-/wiki/Allgemein/Sendeleistung

Es gilt folgendes:

  • uci set wireless.radio0.txpower => Sendeleistung des WLAN-Chips
  • iwinfo -> "TX power offset" => interne Verstärkung
  • iwinfo -> "Tx-Power" => Leistung am Antennenausgang (Summe von wireless.radio0.txpower + "TX power offset")
  • Da drauf dann noch die Verstärkung durch die Antenne, z.B. 5 dBm

Formel für die Berechnung eines legalen "wireless.radio0.txpower"-Wertes:

wireless.radio0.txpower = 20 - "iwinfo -> "TX power offset" - "Antennengewinn" + "ggfs. 1 für interne Verluste"

Routing beeinflussen[Bearbeiten | Quelltext bearbeiten]

uci set batman-adv.bat0.hop_penalty='15'

Strafwert pro weiterem Hop im Routing. Steht normalerweise auf 15 und sollte nur geändert werden, wenn man weiß, was man tut.

Meshing konfigurieren[Bearbeiten | Quelltext bearbeiten]

Mesh on WAN konfigurieren[Bearbeiten | Quelltext bearbeiten]

uci set network.mesh_wan.auto=1
uci commit
/etc/init.d/network restart

Mit 0 statt 1 lässt sich das ganze auch wieder ausschalten.

Mesh on LAN konfigurieren[Bearbeiten | Quelltext bearbeiten]

# aktivieren
uci set network.client.ifname="bat0" uci set network.mesh_lan.auto=1 uci commit network
# deaktivieren
uci set network.client.ifname="bat0 $(cat /lib/gluon/core/sysconfig/lan_ifname)" uci set network.mesh_lan.auto=0 uci commit network

Mesh via VPN konfigurieren[Bearbeiten | Quelltext bearbeiten]

Hängt der Knoten nicht direkt am Uplink, kann man Mesh-VPN ausschalten, um die Last auf dem Knoten etwas zu mindern. Das ist z.B. der Fall, wenn bei größeren Installationen ein VPN Offloader für die verschlüsselte Verbindung zum Gateway zuständig ist.

# aktivieren
uci set fastd.mesh_vpn.enabled=1 uci commit fastd
# deaktivieren
/etc/init.d/fastd stop uci set fastd.mesh_vpn.enabled=0 uci commit fastd

Zusätzliches WLAN (erst mit v2015.1)[Bearbeiten | Quelltext bearbeiten]

Der Freifunk-Router kann neben seinen WLANs für Freifunk (ssid muenchen.freifunk.net) und für das Meshing (ssid mesh.ffmuc) noch ein weiteres WLAN anbieten. Über die grafische Oberfläche lässt sich nur ein privates (verschlüsseltes) WLAN einrichten, das direkt über den eigenen Internetanschluss läuft. Per SSH lässt sich auch ein unverschlüsseltes WLAN einrichten, das auch über die Freifunk-Infrastruktur (Client-Netz) läuft.

Prüfen, ob ein zusätzliches WLAN läuft[Bearbeiten | Quelltext bearbeiten]

Um festzustellen, ob ein zusätzliches WLAN konfiguriert ist, gibt es mehrere Möglichkeiten.

uci show wireless.wan_radio0

Das zeigt nur die Konfiguration an.

  • Wenn ein zusätzliches WLAN konfiguriert ist, dann finden sich in der Systemantwort mehrere Parameter mit wireless.wan_radio0, u.a. wireless.wan_radio0.ssid. Ein wireless.wan_radio0.network='client' bedeutet, dass das WLAN über die Freifunk-Infrastruktur (=das Client-Netz) geleitet wird, was dann sinnvoll ist, wenn man ein weitrees offenes WLAN anbietet. Ein wireless.wan_radio0.network='wan' bedeutet, dass das zusätzliche WLAN über den eigenen Internetanschluss (den eigenen WAN-Port) ausgeleitet wird, was bei einem verschlüsselten (privaten) WLAN sinnvoll ist.
  • Falls kein zusätzliches WLAN konfiguriert ist, dann finden sich keine Parameter mit wireless.wan_radio0.

Vorsicht: Damit wird nur angezeigt, wie das WLAN konfiguriert ist (wenn es konfiguriert ist). Sollte sich ein wireless.wan_radion0.disabled='1' finden, ist das WLAN zwar konfiguriert aber ausgeschaltet.

Mit

iwinfo

oder

iw dev

werden die aktiven WLANs angezeigt. Findet sich dort neben den SSIDs muenchen.freifunk.net und mesh.ffmuc eine weitere SSID, dann wird dieses WLAN ebenfalls ausgestrahlt.

Vorsicht: Damit wird nur angezeigt, welche WLANs aktiv sind, nicht aber, welche konfiguriert sind!

Privates WLAN via WAN (erst mit v2015.1)[Bearbeiten | Quelltext bearbeiten]

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'    # $SSID <- durch eueren WLAN-Namen ersetzen
uci set wireless.wan_radio0.key='$KEY'      # $KEY  <- durch das Passwort ersetzen
uci set wireless.wan_radio0.disabled=0
uci commit
wifi

Natürlich könnt ihr auch mehrere Einstellungen zusammen ändern und am Ende mit einem einzelnen 'uci commit' abschließen.

Nach den Anpassungen solltet ihr mit reboot euren Router neu starten. Die Änderungen sollten jedoch so schon aktiv sein.

Weiteres unverschlüsseltes WLAN via Client-Netz (erst mit v2015.1)[Bearbeiten | Quelltext bearbeiten]

Die Idee hierbei ist für z.B. ein Geschäft ein weiteres WLAN anbieten zu können, das einen anderen Namen trägt, jedoch auch über das FF-Netz routet. Daher ist es ganz wichtig 'client' für das Netzwerk zu wählen. Andernfalls könnte jeder in das private LAN.

uci set wireless.wan_radio0=wifi-iface
uci set wireless.wan_radio0.device=radio0
uci set wireless.wan_radio0.network=client
uci set wireless.wan_radio0.mode=ap
uci set wireless.wan_radio0.ssid='$SSID'    # $SSID <- durch eueren WLAN-Namen ersetzen
uci set wireless.wan_radio0.disabled=0
uci set wireless.wan_radio0.ifname='EinNetterName'
uci delete wireless.wan_radio0.encryption
uci delete wireless.wan_radio0.key
uci commit
wifi

$SSID <- durch eueren WLAN-Namen ersetzen

Nach den Anpassungen solltet ihr mit reboot euren Router neu starten. Die Änderungen sollten jedoch so schon aktiv sein.

Anmerkung: Die Zeile uci set wireless.wan_radio0.ifname='EinNetterName'ist nicht wirklich erforderlich. Der Inferface-Name ist allerdings dann hilfreich, wenn man beispielsweise mit iw dev EinNetterName station dump Informationen über die angemeldeten Clients (z.B. die Mac-Adressen der dieser Clients) auslesen möchte.

Eingerichtetes privates WLAN ändern in unverschlüsseltes WLAN via Client-Netz (erst mit v2015.1)[Bearbeiten | Quelltext bearbeiten]

Mit der Konfiguration per Web-Oberfläche kann man nur ein zusätzliches privates (verschlüsseltes) WLAN einrichten, das direkt über den eigenen Internetanschluss läuft. Will man dieses WLAN so ändern, dass es (a) über Freifunk läuft und (b) unverschlüsselt ist, kann man folgende Änderungen vornehmen:

# damit die Daten, die über das private (offene) WLan auch über das FF-VPN geroutet werden
uci set wireless.wan_radio0.network='client'
# Wenn man dort anstatt 'client' das 'wan' lässt, dann ist der Zugriff auf das eigene Netz 

# bzw. den eigenen Internetanschluss gegeben.
# Deaktivierung der Verschlüsselung
uci delete wireless.wan_radio0.encryption

# Hier stand bislang psk2 als Verschlüsselungsalgorithmus.
# Löschen des unnötigen Keys (der als Schlüssel für die SSID an der graphischen Oberfläche 
# eingetippt worden war, damit man das Bildschirmformular verlassen konnte).
# Das ist letztendlich Kosmetik, da der Schlüssel nicht genutzt wird.
uci delete wireless.wan_radio0.key

uci commit
# damit werden die Daten auch in den Flash-Speicher geschrieben; bislang stehen sie nur im RAM 

wifi
# WLAN neu starten

Nach den Anpassungen solltet ihr mit reboot euren Router neu starten. Die Änderungen sollten jedoch so schon aktiv sein.

Zusätzliches WLAN wieder deaktivieren[Bearbeiten | Quelltext bearbeiten]

Ein eingerichtetes privates WLAN (egal ob offen oder verschlüsselt) wird wie folgt wieder komplett deaktiviert:

uci delete wireless.wan_radio0
uci commit wireless && wifi

Soll es nur temporär ausgeschaltet werden, dann sollte funktionieren (wurde vom Schreiber und vom Tippgeber aber nicht ausprobiert; wenn es jemand probiert, dann bitte die Wiki anpassen und diesen Hinweis löschen!):

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

Mache aus der 1 eine 0 um es wieder einzuschalten.

Client-Netz abschalten[Bearbeiten | Quelltext bearbeiten]

Vor allem auf Richtfunkstrecken macht es Sinn das Client-Netz abzuschalten, um die Richtfunkstrecke zu entlasten und damit die User auf normalen Client-Knoten zu schieben (841er etc.). Auch bei offloadern/mesh_vpn-Knoten macht es Sinn das Client-Netz abzuschalten, um die gesamte Performance für mesh_vpn zu haben.

uci set wireless.client_radio0.disabled=1 && uci commit wireless && wifi

Mesh-Netz an-/abschalten[Bearbeiten | Quelltext bearbeiten]

Sind die Knoten über Ethernet-Kabel verbunden, kann man das WLAN-Mesh-Netz ausschalten. Dadurch steht mehr Airtime für die Nettonutzung zur Verfügung. Vorsicht: Sollte das Gerät doch nicht am LAN hängen, kommt ihr per SSH nicht mehr auf den Knoten, nachdem ihr das Mesh-Netz abgeschaltet habt. Dann ist der Knoten nicht mehr verbunden.

uci set wireless.ibss_radio0.disabled=1 && uci commit wireless && wifi

Wieder einschalten mit:

uci set wireless.ibss_radio0.disabled=0 && uci commit wireless && wifi

Bei einer Fehlermeldung: Am 5.8.2016 gab es einen größeren Firmware-Update. Bei älteren Firmwware-Versionen führt die oben stehende Anweisung zu einer Fehlermeldung. Man muss dort anstatt ibss ein mesh schreiben.

Hinweis: Derzeit (Stand Juni 2016) machen insb. "kleine" Router (TP-Link WR841, wie auf den Treffen angeboten) Schwierigkeiten, wenn sie zu viele Mesh-WLAN-Verbindungen halten sollen. Sie starten u.U. mehrmals pro Stunde neu, sodass dies auch Nutzer durch kurzzeitige Ausfälle ihres Freifunk-WLANs bemerken. Sofern der Router seinen eigenen Internetanschluss hat und keinen Nachbarknoten per Mesh mit einer Internetverbindung mit versorgen muss, sollte ein Abschalten des WLAN-Meshes wie hier beschrieben für diesen Router Abhilfe leisten. Durch das Abschalten werden auch benachbarte Router entlastet, da die Anzahl der Mesh-Verbindungen per WLAN für die betroffenen Nachbarn verkleinert wird. Dort kann es daher von alleine zu Verbesserungen kommen. D.h., dass nicht unbedingt bei dem Knoten, der immer wieder abstürzt, das WLAN-Mesh ausgeschaltet werden muss, u.U. reicht es, wenn man dies bei einem der Nachbarknoten tut. Ein 841er verträgt i.d.R. zwei (evtl. auch drei) per WLAN vermeshte benachbarte Router. Bei mehr als vier sollte man von Problemen ausgehen. – Die gemachten Aussagen sind ohne Gewähr und lediglich ein Resultat von Versuch und Irrtum. Abhilfe wird erst mit verkleinerten Segmenten erwartet.

Kanaländerung[Bearbeiten | Quelltext bearbeiten]

Die Router mit der Firmware von Freifunk München senden immer auf Kanal 6. Will man den Kanal ändern, so kann man dies beispielhaft für Kanal 11 mit folgenden Kommandos tun:

uci set wireless.radio0.channel='11'
uci commit
wifi
reboot 

Wichtig:

  • In Deutschland zulässig sind nur die Kanäle 1 bis 13.
    • Überlappungsfrei sind nur die Kanäle 1, 6 und 11.
  • Diese Änderung gilt für das Gerät, nicht für ein einzelnes WLAN.
    • D.h., dass nach der Änderung alle WLAN-Netze (freifunk.muenchen.net, Mesh-Netz und eigenes privates Netz) über den neuen Kanal verteilt werden.
    • Die Folge einer Kanaländerung ist, dass das WLAN-Meshing mit benachbarten Routern, die weiter auf Kanal 6 senden, nicht mehr funktioniert. In der Konsequenz muss man alle WLAN-vermeshten Geräte in einer Gruppe umstellen. Dies kann beim Zusammenwachsen von zwei vermeshten Gruppen problematisch werden.
  • Man sollte einen guten Grund haben, um den Kanal zu ändern. Dies kann eine Überbelegung von Kanal 6 in Relation zu anderen Kanälen sein. Störungen auf Kanal 6 und Verbesserungen nach einem Kanalwechsel sollten nachgewiesen werden.
  • Zwei verschiedene Gruppen, die auf unterschiedlichen Kanälen senden, kann man nur per Kabel verbinden. Dazu werden zwei Geräte verkabelt, wobei das eine auf dem Kanal für der ersten Gruppe, das andere auf den Kanal der zweiten Gruppe sendet.

Hinweis (ab 2016.0)

Bisher wurde eine Kanaländerung bei einem Firmware Update standardmäßig überschrieben. Ab der FFMUC Firmware 2016.0 gibt es die Möglichkeit, den Kanal beizubehalten:

uci set gluon-core.@wireless[0].preserve_channels='1' && uci commit

Neustart in den Configmode[Bearbeiten | Quelltext bearbeiten]

Anstatt die Reset-Taste zu drücken, kann dieser Befehl verwendet werden, um den Router im Configmode neu zu starten.

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

Client Steuerung[Bearbeiten | Quelltext bearbeiten]

Informationen über eingebuchte Clients[Bearbeiten | Quelltext bearbeiten]

Um Informationen zu Clients zu erhalten (z.B. zur Signalstärke oder Datenvolumina) kann man folgenden Befehl ausführen:

iw dev client0 station dump

Die MAC-Adresse wird mit angezeigt und dient der Identifikation des Clients.

MAC Filter[Bearbeiten | Quelltext bearbeiten]

Um Clients den Zugang auf einen über die Freifunk-Firmware betriebenen Access Point ("AP") zu verwehren (z.B., um eigene Clients in das gesicherte Heimnetz zu leiten), kann man die MAC-Adressen wie folgt hinterlegen:

Angenommen wir wollen die Clients mit der MAC-Adresse 00:00:00:00 und 11:11:11:11 aussperren, müssen wir folgende Befehle ausführen:

uci set wireless.client_radio0.macfilter=deny
uci set wireless.client_radio0.maclist='00:00:00:00 11:11:11:11'
uci commit
/etc/init.d/network restart

Anmerkung: der Befehl wifi reicht nicht aus, man muss wirklich das komplette network neu starten

Weitere MAC-Adressen können durch ein Leerzeichen getrennt hinterlegt werden, nur eine einzelne Adresse einzugeben geht natürlich auch. Die Angabe einer leeren Liste setzt den Filter zurück.

Danke an markusl für den Tipp: https://forum.freifunk.net/t/poweruser-clients-aussperren-61gb-in-vier-tagen/101/2

Mit den nachfolgenden Zeilen kann man implizit sämtliche Clients von der WLAN-Nutzung ausschließen und nur die aufgeführten Clients explizit zulassen. Die Zulassung erfolgt analog zur expliziten Sperrung:

uci set wireless.client_radio0.macfilter=allow
uci set wireless.client_radio0.maclist='00:00:00:00 11:11:11:11'
uci commit
/etc/init.d/network restart

Im obigen Beispiel wird client_radio0 für die beiden Clients mit den Mac-Adressen 00:00:00:00 sowie 11:11:11:11 freigegeben. Alle anderen Clients müssen draußen bleiben. Das funktioniert beispielsweise auch mit wan_radio0 (=privates WLAN) etc.

Entfernen kann man diesen Mac-Filter wieder mit den folgenden Zeilen (in diesem Beispiel erneut für client_radio0):

uci delete wireless.client_radio0.macfilter
uci delete wireless.client_radio0.maclist
uci commit
/etc/init.d/network restart

Dieser Tipp stammt von Pancho.

Aus Sicht der Freifunk-Nutzungsbedingungen ist dies ein Eingriff in den freien Transit und ein Verstoß gegen Punkt 1 der Nutzungsbedingungen.

Knoten mit USB-LTE-Uplink betreiben[Bearbeiten | Quelltext bearbeiten]

Eine Anleitung zum Betrieb eines LTE/UMTS-USB-Dongles gibt's hier: Freifunk_mit_USB-Tethering_(LTE-Router)

Andere nützliche einfache Kommandos[Bearbeiten | Quelltext bearbeiten]

uptime: Zeigt an, wie viel Zeit seit dem letzten Neustart des Routers vergangen ist.

reboot: Startet den Router neu.

iw dev client0 scan: Gibt Informationen über WLANs aus, die der Router sieht bzw. in der jüngeren Vergangenheit gesehen hat. Die u.U. relativ große Ausgabe (beim Ausprobieren ca. 75 kB) sollte ggf. in eine Datei umgeleitet werden, die z.B. mit WinSCP vom Router abgeholt werden kann.

batctl gwl: Zeigt die verfügbaren und das ausgewählte Gateway und auch, über welches Interface die Verbindung läuft.

Siehe auch bei #Weblinks auf dieser Seite.

Komplexere Erweiterungen der Konfiguration[Bearbeiten | Quelltext bearbeiten]

Zeitgesteuerter reboot des Routers[Bearbeiten | Quelltext bearbeiten]

Ein regelmäßiger Neustart des Routers kann (wie jede andere regelmäßige Aktion) über einen Cronjob angelegt werden.

Diese Datei anlegen, sofern man es nicht direkt über das Kommando crontab tun will:

/etc/crontabs/root

mit folgendem Inhalt (Neustart um 4 Uhr in der Nacht).

0 4 * * * reboot

Zeitgesteuerte Bandbreitenlimitierung[Bearbeiten | Quelltext bearbeiten]

Die etwas aufwändigen Arbeiten sind im Artikel Zeitgesteuerte Bandbreitenlimitierung beschrieben.

Client-Netz zeitgesteuert an-/abschalten[Bearbeiten | Quelltext bearbeiten]

Mit einem Cronjob kann das Client-Netz an- und abgeschaltet werden. Das folgende Beispiel schaltet das Client-Netz um 21 Uhr aus und um 7 Uhr wieder ein. Das Mesh-Netz bleibt dabei aktiv.

crontab -e

i (um den Schreibmodus im verwendeten Editor Wikipedia:de:Vi zu aktivieren)

0 21 * * *  uci set wireless.client_radio0.disabled=1;uci set wireless.client_radio1.disabled=1;wifi
0  7 * * *   uci set wireless.client_radio0.disabled=0;uci set wireless.client_radio1.disabled=0;wifi

ESC drücken
:wq eintippen

Der Editor Vi wird mit :wq verlassen (mit speichern) und man ist wieder in der Kommandozeile. Mit crontab -l kann man die Einträge in der Crontab anschauen und prüfen, ob die Eingaben auch richtig sind.

Hinweis: Soll der ganze Router zeitweise ausgeschaltet werden (d.h., man benötigt den Router nicht für das Meshing), dann ist die mechanische Alternative eine Zeitschaltuhr.

Dieser Abschnitt wurde abgeschrieben, er kursiert in fast wortgleichen Formen an verschiedenen Stellen, so dass keine genaue Quelle benannt werden kann.

Eigenes Script zum An- und Abschalten

Es ist ebenfalls mögliche eine wificlienton.sh und eine wificlientoff.sh mit den Inhalten uci set wireless.client_radio.disabled=0; ... zu speichern und diese dann über das Cronjob anzusprechen. so kann man eine zusammenstellug von Befehlen mit nur einem Aufruf auf der Comandozeile ausführen. Das ist besonders dann Handy, wenn man viel manuell ein und ausschalten muss, weil zum Beispiel ein Geschäft von einer großen Zahl geflüchteten wegen des Freien WLANs "belagert" wird, man aber wegen Mesh etc. den Besitzer darum bittet, das Gerät nicht abzuschalten.

Außerdem kann man in einem solchen Script das Wifi auf Grundlage von Konnektivität zu Gateway etc an und ausschalten oder weitere Bedingungen einführen.

Die Dateien mit den Scripten müssten dann natürlich gegen Updates gesichert werden, in dem man deren Namen in eine Datei einfügt, so dass sie auch nach einem Update erhalten bleiben.

Weblinks[Bearbeiten | Quelltext bearbeiten]

https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration

Danke nach Mönchengladbach - http://freifunk-moenchengladbach.de/router-ueber-ssh-parametrieren/ dort abgelegt mit ’ - bei mir hat nur ' funktioniert