Konsole
Inhaltsverzeichnis
- 1 Arbeiten auf der Kommandozeile von Routern
- 2 Zugriff auf die Kommandozeile des Routers mit SSH
- 3 Auf der Kommandozeile
- 3.1 Grundlegende Befehle
- 3.2 Anpassen der Einstellungen in OpenWrt
- 3.3 Einstellungen von Gluon ändern
- 3.3.1 Autoupdater Branch festlegen
- 3.3.2 Neustart im Configmode
- 3.3.3 Routernamen ändern
- 3.3.4 Kontaktdaten ändern
- 3.3.5 Geodaten ändern
- 3.3.6 Bandbreitenbegrenzung ändern
- 3.3.7 Bandbreitenbegrenzung zeitgesteuert ändern
- 3.3.8 Mesh VPN aktivieren
- 3.3.9 Meshing über WAN-Schnittstelle (Mesh on wan) aktivieren
- 3.3.10 Meshing über WAN-Schnittstelle deaktivieren
- 3.3.11 Private WLAN
- 3.3.12 Meshing on LAN
- 3.3.13 Abrufen an welchen Ports Kabel eingesteckt sind
- 3.3.14 Gateways im Router an-/abschalten
- 3.3.15 Clientnetz zeitgesteuert an-/abschalten
- 3.3.16 Statusseite partiell ausblenden - Privacy (2016.1.x)
- 3.3.17 WAN auf allen Netzwerkports
- 3.3.18 ReBroadcast Mesh-on-WAN/LAN abschalten (Default on 2016.2.x)
- 3.3.19 Weiterleitungs-Kosten des Mesh-Hop (Knoten) festlegen (2011.0.0 <= batman-adv < 2014.1.0)
- 3.3.20 POE Passthrough auf TP-Link CPE
- 3.3.21 Kanalkonfiguration updatefest speichern
Arbeiten auf der Kommandozeile von Routern
Die Kommandozeile ist ein Eingabebereich für die Steuerung des Routers das im Textmodus abläuft. Damit eröffnen sich für den Benutzer Möglichkeiten jenseits der Grenzen der Weboberfläche. Voraussetzung für das Arbeiten mit der Kommandozeile ist, dass bei der Erstkonfiguration bereits ein Passwort gesetzt, oder -besser- ein SSH-Schlüssel hinterlegt wurde.
Zugriff auf die Kommandozeile des Routers mit SSH
Wie man eine SSH-Verbindung zu einem Router aufbaut, ist im Detail auf der Seite [SSH | SSH] beschrienen. Mit den im Folgenden erklärten Befehlen, kann man bei bestehender SSH-Verbindung zum Router die Konfiguration nach Bedarf anpassen, ohne den Router in den Konfigurations-Modus versetzen zu müssen.
Nachträgliches Hinterlegen eines SSH–Schlüssels (MacOS und Linux)
Wenn man bei der Einrichtung des Routers einen SSH–Schlüssel hinterlegt hat, kann man sich damit einloggen, ohne jedes Mal das Passwort eingeben zu müssen. Der Schlüssel kann man aber auch nachträglich auf dem Router speichern (Die Beispiel IP–Adresse muss selbstverständlich angepasst werden):
cat ~/.ssh/id_rsa.pub | ssh root@fe80::6a72:51ff:fe04:f52e%en1 'cat >> /etc/dropbear/authorized_keys'
Damit der Befehl auch tatsächlich auf dem Router ausgeführt wird, muss noch ein Mal das Passwort eingegeben werden, aber anschließend nutzen alle Logins den Schlüssel.
Auf der Kommandozeile
Hat man sich schließlich per SSH eingeloggt, lassen sich zahlreiche Befehle nutzen.
Grundlegende Befehle
ls
ist ein Befehl, mit dem ihr eine Liste aller Dateien in einem Verzeichnis anzeigen lassen könnt (ähnlich `dir` unter MSDOS)
ls -l
Zeigt eine Liste mit den kompletten Informationen der Dateien an
cd
heißt soviel wie "change directory" oder auch "wechsle das Verzeichnis". Damit könnt ihr in einen Ordner eurer Wahl springen.
cd ..
Damit kommt ihr in den übergeordneten Ordner
cd /
in das Hauptverzeichnis
cat
gibt den Inhalt einer Datei in der Kommandozeile aus. Der Vorteil ist das man nicht extra einen Editor 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 erwähnt: ihr kommt mit `:q!` oder `<esc> :q!` immer aus diesen Programm wieder raus, weitere Infos entnehmt ihr bitte einer Anleitung des `vi`. Ein guter Einstieg ist der Wikipedia Artikel dazu
top
ein Tool, mit dem ihr euch die Aktuelle Auslastung eures Systems anzeigen lassen könnt
date
verändert die Systemzeit
rm
löscht eine Datei
rm -d
löscht ein Verzeichnis inklusive Inhalt
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.
Einstellungen anzeigen
Alle gesetzten Einstellungen auflisten:
uci show
Eine bestimmte Einstellung suchen:
uci show|grep Suchwort
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!
Einstellungen sichern
Bevor man an Einstellungen herum fummelt kann es sinnvoll sein, diese zunächst zu sichern um sie problemlos wieder herzustellen. Dies lässt sich für alle Einstellungen via uci export oder auch nur für einen Abschnitt machen, wie im folgenden Beispiel:
uci export network > network.uci
Und der Import geht dann so:
cat network.uci | uci import
Einstellungen von Gluon ändern
Gluon ist eine OpenWrt-basierte Freifunk-Firmware, die recht häufig (aber nicht von allen Communities) im Freifunk-Umfeld benutzt wird.
Ein englisches Wiki mit weiteren Befehlen ist im offiziellen GitHub-Repository zu finden.
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 autoupdater
Das Update kann man dann manuell anstoßen.
autoupdater -f
Das stable Release ist immer die jüngste stabile Version der Firmware für Produktivsysteme. Seit der Version 0.5 ist der Autoupdater 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 im 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 gluon-setup-mode reboot
Routernamen ändern
Wenn ihr bspw. den *Namen* des Router ändern möchtet geht dies wie folgt in der SSH Shell:
uci set system.@system[0].hostname='FF-OB-SAMPLE-01' << Name anpassen uci commit system
Danach ist ein Reboot erforderlich.
Kontaktdaten ändern
uci set gluon-node-info.@owner[0]='owner' uci set gluon-node-info.@owner[0].contact='Mustermann muster@freifunk-ruhrgebiet.de 02453434434' << Daten anpassen uci commit gluon-node-info
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.484943' << anpassen uci set gluon-node-info.@location[0].longitude='6.880250' << anpassen uci commit gluon-node-info
Bandbreitenbegrenzung ändern
Alt:
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='50000' << download anpassen uci set gluon-simple-tc.mesh_vpn.limit_egress='10000' << upload anpassen uci commit gluon-simple-tc
Neu:
uci set simple-tc.mesh_vpn=interface uci set simple-tc.mesh_vpn.ifname='mesh-vpn' uci set simple-tc.mesh_vpn.enabled='1' uci set simple-tc.mesh_vpn.limit_ingress='16000' << download anpassen uci set simple-tc.mesh_vpn.limit_egress='1000' << upload anpassen uci commit simple-tc
Bandbreitenbegrenzung zeitgesteuert ändern
Folgende Cronjobs anlegen:
vi /usr/lib/micron.d/speedlimit
Für tägliche Limits von 07 bis 1700 Uhr:
0 7 * * * uci set gluon-simple-tc.mesh_vpn.enabled='1' && uci set gluon-simple-tc.mesh_vpn.limit_ingress='2000' && uci set gluon-simple-tc.mesh_vpn.limit_egress='500' && uci commit gluon-simple-tc && reboot
0 17 * * * uci set gluon-simple-tc.mesh_vpn.enabled='0' && uci commit gluon-simple-tc && reboot
Für werktägliche Limits von 07 bis 1700 Uhr (ungetestet):
0 7 * * 1-5 uci set gluon-simple-tc.mesh_vpn.enabled='1' && uci set gluon-simple-tc.mesh_vpn.limit_ingress='2000' && uci set gluon-simple-tc.mesh_vpn.limit_egress='500' && uci commit gluon-simple-tc && reboot
0 17 * * 1-5 uci set gluon-simple-tc.mesh_vpn.enabled='0' && uci commit gluon-simple-tc && reboot
Hier wird jeweils ein Limit von 2Mbits down und 0.5 MBits up gesetzt.
Achtung! Jeder Scriptaufruf führt ein commit und damit einen Schreibvorgang auf dem Rom aus. Dies kann sich negativ auf die Lebensdauer des Gerätes auswirken. Ein Reboot ist nötig, damit die Beschränkung aktiv oder inaktiv wird.
Mesh VPN aktivieren
Mesh VPN bezieht sich auf das Meshen mit anderen Routern über das Internet. Es ist auch Voraussetzung für die Internetfreigabe der Clients am eigenen Knoten.
uci set fastd.mesh_vpn.enabled=1 uci commit fastd /etc/init.d/fastd start
Sofern noch kein Schlüssel generiert wurde, muss das ebenfalls geschehen:
/etc/init.d/fastd generate_key mesh_vpn 18fa75d1808692f04770bedf30c42dac24585d331560c545d70dd27f22a05648
Dieser Schlüssel muss dann in der jeweiligen Domäne angemeldet werden.
Meshing über WAN-Schnittstelle (Mesh on wan) aktivieren
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:
uci set network.mesh_wan.auto=1 uci commit network /etc/init.d/network restart
Meshing über WAN-Schnittstelle deaktivieren
uci set network.mesh_wan.auto=0 uci commit network /etc/init.d/network restart
Private WLAN
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 wireless 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 wireless wifi
Meshing 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":
uci set network.client.ifname='bat0' uci set network.mesh_lan=interface uci set network.mesh_lan.ifname="$(cat /lib/gluon/core/sysconfig/lan_ifname)" uci set network.mesh_lan.mesh=bat0 uci set network.mesh_lan.proto=batadv uci set network.mesh_lan.auto=1 uci commit network reboot
Nur 2015.1.x:
# activate uci set network.client.ifname="bat0" uci set network.mesh_lan.auto=1 uci commit network /etc/init.d/network restart
# deactivate uci set network.client.ifname="bat0 $(cat /lib/gluon/core/sysconfig/lan_ifname)" uci set network.mesh_lan.auto=0 uci commit network /etc/init.d/network restart
Testen (funktioniert nur, wenn auch ein Kabel eingesteckt ist):
batctl if
sollte nun u.A. eth1: active anzeigen
ubus call network.interface.mesh_lan status
Sollte "up": true anzeigen
Abrufen an welchen Ports Kabel eingesteckt sind
swconfig dev switch0 show | grep 'link:'
Gateways im Router an-/abschalten
uci set fastd.mesh_vpn_backbone_peer_<<COMMUNITY-NAME>>_vpn<<NR-DES-GATEWAYS>>.enabled=0/1 uci commit /etc/init.d/fastd restart
<<COMMUNITY-NAME>> muss durch das Kürzel eurer Community ersetzt werden, z.B. ffnord
<<NR-DES-GATEWAYS>> wird durch die Zahl des Gateways ersetzt (i.d.R. 0-3)
Clientnetz zeitgesteuert an-/abschalten
Dieser Crontab schaltet das Clientnetz um 21 Uhr aus und um 7 Uhr wieder ein. Das MESH Netz bleibt dabei aktiv.
crontab -e
i (um den Schreibmodus 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 dann :wq
Statusseite partiell ausblenden - Privacy (2016.1.x)
Nachbarknoten (alles)
chmod -x /lib/gluon/status-page/www/cgi-bin/interfaces
Nachbarknoten (dBm)
chmod -x /lib/gluon/status-page/www/cgi-bin/dyn/stations
Statistik (alles)
chmod -x /lib/gluon/status-page/www/cgi-bin/dyn/statistics
WAN auf allen Netzwerkports
uci set network.client.ifname=bat0 uci set network.wan.ifname='eth0 eth1' uci commit network
ReBroadcast Mesh-on-WAN/LAN abschalten (Default on 2016.2.x)
With this option set incoming multicast payload frames on <iface> are not being rebroadcasted on <iface> again.
This option should be set on links which are known to be transitive and symmetric only, for instance point-to-point wifi longshots or wired links.
-- Linus Lüssing
uci set network.mesh_wan.mesh_no_rebroadcast='1' uci set network.mesh_lan.mesh_no_rebroadcast='1' uci commit network reboot && exit
Weiterleitungs-Kosten des Mesh-Hop (Knoten) festlegen (2011.0.0 <= batman-adv < 2014.1.0)
A higher hop penalty will make it more unlikely that other nodes will choose this node as intermediate hop towards any given destination.
EX: Mobile nodes could choose a value of 255 (maximum value) to avoid being chosen as a router by other nodes.
1. Anzeigen (Default: 15)
cat /sys/class/net/bat0/mesh/hop_penalty
2. Temporär ändern, z.B. 100
echo 100 > /sys/class/net/bat0/mesh/hop_penalty
3. Persistent abspeichern, z.B. 100
uci set batman-adv.bat0.hop_penalty='100' uci commit batman-adv
POE Passthrough auf TP-Link CPE
Ab Gluon 2016.2:
uci set system.gpio_switch_poe_passthrough=gpio_switch uci set system.gpio_switch_poe_passthrough.name='PoE Passthrough' uci set system.gpio_switch_poe_passthrough.gpio_pin='20' uci set system.gpio_switch_poe_passthrough.value='1' uci commit system
Kanalkonfiguration updatefest speichern
Diese Konfigurationsbefehle sind nur in speziellen Umgebungen geeignet, in denen mehrere Router Client-Netz anbieten und Mesh-Verbindungen z.B. über Mesh-on-LAN erfolgen. Wird in einer reinen Funk-Mesh-Umgebung der Kanal geändert ohne dass Nachbar-Knoten auf den selben Kanal wechseln, können die Knoten untereinander keine Mesh-Verbindung über Funk aufbauen! Die entsprechenden Befehle lauten:
uci set wireless.radio0.channel='1' uci set gluon-core.@wireless[0]=wireless uci set gluon-core.@wireless[0].preserve_channels="1" uci commit