knb:ssh

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
knb:ssh [2020/11/20 12:23] – [Administration eines Freifunk-Knotens via SSH] Bitte keinen deppenaposztroph ;) Djangoknb:ssh [2024/02/26 10:21] (aktuell) grische
Zeile 10: Zeile 10:
 ==== SSH-Key ==== ==== SSH-Key ====
 Zur Authentifikations als berechtigter User gegenüber dem SSH-Diensst benötigt man ein SSH-Schlüsselpaar, welches wir entweder schon besitzen (im ~/.ssh-Verzeichnis unseres Linuxsystems oder unter Windows mit PuTTYgen erstellt haben) oder uns für den Zugriff auf unseren Freifunkrouter hier erstellen wollen. Zur Authentifikations als berechtigter User gegenüber dem SSH-Diensst benötigt man ein SSH-Schlüsselpaar, welches wir entweder schon besitzen (im ~/.ssh-Verzeichnis unseres Linuxsystems oder unter Windows mit PuTTYgen erstellt haben) oder uns für den Zugriff auf unseren Freifunkrouter hier erstellen wollen.
-Aktuell ((Stand. 2020)) werden leider noch keine [[https://de.wikipedia.org/wiki/Curve25519|Ed25519]]Schlüssel, einem //Elliptic Curve Signature Schema//, welches beste Sicherheit bei vertretbarem rechnerischem Aufwand verspricht, als ECDSA, DSA oder RSA dies der Fall ist, unterstützt. Somit werden wir uns einen RSA-Schlüssel mit ausreichend großer Schlüssellänge erstellen.+Aktuell ((Stand. 2024)) empfehlen wir [[https://de.wikipedia.org/wiki/Curve25519|Ed25519]]-Schlüssel, einem //Elliptic Curve Signature Schema//, welches beste Sicherheit bei vertretbarem rechnerischem Aufwand verspricht. Somit werden wir uns einen ED25519-Schlüssel mit ausreichend großer Schlüssellänge erstellen
 + 
 +Dies funktioniert jedoch nur mit Firmware neuer als v2023.x, nicht mit der Firmware für nicht mehr unterstützte Geräte v2022.x. Diese benötigen RSA und zudem spezielle Konfiguration auf dem Endgerät, die nicht mehr als sicher gilt, um darauf noch zugreifen zu können
    
 ==== Mit ssh-keygen ==== ==== Mit ssh-keygen ====
-<code> $ ssh-keygen -b 4096 -t rsa -C [email protected] -f ~/.ssh/id_rsa4096_ff</code>+<code> $ ssh-keygen -t ed25519 -C [email protected] -f ~/.ssh/id_ed25519_ff</code>
  
 <code>Generating public/private rsa key pair. <code>Generating public/private rsa key pair.
 Enter passphrase (empty for no passphrase):  Enter passphrase (empty for no passphrase): 
 Enter same passphrase again:  Enter same passphrase again: 
-Your identification has been saved in /home/django/.ssh/id_rsa4096_ff+Your identification has been saved in /home/django/.ssh/id_ed25519_ff
-Your public key has been saved in /home/django/.ssh/id_rsa4096_ff.pub.+Your public key has been saved in /home/django/.ssh/id_ed25519_ff.pub.
 The key fingerprint is: The key fingerprint is:
 44:8b:1a:de:ad:be:ef:23:af:65:b7:e6:1a:bf:98:3d [email protected] 44:8b:1a:de:ad:be:ef:23:af:65:b7:e6:1a:bf:98:3d [email protected]
Zeile 48: Zeile 50:
  
 ==== SSH-Clientconfig ==== ==== SSH-Clientconfig ====
-Um nun nicht jedes mal beim Aufruf einer SSH-Verbindung zu einem unserer KnotenParameter 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. Können wir den Zielhost direkt erreichen, so brauchen wir die IPv6-Adresse nicht mit **[** maskieren, wir können diuese also direkt angebene, wie in dem gezeigtem Beispiel: \\+Um nun nicht jedes mal beim Aufbau einer SSH-Verbindung zu einem unserer Knoten Parameter wie **user** und die doch sehr langen **IPv6**-Adressen angeben zu müssen, hinterlegen wir die entsprechenden Daten in der Konfigurationsdatei unseres lokalen SSH-Clients auf unserem Adminrechner. Können wir den Zielhost direkt erreichen, so brauchen wir die IPv6-Adresse nicht mit **[** maskieren, wir können diese also direkt angeben, wie in folgendem Beispiel: \\
 **''Hostname 2001:608:a01:106:822a:a8ff:feea:fae3''**. **''Hostname 2001:608:a01:106:822a:a8ff:feea:fae3''**.
  
-Die Verwendung einer eignen individuellen SSH-Clinetkonfigurationsdatei hat darüber hinaus auch noch zusätzlich den Vorteil, dass z.B. von einem Netz aus, bei dem es "nur" **IPv4**-Adressen Verwendung finden wir keinen zusätzlichen Sprunghost angeben brauchen. Hier müssen wir lediglich dann darauf achten, dass die IPv6_Zieladresse dann mit Hilfe von **[** entsprechend maskiert werden, wie im nachfolgenden Beispiel beim Host **ff_pliening_gbw_od-e** dann: \\ **''Hostname [2001:608:a01:106:822a:a8ff:feea:fae3]''**. Dies erleichtert die Arbeit doch ungemein, vor allem dann wenn Dateien von und zum Router kopiert werden müssen. Hintergrundinformationen zur Clientkonfiguration sind im Kapitel [[https://dokuwiki.nausch.org/doku.php/centos:ssh_c7#client_konfiguration|Client Konfiguration bei der Secure Shell]] zu finden.+Die Verwendung einer eignen individuellen SSH-Clientkonfigurationsdatei hat darüber hinaus auch noch zusätzlich den Vorteil, dass z.B. von einem Netz aus, bei dem "nur" **IPv4**-Adressen Verwendung findenwir keinen zusätzlichen Sprunghost angeben brauchen. Hier müssen wir lediglich dann darauf achten, dass die **IPv6-Zieladresse** mit Hilfe von **[** **]** entsprechend maskiert wird, wie im nachfolgenden Beispiel beim Host **ff_pliening_gbw_od-e** dann: \\ **''Hostname [2001:608:a01:106:822a:a8ff:feea:fae3]''**.
  
-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 eigenen Sprunghost, der dann das Bindeglied zwischen IPv4 und IPv6 herstellt, mit Namen **jumphost**, der natürlich auch eine entsprechende Konfiguration aufweist. Der sicherheitsbewusste Admin von entsprechenden Hosts/Servern und Freifunkknoten wird natürlich unterschiedliches Schlüsselmaterial fü die verschiedenen Systeme (Sprungosts und anderen Servern) und den Freifunkknoten verwenen. Die jeweiligen Schlüssel werden mit dem Parameter **''IdentityFile''** definiert.+Dies erleichtert die Arbeit doch ungemein, vor allem dann, wenn Dateien von und zum Router kopiert werden müssen. Hintergrundinformationen zur Clientkonfiguration sind im Kapitel [[https://dokuwiki.nausch.org/doku.php/centos:ssh_c7#client_konfiguration|Client Konfiguration bei der Secure Shell]] zu finden. 
 + 
 +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 eigenen Sprunghost, der dann das Bindeglied zwischen IPv4 und IPv6 herstellt, mit Namen **jumphost**, der natürlich auch eine entsprechende Konfiguration aufweist. Der sicherheitsbewusste Admin von entsprechenden Hosts/Servern und Freifunkknoten wird natürlich unterschiedliches Schlüsselmaterial für die verschiedenen Systeme (Sprunghosts und anderen Servern) und den Freifunkknoten verwenden. Die jeweiligen Schlüssel werden mit dem Parameter **''IdentityFile''** definiert.
    $ vim ~/.ssh/config    $ vim ~/.ssh/config
 <file bash ~/.ssh/config>Host jumphost <file bash ~/.ssh/config>Host jumphost
Zeile 68: Zeile 72:
      User root      User root
      Protocol 2      Protocol 2
-     IdentityFile ~/.ssh/id_rsa4096_ff+     IdentityFile ~/.ssh/id_ed25519_ff
  
 Host ff_pliening_gbw_od-e Host ff_pliening_gbw_od-e
Zeile 75: Zeile 79:
      User root      User root
      Protocol 2      Protocol 2
-     IdentityFile ~/.ssh/id_rsa4096_ff+     IdentityFile ~/.ssh/id_ed25519_ff
      ProxyJump jumphost      ProxyJump jumphost
 </file> </file>
Zeile 83: Zeile 87:
  
 Ebenso können wir so direkt Dateien auf den Knoten in das //**/tmp**//-Verzeichnis kopieren, da sich der SCP-Aufruf entsprechend vereinfacht, Bsp.:  Ebenso können wir so direkt Dateien auf den Knoten in das //**/tmp**//-Verzeichnis kopieren, da sich der SCP-Aufruf entsprechend vereinfacht, Bsp.: 
-   $ scp firmware ff_pliening_gbw_od-e:/tmp+   $ scp neue_firmware.bin ff_pliening_gbw_od-e:/tmp 
 + 
 +Hier wird nun ohne Umwege die Datei **neue_firmware.bin** in das //**/tmp**//-Verzeichnis des Routers **ff_pliening_gbw_od** kopiert. 
 + 
 +==== SSH-Zugriff auf Freifunk-Knoten im eigenen LAN mit PuTTY unter Windows === 
 +Zu Hause im eigenen LAN kann man unter Windows mit dem PuTTY SSH-Client ganz einfach auf seine Freifunk-Router zugreifen, wenn man bei der Installation seinen //public key// dort abgelegt hat. 
 + 
 +{{ :knb:putty_01.jpg?direct&400 |Bild: PuTTY}} 
 + 
 +Nach dem Öffnen von **PuTTY** wird man im Fenster **PuTTY Configuration** dazu aufgefordert, den **Host Name (or IP address)** des Freifunk-Routers anzugeben. Der Hostname des Knotens ist der um Interpunktion und Leerzeichen reduzierte Name des Knotens (z.B. wird aus "1. Knoten in Pasing" ein Hostname "1knoteninpasing"). 
 + 
 +Zielsicherer ist es jedoch, die IP-Adresse des Knotens im LAN zu benutzen. Diese findete man z.B. auf den Konfigurationsseiten des eigenen Internetrouters, z.B. dem Speedport oder der Fritz!Box, unter "Einstellungen zum Heimnetzwerk (LAN)" oder DHCP-Einstellungen heraus. Zielführend kann auch die Benutzung eines Netzwerkscanners wie **[[https://nmap.org/download.html|nmap]]** oder die Fing-App unter Android sein.  
 + 
 +{{ :knb:putty_02.jpg?direct&400 |Bild: PuTTY}}
  
-Hier wird nun ohne manuelle Umwege Datei **firmware** in das //**/tmp**//-Verzeichnis des Routers **ff_pliening_gbw_od**.+Im nächsten Schritt muss die Datei mit dem SSH-Key auswählen, den man auf dem Router hinterlegt hat. Dies geschieht über die Einstellung **Private key file for authentication** unter **Connection -> SSH -> Auth**. 
 +Danach kann man unter **Session** die Einstellungen mit einem Namen bei **Saved Sessions** versehen und mit **Save** abspeichern und die SSH-Verbindung mit **Open** starten
  
 +{{ :knb:putty_03.jpg?direct&400 |Bild: PuTTY}}
  
 +Falls die Verbindung zu Stande kommt, hat man die richtige IP-Adresse und den passenden Key gewählt. Man wird nun aufgefordert, das Passwort einzugeben, mit dem man den //private key// abgesichert hat. Schließlich hat man eine Eingeabeaufforderung mit Administrationsrechten bzw. root-Shell auf dem Router.
  
 ===== Abfrage von Konfigurationsdaten ===== ===== Abfrage von Konfigurationsdaten =====
-Zur Abfrage von Konfigurationsparametern bemühen wir den Befehl ''**uci**'' des gleichnamigen **Unified Configuration Interface**, welches intern von OpenWrt verwendet wird, um dessen Konfiguration verwalten zu können. Auf der **[[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration|offiziellen GitHub Projektseite]]** finden sich Informationen zu aktuellen Änderungen mit entsprechenden Beispielen. Ohne Eingabe von zusätzlichen Parametern, werden die zur Verfügung stehenden Optionen ausgegeben.+Zur Abfrage von Konfigurationsparametern bemühen wir den Befehl ''**uci**'' des gleichnamigen **Unified Configuration Interface**, welches intern von OpenWrt verwendet wird. Auf der **[[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration|offiziellen GitHub Projektseite]]** finden sich Informationen zu aktuellen Änderungen mit entsprechenden Beispielen. Ohne Eingabe von zusätzlichen Parametern, werden die zur Verfügung stehenden Optionen ausgegeben.
    uci    uci
 <code>Usage: uci [<options>] <command> [<arguments>] <code>Usage: uci [<options>] <command> [<arguments>]
Zeile 126: Zeile 146:
 </code> </code>
  
-Die Ausgabe aller Konfigurationsparameter kann mitunter doch sehr umfänglich werden. Bsp.+Die Ausgabe aller Konfigurationsparameter des Router ist mit dem Kommando //show// möglich
-   uci show |wc -l+   uci show 
  
-  674 +Diese Liste ist sehr lang. In aller Regel wird man gezielt nach einzelnen Parametern suchen, wie z.B. hier nach den hinterlegten Kontaktdaten.
- +
-In aller Regel wird man gezielt nach einzelnen Parametern suchen, wie z.B. hier nach den hinterlegten Kontaktdaten.+
    uci show | grep contact    uci show | grep contact
  
   gluon-node-info.@owner[0].contact='[email protected]'   gluon-node-info.@owner[0].contact='[email protected]'
  
-Alle Parameter einer Section kann man durch Angabe der ''Section'' anwählen. +Alle Parameter einer Sektion kann man durch Angabe der ''Section'' anwählen. 
    uci show gluon-node-info    uci show gluon-node-info
 <code>gluon-node-info.@location[0]=location <code>gluon-node-info.@location[0]=location
Zeile 163: Zeile 181:
  
 </code> </code>
- 
  
  
 ==== Anzahl verbundener Clients ==== ==== Anzahl verbundener Clients ====
 +**Diese Information ist veraltet**
 +
 Zur Ausgabe der Anzahl der aktuell (lokal) verbundenen Clients verwendet man folgenden Aufruf: Zur Ausgabe der Anzahl der aktuell (lokal) verbundenen Clients verwendet man folgenden Aufruf:
    grep -cEo "\[.*W.*\]+" /sys/kernel/debug/batman_adv/bat0/transtable_local    grep -cEo "\[.*W.*\]+" /sys/kernel/debug/batman_adv/bat0/transtable_local
Zeile 178: Zeile 197:
   v2020.2.1   v2020.2.1
  
-==== Gluon Version ==== +==== Gluon-Version ==== 
-   cat /lib/gluon/gluon-version+  cat /lib/gluon/gluon-version
  
   v2020.2+   v2020.2+
Zeile 190: Zeile 209:
  
 ==== SSID ==== ==== SSID ====
-Wollen wir wissen welche SSID(([[https://de.wikipedia.org/wiki/Service_Set#SSID,_ESSID_und_BSSID|Service Set Identifier]])) (WLAN-Kennung) unser Freifunkknoten ausstrahlt, bedienen wir uns folgendem Aufruf. 
-   uci show | grep -i ssid 
  
-  wireless.mesh_radio0.ssid='ffmuc-uml_ost'+=== SSID ändern ===
  
-Die SSID des Mesh-Netzes ermitteln wir mit folgendem Befehl: +Die SSID kann nur geändert werden, in dem man die Domain bzw. das Segment ändert. Siehe dazu den Abschnitt [[knb:ssh#aendern_der_domain_des_segments|Ändern der Domain]].
-   uci show grep -i mesh_id+
  
-  wireless.mesh_radio0.mesh_id='ffmuc-muc_ost-mesh'+{{page>:includes:ssid&nodeader&nofooter}}
  
-Da es sich hier um einen Router der nur ein **2,4 GHz** WLAN ausstrahlt, wird jeweils auch nur eine Zeile ausgegebenIm 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. +=== SSID herausfinden === 
-   uci show wireless | grep -i id+Wollen wir wissen welche SSID(([[https://de.wikipedia.org/wiki/Service_Set#SSID,_ESSID_und_BSSID|Service Set Identifier]])) (WLAN-Kennung) unser Freifunkknoten ausstrahlt, bedienen wir uns folgendem Aufruf: 
 +  uci show wireless | grep ssid
  
 +Die SSID des Mesh-Netzes ermitteln wir mit folgendem Befehl:
 +  uci show wireless | grep mesh_id
 +
 +Wenn ein Router nur ein **2,4 GHz** WLAN oder ein **5GHz** ausstrahlt, dann wird nur nur ein Zeile für radio0 ausgegeben. Wenn es sich um ein Routermodell handelt, das sowohl ein **2,4 GHz** als auch ein **5 GHz** WLAN ausstrahlt, werden dort zwei Konfigurationswertpaaren ausgegeben:
 +  #  uci show wireless | grep id
   wireless.mesh_radio0.mesh_id='ffmuc-muc_ost-mesh'   wireless.mesh_radio0.mesh_id='ffmuc-muc_ost-mesh'
   wireless.mesh_radio1.mesh_id='ffmuc-muc_ost-mesh'   wireless.mesh_radio1.mesh_id='ffmuc-muc_ost-mesh'
   wireless.client_radio0.ssid='muenchen.freifunk.net/muc_ost'   wireless.client_radio0.ssid='muenchen.freifunk.net/muc_ost'
-  wireless.client_radio1.ssid='muenchen.freifunk.net/muc_ost +  wireless.client_radio1.ssid='muenchen.freifunk.net/muc_ost'
- +
-{{page>:includes:ssid&nodeader&nofooter}}+
 ==== Debugging-Log ==== ==== Debugging-Log ====
-Bei der Fehlersuche ist es mit unter sehr hilfreich, wenn aussagekräftige Logmeldung in Echtzeit zur Verfügung stehen. Mit Hilfe des Befehls ''logread'' können diese zur Ansicht gebracht werden. Durch Angabe eines nicht verwendeten Parameters **-h** werden alle Optionen ausgegeben, die der Befehl unterstützt+Bei der Fehlersuche ist es hilfreich, wenn aussagekräftige Logmeldung in Echtzeit zur Verfügung stehen. Mit Hilfe des Befehls ''logread'' können diese zur Ansicht gebracht werden. Durch Angabe des Parameters **-h** werden alle Optionen ausgegeben, die der Befehl unterstützt
    logread -h    logread -h
 <code>Usage: logread [options] <code>Usage: logread [options]
Zeile 236: Zeile 256:
 Mon Jun  3 20:32:24 2019 daemon.info fastd[2316]: resolving host `gw01.ext.ffmuc.net' failed: Try again Mon Jun  3 20:32:24 2019 daemon.info fastd[2316]: resolving host `gw01.ext.ffmuc.net' failed: Try again
 </code> </code>
-Mit der Option **-f** wird das log fortlaufend angezeigt.+Mit der Option **-f** wird das Log fortlaufend ausgegeben.
    logread -f    logread -f
 <code>Mon Jun  3 20:37:00 2019 user.notice ath9k-broken-wifi-workaround: node has no wifi, aborting. <code>Mon Jun  3 20:37:00 2019 user.notice ath9k-broken-wifi-workaround: node has no wifi, aborting.
Zeile 242: Zeile 262:
 ... ...
 </code> </code>
 +Die Ausgabe kann mit **Strg-C** abgebrochen werden.
 +
 ===== Netzwerks- und Zustandsabfragen mit batctl ===== ===== Netzwerks- und Zustandsabfragen mit batctl =====
  
Zeile 247: Zeile 269:
  
 ==== B.A.T.M.A.N.-ADV Version ==== ==== B.A.T.M.A.N.-ADV Version ====
-Welche B.A.T.M.A.N.-ADV Version  verwendet wir erfahren wir wie folgt.+Welche B.A.T.M.A.N.-ADV Version verwendet wird, erfahren wir wie folgt:
    batctl o | grep adv    batctl o | grep adv
  
   [B.A.T.M.A.N. adv openwrt-2018.1-8, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)]   [B.A.T.M.A.N. adv openwrt-2018.1-8, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)]
      
-Eine Alternative dazu ist auch: 
-   grep adv /sys/kernel/debug/batman_adv/bat0/originators 
-    
-  [B.A.T.M.A.N. adv openwrt-2018.1-8, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0 BATMAN_V)] 
- 
 ==== Statistiken ==== ==== Statistiken ====
-Eine Statistikübersicht des laufenden Systems erhalten wir mit der Option **s**.+Eine Übersicht über die Laufzeitstatistik des Batman-Moduls erhalten wir mit der Option **s**how.
    batctl s    batctl s
 <code> tx: 77797 <code> tx: 77797
Zeile 290: Zeile 307:
  
 === Gateways mit Bandbreitenangaben === === Gateways mit Bandbreitenangaben ===
-Die Option **gwl** zeigt alle erreichbaren Gateways mit aktueller Bandbreite im Freifunknetz.+Die Option **gwl** zeigt alle erreichbaren Gateways mit geschätzten, aktuellen Bandbreitewerten im Freifunknetz:
    batctl gwl    batctl gwl
 <code>[B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)] <code>[B.A.T.M.A.N. adv openwrt-2018.1-5, MainIF/MAC: primary0/72:5f:bf:8f:4f:fb (bat0/30:b5:c2:86:4e:c0 BATMAN_V)]
Zeile 307: Zeile 324:
 ... ...
 </code> </code>
 +
 === Summe aller WiFi-Nutzer im Netz === === Summe aller WiFi-Nutzer im Netz ===
 Wollen wir wissen, wie viele der zuvor abgefragten Clients als WLAN-Nutzer eingebucht sind, erweitern wir die vorherige Abfrage wie folgt. Wollen wir wissen, wie viele der zuvor abgefragten Clients als WLAN-Nutzer eingebucht sind, erweitern wir die vorherige Abfrage wie folgt.
Zeile 312: Zeile 330:
  
   99   99
 +  
 +Dies ist die Anzahl aller WLAN-Nutzer an allen Knoten im Netz, **nicht** die Anzahl am eigenen Router.
      
 === Liste der lokalen Nutzer === === Liste der lokalen Nutzer ===
Zeile 329: Zeile 349:
 33:33:00:00:00:01   -1 [.P....]   0.000   (0xb49fafa9)</code> 33:33:00:00:00:01   -1 [.P....]   0.000   (0xb49fafa9)</code>
  
 +Clients mit dem no**P**urge-Flag sind interne Artefakte und dürfen nicht mitgezählt werden.
 === Anzahl Lokaler WLAN-Clients === === Anzahl Lokaler WLAN-Clients ===
 Auch hier können wir über die Erweiterung des Befehls uns sehr leicht ausgeben lassen, wieviele WLAN-Nutzer wir lokal haben. Auch hier können wir über die Erweiterung des Befehls uns sehr leicht ausgeben lassen, wieviele WLAN-Nutzer wir lokal haben.
Zeile 336: Zeile 357:
  
 === Belegung der Netzwerkports am Router === === Belegung der Netzwerkports am Router ===
-Möchte man abfragen, welche Ports an dem Freifunkrouter belegt, also Ethernet-Kabel angesteckt wurden, kann man dies wie folgt ermitteln.+Möchte man abfragen, welche Ports am Freifunkrouter belegt sind, also wo Ethernetkabel angesteckt wurden, kann man dies wie folgt ermitteln.
    swconfig dev switch0 show | grep 'link:'    swconfig dev switch0 show | grep 'link:'
 <code> link: port:0 link:up speed:1000baseT full-duplex txflow rxflow  <code> link: port:0 link:up speed:1000baseT full-duplex txflow rxflow 
Zeile 347: Zeile 368:
  
 ====Anbindung an MQTT-Broker (einfach)==== ====Anbindung an MQTT-Broker (einfach)====
-Will man den FF-Router per [[https://de.wikipedia.org/wiki/MQTT|MQTT]] zu Monitoringzwecken an seine Heimautomatisierung anbinden, so ist das (wegen des im FF-Image fehlenden OpenWrt-Pakets ''[[https://openwrt.org/packages/pkgdata/mosquitto-client-nossl|mosquitto-client]]'') in einfacher Form nur indirekt per SSH machbar. Am einfachsten packt man dazu die nachfolgenden Zeilen in ein Shell-Skript, das man dann z.B. alle 5 Minuten von einem anderen Linux-Rechner (z.B. Raspberry Pi) als [[http://raspberry.tips/raspberrypi-einsteiger/cronjob-auf-dem-raspberry-pi-einrichten|Cronjob]] starten lässt:+Will man den Freifunkouter per [[https://de.wikipedia.org/wiki/MQTT|MQTT]] zu Monitoringzwecken an seine Heimautomatisierung anbinden, so ist das (wegen des in der Freifunk-Firmware fehlenden OpenWrt-Pakets ''[[https://openwrt.org/packages/pkgdata/mosquitto-client-nossl|mosquitto-client]]'') in einfacher Form nur indirekt per SSH machbar. Am einfachsten packt man dazu die nachfolgenden Zeilen in ein Shell-Skript, das man dann z.B. alle 5 Minuten von einem anderen Linux-Rechner (z.B. Raspberry Pi) als [[http://raspberry.tips/raspberrypi-einsteiger/cronjob-auf-dem-raspberry-pi-einrichten|Cronjob]] starten lässt:
 <code> <code>
 #!/bin/sh #!/bin/sh
Zeile 364: Zeile 385:
  
 ===== Ändern von Konfigurationsdaten ===== ===== Ändern von Konfigurationsdaten =====
-Möchte man einzelne Konfigurationsparameter ändern, verwenden wir wiederum den Befehl ''uci'' gefolgt von der Option //**set**//.  +Möchte man einzelne Konfigurationsparameter ändern, verwendet man den Befehl ''uci'' gefolgt von der Option //**set**//.  
-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.+Vor umfangreichen Änderung sollte man eine Sicherheitskopie der bestehenden Konfiguration anzufertigen.
    uci export network > /tmp/network.uci    uci export network > /tmp/network.uci
  
-Zum Wiederherstellen (restore) geht man dann wie folgt vor.+Zum Wiederherstellen geht man dann wie folgt vor:
    cat /tmp/network.uci | uci import    cat /tmp/network.uci | uci import
  
-Will man die gesicherte Konfiguration lokal speichern, kopiert man die zuvor erstellte Sicherungskopie einfach auf den lokalen Rechner. Da wir über die **[[#ssh-clientconfig|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 ''ff_pliening_gbw_od'' auf den lokalen Rechner ins aktuelle lokale Verzeichnis, repäsentiert durch den //Punkt// ''.''.+Will man die gesicherte Konfiguration auf dem Administrations-PC speichern, kopiert man die erstellte Sicherungskopie mit scp oder WinSCP auf den lokalen Rechner. Da wir über die **[[#ssh-clientconfig|lokale Konfigurationsdatei]]** unsere Freifunkknoten definiert haben, können wir einfach den Host über den definierten Namen ansprechen. In diesem Beispiel kopieren wir die Sicherungskopie vom Knoten ''ff_pliening_gbw_od'' auf den lokalen Rechner ins aktuelle Verzeichnis, repäsentiert durch den //Punkt// ''.''.
    scp ff_pliening_gbw_od:/tmp/network.uci .    scp ff_pliening_gbw_od:/tmp/network.uci .
  
 ==== Kontaktdaten ==== ==== Kontaktdaten ====
-Im folgenden Beispiel wollen die die hinterlegten Kontaktinformationen abändern. Zunächst fragen wir ab, welche Informationen hier in diesem Konfigurationsbeispiel hinterlegt ist.+Im folgenden Beispiel wollen wir die hinterlegten Kontaktinformationen ändern. Zunächst fragen wir ab, welche Informationen hier hinterlegt sind:
    uci show gluon-node-info.@owner[0].contact    uci show gluon-node-info.@owner[0].contact
  
   gluon-node-info.cfg02c290.contact='[email protected]'   gluon-node-info.cfg02c290.contact='[email protected]'
  
-Hier ändern wir nun die eMail-Adresse unseren Wünschen entsprechend ab.+Hier ändern wir nun die eMail-Adresse unseren Wünschen entsprechend ab:
    uci set gluon-node-info.@owner[0].contact='[email protected]'    uci set gluon-node-info.@owner[0].contact='[email protected]'
    uci commit    uci commit
Zeile 389: Zeile 410:
   gluon-node-info.cfg02c290.contact='[email protected]'   gluon-node-info.cfg02c290.contact='[email protected]'
  
-Auf der [[https://map.ffmuc.net/#!/en/map/30b5c25662b1|Karte von Freifunk München]] werden die geänderten Daten dann auch entsprechend ausgegeben.+Auf der [[https://map.ffmuc.net/#!/en/map/30b5c25662b1|Karte von Freifunk München]] werden die geänderten Daten nach ein paar Minuten  entsprechend ausgegeben:
 {{ :ff_001.png?nolink&350 |Bild: Bildschirmhardcopy des betreffenden Freifunk-Knotens auf der Karte}} {{ :ff_001.png?nolink&350 |Bild: Bildschirmhardcopy des betreffenden Freifunk-Knotens auf der Karte}}
  
 ==== Knoten-/Host-Name ==== ==== Knoten-/Host-Name ====
-In folgendem Konfigurationsbeispiel wollen wir den Knotennamen oder auch Hostname genannt, abändern. Auch hier fragen wir zunächst ab, welcher Wert gesetzt ist. +In folgendem Beispiel wollen wir den Knotennamen oder auch Hostname genannt, ändern. Auch hier fragen wir zunächst ab, welcher Wert gesetzt ist: 
-   uci show | grep hostname+  # pretty-hostname 
 +  ff_pliening_gbw_ug
  
-  system.@system[0].pretty_hostname='ff_pliening_gbw_ug' +Diesen Wert ändern wir nun in einen etwas sprechenderen Namen ab (hier sind auch Emojis zugelassen 😉): 
-  system.@system[0].hostname='ffplieninggbwug'+  pretty-hostname ff_pliening_gänsbrunnenweg_ug
  
-Diesen Wert ändern wir nun in einen etwas sprechenderen Namen ab. +Fragen wir nun erneut den geänderten Parameter ab, werden uns die aktualisierten Daten ausgegeben: 
-   uci set system.@system[0].pretty_hostname='ff_pliening_gänsbrunnenweg_ug' +  # pretty-hostname 
-   uci commit system+  ff_pliening_gänsbrunnenweg_ug
  
-Fragen wir nun erneut den geänderten Parameter ab, werden uns die aktualisierten Daten ausgegeben. +Auf der [[https://map.ffmuc.net/|Karte von Freifunk München]] werden die geänderten Daten nach ein paar Minuten dann auch entsprechend ausgegeben:
-   uci show | grep hostname +
- +
-  system.@system[0].hostname='ff_pliening_gänsbrunnenweg_ug' +
- +
-Auf der [[https://map.ffmuc.net/#!/en/map/30b5c25662b1|Karte von Freifunk München]] werden die geänderten Daten nach ein paar Minuten dann auch entsprechend ausgegeben.+
 {{ :ff_002.png?nolink&650 |Bild: Bildschirmhardcopy des betreffenden Freifunk-Knotens auf der Karte}} {{ :ff_002.png?nolink&650 |Bild: Bildschirmhardcopy des betreffenden Freifunk-Knotens auf der Karte}}
  
 +Siehe dazu auch den [[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration#changing-hostname|Gluon Administrationsguide]].
 ==== Geodaten für die Kartenanzeige ==== ==== 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://map.ffmuc.net|Karte]]**, geht man wie folgt vor. 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://map.ffmuc.net|Karte]]**, geht man wie folgt vor.
Zeile 420: Zeile 438:
 Nach kurzer Zeit wird dann der Router auf der Karte an der neuen gewünschten Stelle angezeigt. Nach kurzer Zeit wird dann der Router auf der Karte an der neuen gewünschten Stelle angezeigt.
 {{ :ff_005.png?nolink&600 |Bild: Freifunkkarte mit Anzeige der gewählten Nodes}} {{ :ff_005.png?nolink&600 |Bild: Freifunkkarte mit Anzeige der gewählten Nodes}}
 +
 +==== Wifi Mesh abschalten ====
 +
 +Standardmäßig ist der WiFi Mesh eingeschaltet um nahe Knoten miteinander über WiFi zu verbinden. Dies lässt sich mit folgenden Befehlen abschalten:
 +  uci set wireless.mesh_radio0.disabled=1
 +  uci set wireless.mesh_radio1.disabled=1
 +  uci commit wireless
 +  wifi
 +
 +Anschließend ist das WiFi Mesh abgeschaltet. 
 +
 +Siehe dazu auch [[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration#disable-80211s-mesh-network|Gluon Administrationsguide]].
  
 ==== Webseite des FF-Knoten aus dem LAN aufrufen ==== ==== Webseite des FF-Knoten aus dem LAN aufrufen ====
Zeile 459: Zeile 489:
 </WRAP> </WRAP>
  
-Bei der Ersteinrichtung unseres Knotens über die **[[gui#remotezugriff|WEG GUI]]** wird bei aktueller Firmware auch deshalb gar keine Möglichkeit zur Vergabe eines Passwortes für den Nutzer root angeboten, sondern ausschließlich die Möglichkeit gegeben ein SSH-Schlüssel (public-key) zu hinterlegen.+Bei der Ersteinrichtung unseres Knotens über die **[[gui#remotezugriff|Web GUI]]** wird bei aktueller Firmware auch deshalb gar keine Möglichkeit zur Vergabe eines Passwortes für den Nutzer root angeboten, sondern ausschließlich die Möglichkeit gegeben ein SSH-Schlüssel (public-key) zu hinterlegen.
  
 Will man nun ganz sicher gehen, oder ist als verantwortlicher (LINUX-)Admin von Haus aus ein klein wenig paranoid, kann man den Zugang nur mit Passwort und den Zugang für den Nutzer Root mit Passwort bei SSH-Daemon **[[https://matt.ucc.asn.au/dropbear/dropbear.html|dropbear]]** auch komplett deaktivieren. Hierzu setzen wir die beiden betreffenden Zeilen in der zugehörigen Konfigurationsdatei des SSH-Daemon auf **//off//**. Will man nun ganz sicher gehen, oder ist als verantwortlicher (LINUX-)Admin von Haus aus ein klein wenig paranoid, kann man den Zugang nur mit Passwort und den Zugang für den Nutzer Root mit Passwort bei SSH-Daemon **[[https://matt.ucc.asn.au/dropbear/dropbear.html|dropbear]]** auch komplett deaktivieren. Hierzu setzen wir die beiden betreffenden Zeilen in der zugehörigen Konfigurationsdatei des SSH-Daemon auf **//off//**.
Zeile 605: Zeile 635:
  
 ==== WLAN zeitgesteuert ein- und ausschalten ==== ==== WLAN zeitgesteuert ein- und ausschalten ====
-In Gemeinschaftsunterkünften wie z.B. Jugendherbergen, Asylhilfeeinrichtungen oder auch im familiären Haushalt, kann es erforderlich sein bzw. werden, den Zugang zum Internet zeitlich zu reglementieren. Bevor man nun einzelne Freifunk-Router per 230V-Zeitschaltuhr hart vom Stromnetz trenntsollte man lieber das nachfolgende **[[https://rosettacode.org/wiki/Almquist_Shell|ash]]**-Shellscript verwenden.  +In manchen Unterkünften oder auch im familiären Haushalt, kann es erforderlich sein bzw. werden, den Zugang zum Internet zeitlich zu reglementieren. 
-(AnmerkungEtwas eleganter lässt sich diese Aufgabe ab der Firmware-Version v2019.0.8 mit der neuen Funktion **ap-timer** lösen, mehr dazu im Abschnitt **[[#ap-timer|weiter unten]]**. )+Dazu wird "einfach" ein Eintrag in den Aufgabendienst cronhier micron.d geschrieben, in dem die Datei mit dem Editor VI erstellt wird:
  
-=== ASH-Script === +  vi /usr/lib/micron.d/wifioff
-Zunächst wollen wir uns die Konfiguration per Script einmal ansehen. Dazu legen wir uns ein kleines **ash**-Shellscript an, dass wir dann bei Bedarf entweder händisch oder cronjob-gesteuert aufrufen. +
-   vim /root/stop_wlan.sh+
  
-<file bash /root/stop_wlan.sh>#!/bin/ash +Drücke **i** um in den Schreibmodus zu gelangen.
-# Script zum (De-)Aktivieren der unterschiedlichen Client-WLANs+
  
-# $1 erste uebergebene Variable : +Für tägliche Abschaltung von 21 bis 7 Uhr, sollte die Datei wie folgt aussehen:
-#                                   2 = 2.4 GHz Freifunk-Client-Netz +
-#                                   5 = 5   GHz Freifunk-Client-Netz +
-#                                   p = 2.4 GHz Freifunk-Client-Netz +
-+
-# $2 : zweite uebergebene Variable: +
-#                                   off = WLAN ausschalten +
-#                                   on  = WLAN einschalten+
  
-# WLAN(s) ausschalten +  0 21 * * *  ifconfig client0 downifconfig client1 down 
-if [ $2 = "off"then +   7 * * *  ifconfig client0 upifconfig client1 up 
-   if [ $1 = "2"then +   
-      uci set wireless.client_radio0.disabled=1  +Für die Syntax gibt es viele hilfreiche Seiten, wie beispielsweise [[https://crontab.guru/#0_21_*_*_*|Crontab.guru]].
-   elif $1 = "5" ] ; then +
-      uci set wireless.client_radio1.disabled=1 +
-   else  +
-      uci set wireless.wan_radio0.disabled=1 +
-   fi +
-fi+
  
-# WLAN(s) einschalten +Anschließende drücke ESC und gib **:wq** ein um die Änderungen zu speichern.
-if [ $2 = "on" ] ; then +
-   if [ $1 = "2" ] ; then +
-      uci set wireless.client_radio0.disabled=0 +
-   elif [ $1 = "5" ] ; then +
-      uci set wireless.client_radio1.disabled=0 +
-   else +
-      uci set wireless.wan_radio0.disabled=0 +
-   fi +
-fi+
  
-# Konfigurationsaenderung(en) persistieren +Abschließend muss der Deamon die Konfiguration neu laden, damit der Cronjob aktiv geschaltet ist.
-uci commit wireless +
-wifi +
-</file>+
  
-Das Script statten wir zum Aufruf mit den entsprechenden **x**-Rechten aus. +  /etc/init.d/micrond reload
-   chmod +x /root/stop_wlan.sh+
  
-Wollen wir nun ein WLAN umschalten, geben wir zwei Parameter an: 
-  * **erster Parameter** 
-    * ''2'' : 2.4 GHz Client WLAN 
-    * ''5'' : 5 GHz Client WLAN 
-    * ''p'' : [[gui#privates_wlan|privates verschlüsseltes WLAN]] 
-  * **zweiter Parameter** 
-    * ''off'' : WLAN ausschalten 
-    * ''on'' : WLAN einschalten 
- 
-So deaktivert z.B. folgender Aufruf das 5 GHz Client-WLAN: ''/root/stop_wlan.sh 5 off'' und folgender Aufruf würde es wieder aktivieren: ''/root/stop_wlan.sh 5 on'' 
-Da wir das natürlich nicht jedesmal per Hand ausführen wollen, legen wir uns entsprechende cronjobs an. Dazu hinterlegen wir in der User-crontab des Nutzers **root** entsprechend unsere zeitlichen Vorstellungen. 
-   crontab -e 
- 
-<code># 2.5 GHz Client WLAN um 22:30 Uhr ausschalten 
-30 22 * * * /root/stop_wlan.sh 2 off > /dev/null 2>&1 
-  
-# 5 GHz Client WLAN um 22:30 Uhr ausschalten 
-30 22 * * * /root/stop_wlan.sh 5 off > /dev/null 2>&1 
-  
-# privates verschluesseltes WLAN um 00:00 Uhr ausschalten 
-* 0 * * *   /root/stop_wlan.sh p off > /dev/null 2>&1 
-  
-# um 6:45 Uhr alle WLANs wieder aktivieren 
-45 6 * * *  /root/stop_wlan.sh 2 on > /dev/null 2>&1 
-45 6 * * *  /root/stop_wlan.sh 5 on > /dev/null 2>&1 
-45 6 * * *  /root/stop_wlan.sh p on > /dev/null 2>&1</code> 
- 
-In dem gezeigtem Beispiel würden um 22:30 Uhr jeweils die Freifunk Client-Netze sowie das private verschlüsselte WLAN um 00:00 Uhr ausgeschaltet, sowie frühmorgens um 6:45 Uhr alle drei WLANs wieder eingeschaltet. 
- 
-=== AP-Timer === 
-Seit der Firmware-Version **v2019.0.8** ((Ende Juli 2019)) gibt es nun eine Konfigurationsoption, die man am einfachsten bei der Konfiguration über die **[[knb:gui#ap_timer|Konfiguration über die WEB-GUI von LuCi]]** erreichen und konfigurieren kann.  
- 
-Auf der Konsole können wir uns hierzu dann die gesetzten Optionen mit Hilfe des Befehls ''uci show'' anzeigen lassen. 
-   uci show ap-timer 
- 
-<code>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'</code> 
- 
-In der Konfigurationsdatei ''/etc/config/ap-timer'' werden diese dann entsprechend persistiert. 
-<file bash /etc/config/ap-timer>config ap-timer 'settings' 
- option enabled '1' 
- option type 'day' 
- 
-config day 'all' 
- list on '06:20' 
- list off '23:59' 
- 
-</file> 
- 
-Wollen wir die Zeiten via SSH ändern, setzen wir die entsprechenden **ap-timer**-Optionen. In nachfolgendem Beispiel wollen wir das WLAN morgens um **8:00** Uhr ein- und nachmittags um **17:45** Uhr wieder ausschalten. 
- 
-   uci set ap-timer.all.on='08:00' 
-   uci set ap-timer.all.off='17:45' 
-   uci commit 
  
 +Siehe dazu auch den [[https://wiki.freifunk.net/Konsole#Clientnetz_zeitgesteuert_an-.2Fabschalten|Freifunk Konsolenguide]].
 ==== Zugangs zum Clientnetz begrenzen - Clients MAC-basiert aussperren ==== ==== Zugangs zum Clientnetz begrenzen - Clients MAC-basiert aussperren ====
 Bisweilen kann es erforderlich werden, einzelne Clients auf Basis ihrer MAC-Adresse auszusperren. Die kann verschiedene Gründe haben, sei es nur zum Schutz des Client selbst oder auch zum Schutz anderer Nutzer vor Störungen.  Bisweilen kann es erforderlich werden, einzelne Clients auf Basis ihrer MAC-Adresse auszusperren. Die kann verschiedene Gründe haben, sei es nur zum Schutz des Client selbst oder auch zum Schutz anderer Nutzer vor Störungen. 
Zeile 750: Zeile 694:
    /etc/init.d/network restart    /etc/init.d/network restart
  
-==== manuelle Segmentauswahl ====+==== Ändern der Domain / des Segments ====
 Auf Grund des großen Wachstums der Nodeanzahl im Freifunknetz München, wurde im Mitte 2019 das Gesamtnetz von ursprünglich drei Segmenten auf 12 ((Stand Anfang Juni 2019)) erweitert. Basierend auf hinterlegten Geo-Daten und auch umliegender WLAN-Access-Points erfolgt die Segmentauswahl vollautomatisch und könnte zukünftig bei weiterem Zuwachs an Freifunkknoten noch weiter aufgeteilt werden.  Auf Grund des großen Wachstums der Nodeanzahl im Freifunknetz München, wurde im Mitte 2019 das Gesamtnetz von ursprünglich drei Segmenten auf 12 ((Stand Anfang Juni 2019)) erweitert. Basierend auf hinterlegten Geo-Daten und auch umliegender WLAN-Access-Points erfolgt die Segmentauswahl vollautomatisch und könnte zukünftig bei weiterem Zuwachs an Freifunkknoten noch weiter aufgeteilt werden. 
  
 {{page>:includes:segmente&nodeader&nofooter}}  {{page>:includes:segmente&nodeader&nofooter}} 
  
 +Die aktuelle Liste aller Segment/Domains kann man auf Github finden: https://github.com/freifunkMUC/site-ffm/tree/stable/domains
  
-Will man in Erfahrung bringen, welche Segmente momentan zur Verfügung stehen, kann man diese mit Hilfe des folgenden Aufrufs abfragen. +Die aktuelle Segmentzuordnung am eigenen Knoten kann man mit folgendem Befehl abfragen
-   ls /lib/gluon/domains | cut -f1 -d "."+  # uci show gluon.core.domain 
 +  gluon.core.domain='ffmuc_welt'
  
-  ffmuc_freising +Der Knoten befindet sich also demnach im Segment **ffmuc_welt**. Will man diesen Knoten nun z.B. in das Segment **ffmuc_muc_ost** versetzen, schreibt man in die betreffende Konfigurationsoption den neuen Segmentnamen. Siehe dazu  
-  ffmuc_gauting +(siehe auch [[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration#switching-the-domain|Gluon Administrationsguide]]).
-  ffmuc_muc_cty +
-  ffmuc_muc_nord +
-  ffmuc_muc_ost +
-  ffmuc_muc_sued +
-  ffmuc_muc_west +
-  ffmuc_uml_nord +
-  ffmuc_uml_ost +
-  ffmuc_uml_sued +
-  ffmuc_uml_west +
-  ffmuc_welt+
  
-Die aktuelle Segmentzuordnung am eigenen Knoten kann man mit folgendem Befehl abfragen: +  gluon-switch-domain ffmuc_muc_ost
-   uci show gluon.core.domain+
  
-  gluon.core.domain='ffmuc_uml_ost' 
- 
-Der Knoten befindet sich also demnach im Segment **ffmuc_uml_ost**. Will man diesen Knoten nun z.B. in das Segment //**ffmuc_muc_ost**// versetzen, schreibt man in die betreffende Konfigurationsoption den neuen Segmentnamen. Soll der "Umzug" des Routers in ein anderes Segment dauerhaft bleiben, deaktivieren wir den Domain-Director zusätzlich auch noch mit ''**uci set ffmuc.director.enabled='0'**''. 
-   uci set gluon.core.domain='ffmuc_uml_ost' 
-   uci set ffmuc.director.enabled='0' 
-   uci commit 
-   gluon-reconfigure 
-   reboot 
        
-Um die Dauerhaftigkeit dieses Umzugs wieder aufzulösen und den Router wieder selbst seine "richtige" Domäne finden zu lassen, macht man diese Einstellung wieder rückgängig: 
-   # uci set gluon.core.domain='ffmuc_uml_sued' 
-   uci set ffmuc.director.enabled='1' 
-   uci commit 
-   gluon-reconfigure 
-   reboot 
  
 ==== Passthrough-Port des TP-Link CPE ==== ==== Passthrough-Port des TP-Link CPE ====
Zeile 818: Zeile 739:
 ==== Reboot des Knoten in den Konfigurationsmodus ==== ==== Reboot des Knoten in den Konfigurationsmodus ====
 Möchte man seinen WLAN-Router erneut in den Konfigurationsmodus versetzen, um ihn dann mit dem Web-Browser via http://192.168.1.1 administrieren, verwendet man folgenden Aufruf. Möchte man seinen WLAN-Router erneut in den Konfigurationsmodus versetzen, um ihn dann mit dem Web-Browser via http://192.168.1.1 administrieren, verwendet man folgenden Aufruf.
-   uci set "gluon-setup-mode.@setup_mode[0].enabled=1" +  gluon-enter-setup-mode 
-   uci commit gluon-setup-mode +   
-   reboot+Siehe dazu auch den [[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration#re-entering-config-mode|Gluon Administrationsguide]].
  
 ==== Routerkonfiguration komplett löschen / zurücksetzen ==== ==== Routerkonfiguration komplett löschen / zurücksetzen ====
 Möchte man den Router wieder in den Anfangszustand zurücksetzen, also die vorhandene Konfiguration komplett löschen, geht man wir folgt vor. Möchte man den Router wieder in den Anfangszustand zurücksetzen, also die vorhandene Konfiguration komplett löschen, geht man wir folgt vor.
-   firstboot +  # firstboot 
- +  This will erase all settings and remove any installed packages. Are you sure? [N/y] y
-  This will erase all settings and remove any installed packages. Are you sure? [N/y] +
- +
-   y +
   /dev/mtdblock5 is mounted as /overlay, only erasing files   /dev/mtdblock5 is mounted as /overlay, only erasing files
- +  reboot
-   reboot+
  
 Anschließend ist der Router zurückgesetzt, und man kann die Konfiguration unter http://192.168.1.1 wieder neu beginnen.  Anschließend ist der Router zurückgesetzt, und man kann die Konfiguration unter http://192.168.1.1 wieder neu beginnen. 
- 
 ===== Update/Upgrade der Firmware ===== ===== Update/Upgrade der Firmware =====
 In aller Regel wird man bemüht sein, die Firmware seines bzw. seiner Router immer auf einen aktuellen Stand zu halten. Dies nicht nur aus Sicherheitsaspekten heraus, sondern auch um an Neuerungen teilhaben zu können. Die Freifunk-Community in München stellt dazu drei unterschiedliche Releasezwige zur Verfügung : https://firmware.ffmuc.net/ In aller Regel wird man bemüht sein, die Firmware seines bzw. seiner Router immer auf einen aktuellen Stand zu halten. Dies nicht nur aus Sicherheitsaspekten heraus, sondern auch um an Neuerungen teilhaben zu können. Die Freifunk-Community in München stellt dazu drei unterschiedliche Releasezwige zur Verfügung : https://firmware.ffmuc.net/
Zeile 857: Zeile 772:
    uci set autoupdater.settings.branch='stable'    uci set autoupdater.settings.branch='stable'
    uci commit autoupdater    uci commit autoupdater
 +  
 Eine erneute Abfrage zeigt nun, dass der Branch **stable** künftig verwendet wird. Eine erneute Abfrage zeigt nun, dass der Branch **stable** künftig verwendet wird.
-   uci show autoupdater.settings.branch +  # uci show autoupdater.settings 
 +  autoupdater.settings=autoupdater 
 +  autoupdater.settings.enabled='1'
   autoupdater.settings.branch='stable'   autoupdater.settings.branch='stable'
 +  autoupdater.settings.version_file='/lib/gluon/release'
  
-==== Update manuell forcieren ====+Siehe dazu auch den [[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration#change-autoupdater-branch|Gluon Administrationsguide]]. 
 +==== Update forcieren ==== 
 + 
 +=== Via Autoupdater ===
 Mit Hilfe des Befehls ''autoupdater'' kann man nun manuell eingreifen und die Firmware zielgerichtet updaten - mit Angabe der Option **-h** werden alle Optionen angezeigt. Mit Hilfe des Befehls ''autoupdater'' kann man nun manuell eingreifen und die Firmware zielgerichtet updaten - mit Angabe der Option **-h** werden alle Optionen angezeigt.
    autoupdater -h    autoupdater -h
-<code>Usage: autoupdater [options] [<mirror> ...] 
- 
-Possible options are: 
-  -b, --branch BRANCH  Override the branch given in the configuration. 
- 
-  -f, --force          Always upgrade to a new version, ignoring its priority 
-                       and whether the autoupdater even is enabled. 
- 
-  -h, --help           Show this help. 
- 
-  -n, --no-action      Download and validate the manifest as usual, but do not 
-                       really flash a new firmware if one is available. 
- 
-  --fallback           Upgrade if and only if the upgrade timespan of the new 
-                       version has passed for at least 24 hours. 
- 
-  --force-version      Skip version check to allow downgrades. 
- 
-  <mirror> ...         Override the mirror URLs given in the configuration. If 
-                       specified, these are not shuffled.</code> 
  
 Das Update der Firmware kann manuell angestoßen werden, dazu verwendet man die Option **-f**. Somit wir aus dem aktuell definierten Releasezweig ein Update gesucht, geholt und bei Verfügbarkeit auch installiert. Das Update der Firmware kann manuell angestoßen werden, dazu verwendet man die Option **-f**. Somit wir aus dem aktuell definierten Releasezweig ein Update gesucht, geholt und bei Verfügbarkeit auch installiert.
Zeile 895: Zeile 795:
 Durch Angabe des Branches kann man unabhängig vom konfigurierten Releasezweig eine spezielle Firmware installieren. Im folgenden Beispiel erzwingen wir den Firmwareupdate aus dem Zweig //experimental//. Durch Angabe des Branches kann man unabhängig vom konfigurierten Releasezweig eine spezielle Firmware installieren. Im folgenden Beispiel erzwingen wir den Firmwareupdate aus dem Zweig //experimental//.
    autoupdater -b experimental -f    autoupdater -b experimental -f
-<code>Retrieving manifest from http://firmware.ffmuc.net/experimental/sysupgrade//experimental.manifest ... 
-Stopping cron... 
-Stopping haveged... 
-Stopping micrond... 
-Stopping sysntpd... 
-Stopping gluon-radvd... 
-Stopping uhttpd... 
-Stopping sse-multiplexd... 
-Stopping gluon-respondd... 
-vm.drop_caches = 3 
-Downloading image:  3328 / 3328 KiB 
-Stopping network... 
-Killed by signal 1. 
-Killed by signal 1. 
-packet_write_wait: Connection to UNKNOWN port 65535: Broken pipe</code> 
  
-Beide Beispiele setzen natürlich voraus, dass der Firmware-Server erreichbar ist. Alternativ ist es auch möglich das Firmware-Image manuell herunterladen bzw. auf den Router kopieren. Im folgenden Beispiel holen wir uns zuerst das Image auf unseren Admin-Rechner und kopieren es dann via ''scp'' auf den Router um es abschließend per Hand zu installieren.+=== Manuell mit Internet am Router ===
  
-In folgendem Beispiel gehen wir mal davon aus, dass wir uns nicht 100%ig sicher sind welches Router-Modell in Verwendung ist. Alos fragen wir zunächst abwelches Routermodell da im Einsatz ist+Falls wir uns nicht 100%ig sicher sind welches Router-Modell in Verwendung ist, kann man das mit dem folgenden Befehl abfragen (siehe dazu auch den [[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration#show-router-model|Gluon Administrationsguide]]): 
-   lua -e 'print(require("platform_info").get_model())'+  # lua -e 'print(require("platform_info").get_model())' 
 +  Extreme Networks WS-AP3825i 
 +   
 +Wir werden also erst einmal von der Firmwareseite das gewünschte Image unter **Upgrade** suchen: https://firmware.ffmuc.net/?q=Extreme%20Networks%20WS-AP3825i
  
-  Ubiquiti UniFiAP Outdoor++Anstatt die Datei downzuloaden, kann man den Link mit Rechtsklick auf "Link kopieren" kopieren.
  
-Wir werden uns also erst einmal von der Firmwareseite das gewünschte Image auf unseren Admin-Rechner herunterladen. +Anschließend kann führen wir das Update mit dem Befehl **sysupgrade** durch, wobei hier der Link von oben kopiert werden kann: 
-   wget https://firmware.ffmuc.net/experimental/sysupgrade/gluon-ffmuc-v2019.0.4~exp86-ubiquiti-unifiap-outdoor+-sysupgrade.bin+  echo 3 > /proc/sys/vm/drop_caches 
 +  sysupgrade https://firmware.ffmuc.net/stable/sysupgrade/gluon-ffmuc-v2022.10.5-extreme-networks-ws-ap3825i-sysupgrade.bin 
 +  
  
-Anschließend kopieren wir diese Date in das Zielverzeichnis //**/tmp**// auf unseren Freifunk-Knoten. +Siehe dazu auch [[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration#install-new-firmware-via-commandline|Gluon Administrationsguide]].
-   $ scp gluon-ffmuc-v2019.0.4~exp86-ubiquiti-unifiap-outdoor+-sysupgrade.bin ff_pliening_gbw_test:/tmp/+
  
-<code>############################################################################## 
-#                                                                            # 
-#      ╭∩╮( ͡° ل͟ ͡° )╭∩╮   This is not your server!   ╭∩╮( ͡° ل͟ ͡° )╭∩╮      # 
-#                                                                            # 
-#             Unauthorized access to this system is prohibited !             # 
-#                                                                            # 
-#    This system is actively monitored and all connections may be logged.    # 
-#         By accessing this system, you consent to this monitoring.          # 
-#                                                                            # 
-############################################################################## 
-gluon-ffmuc-v2019.0.4~exp86-ubiquiti-unifiap-outdoor+-sysupgrade.bin                                                                        100% 3968KB 211.7KB/  00:18     
-Killed by signal 1. 
-Killed by signal 1. 
-</code> 
  
-Bevor wir nun die Firmware installieren, leeren wir noch die caches auf dem Router, nachdem wir uns dort per SSH angemeldet haben. +=== Manuell ohne Internet am Router ===
-   ssh ff_pliening_gbw_od+
  
-   echo 3 > /proc/sys/vm/drop_caches+Falls wir uns nicht 100%ig sicher sind welches Router-Modell in Verwendung ist, kann man das mit dem folgenden Befehl abfragen (siehe dazu auch den [[https://github.com/freifunk-gluon/gluon/wiki/Commandline-administration#show-router-model|Gluon Administrationsguide]]): 
 +  # lua -e 'print(require("platform_info").get_model())' 
 +  Extreme Networks WS-AP3825i 
 +   
 +Die vorigen Beispiele setzen voraus, dass der Firmware-Server erreichbar ist. Alternativ ist es auch möglich das Firmware-Image manuell herunterladen bzw. auf den Router kopieren. Im folgenden Beispiel holen wir uns zuerst das Image auf unseren Admin-Rechner und kopieren es dann via ''scp'' auf den Router um es abschließend per Hand zu installieren.
  
-Zum Updaten verwenden wir den Befehl ''sysupgrade'' - bei Angabe der Option **_h** werden die möglichen Optionen angezeigt. +Wir werden uns also erst einmal von der Firmwareseite das gewünschte Image unter **Upgrade** auf unseren Admin-Rechner herunterladen: https://firmware.ffmuc.net/?q=Extreme%20Networks%20WS-AP3825i 
-   sysupgrade -h + 
-<code>Usage: /sbin/sysupgrade [<upgrade-option>...] <image file or URL> +Anschließend kopieren wir diese Date in das Zielverzeichnis //**/tmp**// auf unseren Freifunk-KnotenHier nutzen wir beispielsweise die IP 192.168.1.1 für den Knoten: 
-       /sbin/sysupgrade [-q] [-i] <backup-command> <file>+   $ scp gluon-ffmuc-v2022.10.5-extreme-networks-ws-ap3825i-sysupgrade.bin [email protected]:/tmp/new_sysupgrade_image.bin 
 + 
 + 
 +Bevor wir nun die Firmware installieren, leeren wir noch die caches auf dem Router, nachdem wir uns dort per SSH angemeldet haben. 
 +   $ ssh [email protected]
  
-upgrade-option: +   # echo 3 > /proc/sys/vm/drop_caches
- -f <config restore configuration from .tar.gz (file or url) +
- -i           interactive mode +
- -c           attempt to preserve all changed files in /etc/ +
- -n           do not save configuration over reflash +
- -p           do not attempt to restore the partition table after flash. +
- -T | --test +
-              Verify image and config .tar.gz but do not actually flash. +
- -F | --force +
-              Flash image even if image checks fail, this is dangerous! +
- -q           less verbose +
- -v           more verbose +
- -h | --help  display this help+
  
-backup-command: +Zum Updaten verwenden wir den Befehl ''sysupgrade''bei Angabe der Option **-h** werden die möglichen Optionen angezeigt.
- -b | --create-backup <file> +
-              create .tar.gz of files specified in sysupgrade.conf +
-              then exit. Does not flash an image. If file is '-'+
-              i.e. stdout, verbosity is set to 0 (i.e. quiet). +
- -r | --restore-backup <file> +
-              restore a .tar.gz created with sysupgrade -b +
-              then exit. Does not flash an image. If file is '-'+
-              the archive is read from stdin. +
- -l | --list-backup +
-              list the files that would be backed up when calling +
-              sysupgrade -b. Does not create a backup file.</code>+
  
 Das Update der Firmware stoßen wir nun wie folgt an. Das Update der Firmware stoßen wir nun wie folgt an.
-   sysupgrade /tmp/gluon-ffmuc-v2019.0.4~exp86-ubiquiti-unifiap-outdoor\+-sysupgrade.bin+  sysupgrade /tmp/new_sysupgrade_image.bin
  
-<code>Image metadata not found +<code>Saving config files... 
-Saving config files... +Commencing upgrade. Closing all shell sessions.</code> 
-Commencing upgrade. Closing all shell sessions. +
-Killed by signal 1. +
-Killed by signal 1. +
-packet_write_wait: Connection to UNKNOWN port 65535: Broken pipe</code> +
  
 ===== links ===== ===== links =====
  • knb/ssh.1605874986.txt.gz
  • Zuletzt geändert: 2020/11/20 12:23
  • von Django