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:35. ] – [Kanal] 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 **[[# | ||
- | $ 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-Belegung ==== | ||
- | 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 | ||