Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
freifunk:ssh [03.06.2019 17:05. ] – [Administration eines Freifunk-Knotens via SSH] django | freifunk:ssh [05.06.2020 12:56. ] (aktuell) – Seite gelöscht, da nunmehr im ffmuc-WIKI gepflegt! django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Administration eines Freifunk-Knotens via SSH ====== | ||
- | Zur Administration unseres bzw. unserer Freifunk-Knoten verwenden wir die **SSH**(([[https:// | ||
- | |||
- | <WRAP center round tip 50%> \\ | ||
- | Da aktuell das WIKI bei ffmuc.net nicht zur Verfügung steht, findet sich hier eine Ansammlung gängiger Abfragen bzw. Konfigurationsschritte. </ | ||
- | |||
- | ===== Vorbereitungen ===== | ||
- | ==== SSH-Key ==== | ||
- | Für den Zugriff benötigen wir natürlich ein entsprechendes SSH-Schlüsselpaar, | ||
- | $ ssh-keygen -b 4096 -t rsa -C django@nausch.org -f ~/ | ||
- | |||
- | < | ||
- | Enter passphrase (empty for no passphrase): | ||
- | Enter same passphrase again: | ||
- | Your identification has been saved in / | ||
- | Your public key has been saved in / | ||
- | The key fingerprint is: | ||
- | 44: | ||
- | The key's randomart image is: | ||
- | +--[ RSA 4096]----+ | ||
- | | ... | | ||
- | | o.o . | | ||
- | | +.o o | | ||
- | | ..+= . | | ||
- | | | ||
- | | + .+oF | | ||
- | | +.. . | | ||
- | | . *E | | ||
- | | ++=o | | ||
- | +-----------------+</ | ||
- | |||
- | ==== SSH-Clientconfig ==== | ||
- | Um nun nicht jedes mal beim Aufruf einer SSH-Verbindung zu einem unserer Knoten, Parameter wie **user** und die doch sehr langen **IPv6**-Adressen angeben zu müssen, hinterlegen dwir die entsprechenden Daten in der Konfigurationsdatei unseres lokalen SSH-Clients auf unserem Admin-Rechners. Dies hat darüber hinaus auch noch zusätzlich den Vorteil, dass z.B. von einem Netz aus, bei dem es " | ||
- | |||
- | So ist z.B. in nachfolgendem Konfigurationsbeispiel der Router **ff_pliening_gbw_od** direkt erreichbar und der Router **ff_pliening_gbw_od-e** nur über den Sprunghost mit Namen **jumphost**, | ||
- | |||
- | <file bash ~/ | ||
- | | ||
- | Port 22 | ||
- | User adminuser | ||
- | | ||
- | | ||
- | | ||
- | |||
- | Host ff_pliening_gbw_od | ||
- | | ||
- | Port 22 | ||
- | User root | ||
- | | ||
- | | ||
- | |||
- | Host ff_pliening_gbw_od-e | ||
- | | ||
- | Port 22 | ||
- | User root | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | Wir können somit, wenn wir uns z.B. in einem IPv4-only Netzwerk aufhalten, ganz einfach durch den nachfolgenden Aufruf den Knoten **ff_pliening_gbw_od** erreichen. | ||
- | $ ssh ff_pliening_gbw_od-e | ||
- | |||
- | Ebenso können wir so direkt Dateien auf den Knoten in das // | ||
- | $ scp firmware ff_pliening_gbw_od-e:/ | ||
- | |||
- | Hier wird nun ohne manuelle Umwege Datei **firmware** in das // | ||
- | |||
- | |||
- | |||
- | ===== Abfrage von Konfigurationsdaten ===== | ||
- | Zur Abfrage von Konfigurationsparametern bemühen wir den Befehl '' | ||
- | # uci | ||
- | < | ||
- | |||
- | Commands: | ||
- | batch | ||
- | export | ||
- | import | ||
- | changes | ||
- | commit | ||
- | add < | ||
- | add_list | ||
- | del_list | ||
- | show | ||
- | get < | ||
- | set < | ||
- | delete | ||
- | rename | ||
- | revert | ||
- | reorder | ||
- | |||
- | Options: | ||
- | -c < | ||
- | -d < | ||
- | -f < | ||
- | -m when importing, merge data into an existing package | ||
- | -n name unnamed sections on export (default) | ||
- | -N | ||
- | -p < | ||
- | -P < | ||
- | -q quiet mode (don't print error messages) | ||
- | -s force strict mode (stop on parser errors, default) | ||
- | -S | ||
- | -X do not use extended syntax on ' | ||
- | </ | ||
- | |||
- | Die Ausgabe aller Konfigurationsparameter kann mitunter doch sehr umfänglich werden. Bsp.: | ||
- | # uci show |wc -l | ||
- | |||
- | 674 | ||
- | |||
- | In aller Regel wird man geziehlt nach einzelnen Parametern suchen, wie z.B. hier nach den hinterlegten Kontaktdaten. | ||
- | # uci show | grep contact | ||
- | |||
- | gluon-node-info.@owner[0].contact=' | ||
- | |||
- | Alle Parameter einer Section kann man durch Angabe der '' | ||
- | # uci show gluon-node-info | ||
- | < | ||
- | gluon-node-info.@location[0].share_location=' | ||
- | gluon-node-info.@location[0].altitude=' | ||
- | gluon-node-info.@location[0].latitude=' | ||
- | gluon-node-info.@location[0].longitude=' | ||
- | gluon-node-info.@owner[0]=owner | ||
- | gluon-node-info.@owner[0].contact=' | ||
- | gluon-node-info.@system[0]=system</ | ||
- | |||
- | Alle Werte sind hierbei im Verzeichnis ''/ | ||
- | # less / | ||
- | < | ||
- | config location | ||
- | option share_location ' | ||
- | option altitude ' | ||
- | option latitude ' | ||
- | option longitude ' | ||
- | |||
- | config owner | ||
- | option contact ' | ||
- | |||
- | config system | ||
- | |||
- | |||
- | </ | ||
- | |||
- | |||
- | |||
- | ==== Gluon Release ==== | ||
- | # cat / | ||
- | |||
- | v2019.0.3 | ||
- | |||
- | ==== Gluon Version ==== | ||
- | # cat / | ||
- | |||
- | v2018.2.1+ | ||
- | |||
- | ==== SSID ==== | ||
- | Wollen wir wissen welche SSID(([[https:// | ||
- | # uci show | grep -i mesh_id | ||
- | |||
- | | ||
- | |||
- | Da es sich hier um einen Router der nur ein **2,4 GHz** WLAN ausstrahlt, wird auch nur eine Zeile ausgegeben. Im nachfolgenden Beispiel handelt es sich um ein Routermodell der sowohl ein **2,4 GHz** wie auch ein **5 GHz** WLAN verwendet - wir sehen dies an der Ausgabe von zwei Konfigurationswerten. | ||
- | # uci show | grep -i mesh_id | ||
- | |||
- | wireless.mesh_radio0.mesh_id=' | ||
- | wireless.mesh_radio1.mesh_id=' | ||
- | |||
- | |||
- | ===== Netzwerks- und Zustandsabfragen mit batctl ===== | ||
- | |||
- | '' | ||
- | |||
- | ===== Ändern von Konfigurationsdaten ===== | ||
- | Möchte man einzelne Konfigurationsparameter ändern, verwenden wir wiederum den Befehl '' | ||
- | Mit unter hat es sich als zweckmäßig erwiesen vor umfangreichen Änderung eine Sicherheitskopie der bestehenden Konfiguration anzufertigen. Um dieses z.B. auf einer lokalen Admin-Workstation oder in einen passenden sicheren Cloudspeicher zu kopieren oder um es bei temporären Änderung anschließend wieder einfach wiederherstellen zu wollen. | ||
- | # uci export network > / | ||
- | |||
- | Zum Wiederherstellen (restore) geht man dann wie folgt vor. | ||
- | # cat / | ||
- | |||
- | Will man die gesicherte Konfiguration lokal speichern, kopiert man die zuvor erstellte Sicherungskopie einfach auf den lokalen Rechner. Da wir über die lokale Konfigurationsdatei unsere Freifunkknoten definiert haben, können wir einfach den Host über den definierten Namen ansprechen, in diesem Konfigurationsbeispiel kopieren wir die Sicherungskopie vom Knoten '' | ||
- | $ scp ff_pliening_gbw_od:/ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ==== Kontaktdaten ==== | ||
- | Im folgenden Beispiel wollen die die hinterlegten Kontaktinformationen abändern. Zunächst fragen wir ab, welche Informationen hier in diesem Konfigurationsbeispiel hinterlegt ist. | ||
- | # uci show gluon-node-info.@owner[0].contact | ||
- | |||
- | gluon-node-info.cfg02c290.contact=' | ||
- | |||
- | Hier ändern wir nun die eMail-Adresse unseren Wünschen entsprechend ab. | ||
- | # uci set gluon-node-info.@owner[0].contact=' | ||
- | # uci commit | ||
- | |||
- | Fragen wir nun erneut den geänderten Parameter ab, werden uns die aktualisierten Daten ausgegeben. | ||
- | # uci show gluon-node-info.@owner[0].contact | ||
- | |||
- | gluon-node-info.cfg02c290.contact=' | ||
- | |||
- | Auf der [[https:// | ||
- | {{ : | ||
- | |||
- | ==== Knoten-/ | ||
- | In folgendem Konfigurationsbeispiel wollen wir den Knotennamen oder auch Hostname genannt, abändern. Auch hier fragen wir zunächst ab, welcher Wert gesetzt ist. | ||
- | # uci show | grep hostname | ||
- | |||
- | system.@system[0].hostname=' | ||
- | |||
- | Diesen Wert ändern wir nun in einen etwas sprechenderen Namen ab. | ||
- | # uci set system.@system[0].hostname=' | ||
- | # uci commit | ||
- | |||
- | Fragen wir nun erneut den geänderten Parameter ab, werden uns die aktualisierten Daten ausgegeben. | ||
- | # uci show | grep hostname | ||
- | |||
- | system.@system[0].hostname=' | ||
- | |||
- | Auf der [[https:// | ||
- | {{ : | ||
- | |||
- | ==== Geodaten für die Kartenanzeige ==== | ||
- | Möchte man die im Router hinterlegten Geodaten abändern, da z.B. ein vorhandener Router seinen Aufstellungsort geändert hat, oder weil man zu besseren Darstellung auf der **[[https:// | ||
- | |||
- | Auf der Karte sucht man den gewünschten Kartenausschnitt und wählt das PIN-Icon rechts oben am Bildschirm an. {{: | ||
- | {{ : | ||
- | Die Befehle aus dem Rahmen **Uci** kopieren wir dann einfach und fügen diese in unserem Shell-Fenster ein, mit dem wir die SSH-Verbindung mit unserem Freifunk-Knoten halten. Bsp.: | ||
- | < | ||
- | Nach kurzer Zeit wird dann der Router auf der Karte an der neuen gewünschten Stelle angezeigt. | ||
- | {{ : | ||
- | |||
- | |||
- | ==== (zusätzlichen) SSH-Key hinterlegen ==== | ||
- | Möchte man auf einem Router einen zweiten Admin für den Backupfall einen Zugriff gewähren, ist es notwendig dessen SSH-Publickey auf dem Knoten zu hinterlegen. Da wir unseren Knoten, auf denen wir mittels SSH zugreifen ausreichend in unserer lokalen SSH-Clientkonfigurationsdatei //** ~/ | ||
- | |||
- | Wir kopieren nun den Publickey des zweiten Admins in die Datei // | ||
- | $ cat ~/ | ||
- | |||
- | |||
- | |||
- | ==== Reboot des Knoten in den Konfigurationsmodus ==== | ||
- | Möchte man seinen WLAN-Router erneut in den Konfigurationsmodus versetzen, um dann mit dem Browser seiner Wahl auf die GUI via http:// | ||
- | # uci set " | ||
- | # uci commit | ||
- | # reboot | ||
- | |||
- | ==== Kanal ==== | ||
- | Normalerweise funkt unser Freifunk-WLAN-Router auf Kanal **6**. Ist dieser Kanal schon durch andere WLAN // | ||
- | |||
- | Im folgenden Konfigurationsbeispiel wechseln wir zum Kanal **1**. | ||
- | # uci set wireless.radio0.channel=1 | ||
- | |||
- | Dieser Befehl ändern " | ||
- | # uci set gluon-core.@wireless[0].preserve_channels=1 | ||
- | # uci commit | ||
- | # wifi | ||
- | |||
- | ==== Bandbreitenbegrenzung ==== | ||
- | Möchte man nicht seinen kompletten Internetanschluss zur Anbindung des Freifunk-Knotens vor Ort zur Verfügung stellen kann es neben einer zeitlichen Begrenzung auch eine Traffic-/ | ||
- | In Nachfolgendem Beispiel beschreiben die Parameter '' | ||
- | # uci set simple-tc.mesh_vpn=' | ||
- | # uci set simple-tc.mesh_vpn.ifname=' | ||
- | # uci set simple-tc.mesh_vpn.enabled=' | ||
- | # uci set simple-tc.mesh_vpn.limit_ingress=' | ||
- | # uci set simple-tc.mesh_vpn.limit_egress=' | ||
- | # uci commit | ||