freifunk: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
freifunk:ssh [22.07.2019 14:40. ]
django
— (aktuell)
Zeile 1: Zeile 1:
-====== Administration eines Freifunk-Knotens via SSH ====== 
-{{:freifunk:ffmuc_logo.png?nolink&150 |Bild: Freifunk München Logo}} Zur Administration unseres bzw. unserer Freifunk-Knoten verwenden wir die **SSH**(([[https://de.wikipedia.org/wiki/Secure_Shell|Secure SHell]])), da uns hier der volle Zugriff auf den Router gestattet, Konfigurationen im laufenden Betrieb vorzunehmen, Parameter abzufragen oder auch zusätzlich Programm zu starten. Viele hilfreiche Informationen rund um die SSH sind hier in Djangos WIKI im Kapitel [[https://dokuwiki.nausch.org/doku.php/centos:ssh_c7|Secure Shell]] zu finden. 
- 
-===== Vorbereitungen ===== 
-==== SSH-Key ==== 
-Für den Zugriff benötigen wir natürlich ein entsprechendes SSH-Schlüsselpaar, welches wir uns zunächst erstellen. 
-   ssh-keygen -b 4096 -t rsa -C django@nausch.org -f ~/.ssh/id_rsa4096_ff 
- 
-<code>Generating public/private rsa key pair. 
-Enter passphrase (empty for no passphrase):  
-Enter same passphrase again:  
-Your identification has been saved in /home/django/.ssh/id_rsa4096_ff. 
-Your public key has been saved in /home/django/.ssh/id_rsa4096_ff.pub. 
-The key fingerprint is: 
-44:8b:1a:de:ad:be:ef:23:af:65:b7:e6:1a:bf:98:3d django@nausch.org 
-The key's randomart image is: 
-+--[ RSA 4096]----+ 
-|      ...        | 
-|     o.o .       | 
-|    +.o o        | 
-|  ..+= .         | 
-|   ooo  S        | 
-|    + .+oF       | 
-|   +.. .         | 
-|  .  *E          | 
-|    ++=o         | 
-+-----------------+</code> 
- 
-==== 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 "nur" **IPv4**-Adressen Verwendung finden wir keinen zusätzlichen Sprunghost angeben müssen. 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 [[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 Sprunghost mit Namen **jumphost**, der natürlich auch eine entsprechende Konfiguration aufweist. 
-   vim ~/.ssh/config 
-<file bash ~/.ssh/config>Host jumphost 
-     Hostname 217.92.13.131 
-     Port 22 
-     User adminuser 
-     ForwardAgent yes 
-     Protocol 2 
-     IdentityFile ~/.ssh/id_ed25519 
- 
-Host ff_pliening_gbw_od 
-     Hostname [2001:608:a01:106:822a:a8ff:feea:fae3] 
-     Port 22 
-     User root 
-     Protocol 2 
-     IdentityFile ~/.ssh/id_rsa4096_ff 
- 
-Host ff_pliening_gbw_od-e 
-     Hostname [2001:608:a01:106:822a:a8ff:feea:fae3] 
-     Port 22 
-     User root 
-     Protocol 2 
-     IdentityFile ~/.ssh/id_rsa4096_ff 
-     ProxyJump jumphost 
-</file> 
- 
-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 //**/tmp**//-Verzeichnis kopieren, da sich der SCP-Aufruf entsprechend vereinfacht, Bsp.:  
-   scp firmware ff_pliening_gbw_od-e:/tmp 
- 
-Hier wird nun ohne manuelle Umwege Datei **firmware** in das //**/tmp**//-Verzeichnis des Routers **ff_pliening_gbw_od**. 
- 
- 
- 
-===== 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. 
-   uci 
-<code>Usage: uci [<options>] <command> [<arguments>] 
- 
-Commands: 
- batch 
- export     [<config>] 
- import     [<config>] 
- changes    [<config>] 
- commit     [<config>] 
- add        <config> <section-type> 
- add_list   <config>.<section>.<option>=<string> 
- del_list   <config>.<section>.<option>=<string> 
- show       [<config>[.<section>[.<option>]]] 
- get        <config>.<section>[.<option>] 
- set        <config>.<section>[.<option>]=<value> 
- delete     <config>[.<section>[[.<option>][=<id>]]] 
- rename     <config>.<section>[.<option>]=<name> 
- revert     <config>[.<section>[.<option>]] 
- reorder    <config>.<section>=<position> 
- 
-Options: 
- -c <path>  set the search path for config files (default: /etc/config) 
- -d <str>   set the delimiter for list values in uci show 
- -f <file>  use <file> as input instead of stdin 
- -m         when importing, merge data into an existing package 
- -n         name unnamed sections on export (default) 
- -N         don't name unnamed sections 
- -p <path>  add a search path for config change files 
- -P <path>  add a search path for config change files and use as default 
- -q         quiet mode (don't print error messages) 
- -s         force strict mode (stop on parser errors, default) 
- -S         disable strict mode 
- -X         do not use extended syntax on 'show' 
-</code> 
- 
-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='django@nausch.org' 
- 
-Alle Parameter einer Section kann man durch Angabe der ''Section'' anwählen.  
-   uci show gluon-node-info 
-<code>gluon-node-info.@location[0]=location 
-gluon-node-info.@location[0].share_location='1' 
-gluon-node-info.@location[0].altitude='504' 
-gluon-node-info.@location[0].latitude='48.198680689' 
-gluon-node-info.@location[0].longitude='11.798007488' 
-gluon-node-info.@owner[0]=owner 
-gluon-node-info.@owner[0].contact='django@nausch.org' 
-gluon-node-info.@system[0]=system</code> 
- 
-Alle Werte sind hierbei im Verzeichnis ''/etc/config/'' abgelegt. So kann man auch z.B. die //**gluon-node-info**// sich auch direkt in der zugehörigen Konfigurationsdatei ansehen. 
-   less /etc/config/gluon-node-info 
-<code> 
-config location 
- option share_location '1' 
- option altitude '504' 
- option latitude '48.198680689' 
- option longitude '11.798007488' 
- 
-config owner 
- option contact 'django@nausch.org' 
- 
-config system 
- 
- 
-</code> 
- 
- 
- 
-==== Anzahl verbundener Clients ==== 
-Zur Ausgabe der Anzahl der aktuell verbiundenen Clients verwendet man folgenden Aufruf: 
-   grep -cEo "\[.*W.*\]+" /sys/kernel/debug/batman_adv/bat0/transtable_local 
- 
-  3 
- 
-==== Gluon Release ==== 
-   cat /lib/gluon/release 
- 
-  v2019.0.3 
- 
-==== Gluon Version ==== 
-   cat /lib/gluon/gluon-version 
- 
-  v2018.2.1+ 
- 
-==== Router-Modell ==== 
-Zur Anzeige des verwendeten Router-Modells benutzt man den Befehl ''lua''. 
-   lua -e 'print(require("platform_info").get_model())' 
- 
-  TP-Link TL-WR940N v6 
- 
-==== 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 mesh_id 
- 
-  wireless.mesh_radio0.mesh_id='ffmuc-uml_ost-mesh' 
- 
-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='ffmuc-uml_ost-mesh' 
-  wireless.mesh_radio1.mesh_id='ffmuc-uml_ost-mesh' 
- 
-==== 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 
-   logread -h 
-<code>Usage: logread [options] 
-Options: 
-    -s <path> Path to ubus socket 
-    -l <count> Got only the last 'count' messages 
-    -e <pattern> Filter messages with a regexp 
-    -r <server> <port> Stream message to a server 
-    -F <file> Log file 
-    -S <bytes> Log size 
-    -p <file> PID file 
-    -h <hostname> Add hostname to the message 
-    -P <prefix> Prefix custom text to streamed messages 
-    -f Follow log messages 
-    -u Use UDP as the protocol 
-    -t Add an extra timestamp 
-    -0 Use \0 instead of \n as trailer when using TCP</code> 
- 
-So lassen sich z.B. mit der Option **-l 4** die letzten 4 Logmeldungen ausgeben. 
-   logread -l 4 
- 
-<code>Mon Jun  3 20:32:06 2019 daemon.info fastd[2316]: resolving host `gw02.ext.ffmuc.net' for peer <mesh_vpn_backbone_peer_gw02>... 
-Mon Jun  3 20:32:11 2019 daemon.info fastd[2316]: resolving host `gw02.ext.ffmuc.net' failed: Try again 
-Mon Jun  3 20:32:19 2019 daemon.info fastd[2316]: resolving host `gw01.ext.ffmuc.net' for peer <mesh_vpn_backbone_peer_gw01>... 
-Mon Jun  3 20:32:24 2019 daemon.info fastd[2316]: resolving host `gw01.ext.ffmuc.net' failed: Try again 
-</code> 
-Mit der Option **-f** wird das log fortlaufend angezeigt. 
-   logread -f 
-<code>Mon Jun  3 20:37:00 2019 user.notice ath9k-broken-wifi-workaround: node has no wifi, aborting. 
-Mon Jun  3 20:42:00 2019 user.notice ath9k-broken-wifi-workaround: node has no wifi, aborting. 
-... 
-</code> 
-===== Netzwerks- und Zustandsabfragen mit batctl ===== 
- 
-''**batctl**'' bietet unter anderem eine komfortable Möglichkeit, das batman-adv-Kernelmodul zu konfigurieren, um Debugging-Informationen wie Originatortabellen sowie Übersetzungstabellen und das Debug-Protokoll anzuzeigen. In der zugehörigen **[[https://downloads.open-mesh.org/batman/manpages/batctl.8.html|Manpage]]** findet man viele Beispiele und Erklärungen dazu.  
- 
-==== B.A.T.M.A.N.-ADV Version ==== 
-Welche B.A.T.M.A.N.-ADV Version  verwendet wir erfahren wir wie folgt. 
-   batctl o | grep adv 
- 
-  [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)] 
- 
-==== Statistiken ==== 
-Eine Statistikübersicht des laufenden Systems erhalten wir mit der Option **s**. 
-   batctl s 
-<code> tx: 77797 
- tx_bytes: 18491601 
- tx_dropped: 80 
- rx: 470476 
- rx_bytes: 329029050 
- forward: 575400 
- forward_bytes: 130076381 
- mgmt_tx: 1472475 
- mgmt_tx_bytes: 106155234 
- mgmt_rx: 2205028 
- mgmt_rx_bytes: 159350140 
- frag_tx: 16658 
- frag_tx_bytes: 13091663 
- frag_rx: 74130 
- frag_rx_bytes: 57501200 
- frag_fwd: 109 
- frag_fwd_bytes: 84629 
- tt_request_tx: 988 
- tt_request_rx: 1323 
- tt_response_tx: 161 
- tt_response_rx: 895 
- tt_roam_adv_tx: 20 
- tt_roam_adv_rx: 17 
- dat_get_tx: 0 
- dat_get_rx: 2631 
- dat_put_tx: 0 
- dat_put_rx: 896 
- dat_cached_reply_tx: 7</code> 
- 
-=== Gateways mit Bandbreitenangaben === 
-Die Option **gwl** zeigt alle erreichbaren Gateways mit aktueller Bandbreite im Freifunknetz 
-   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)] 
-  Router            ( throughput) Next Hop          [outgoingIf]  Bandwidth 
-  f2:00:22:07:00:0d (       18.9) 2e:74:66:bd:2d:29 [     mesh0]: 1024.0/1024.0 MBit 
-* f2:00:23:07:00:0d (     1000.0) 7a:a9:26:18:01:24 [  mesh-vpn]: 1024.0/1024.0 MBit</code> 
-   
-=== Liste aller Clients === 
-Eine Auflistung aller Clients im Freifunknetz sehen wir mit Angabe der Option **tg** 
-   batctl tg 
-<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)] 
-   Client             VID Flags Last ttvn     Via        ttvn  (CRC       ) 
-   01:00:5e:7f:ff:fa   -1 [....] (142) ca:10:5e:58:d1:7b (144) (0x7c4ea5d5) 
-   01:00:5e:7f:ff:fa   -1 [....] (152) 0a:2a:6b:7f:21:e3 (159) (0xf3c5a950) 
- 
-... 
-</code> 
-=== Summe aller WiFi-Nutzer im Netz === 
-Wollegn wir wissen wieviele der zuvor abgefragten Clients als WLAN-Nutzer eingebucht sind erweitern wir die vorherige Abfrage wie folgt. 
-   batctl tg | grep W | wc -l 
- 
-  99 
-   
-=== Liste der lokalen Nutzer === 
-Wollen wir eine Liste aller lokalen Nutzer sehen bemühen wir die Option **tl** beim Befehl ''batctl'' 
-   batctl tl 
-<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), TTVN: 107] 
-Client             VID Flags    Last seen (CRC       ) 
-30:b5:c2:86:4e:c0   -1 [.P....]   0.000   (0xb49fafa9) 
-30:b5:c2:86:4e:c0    0 [.P....]   0.000   (0x155ab5db) 
-33:33:00:00:00:02   -1 [.P....]   0.000   (0xb49fafa9) 
-33:33:ff:00:00:01   -1 [.P....]   0.000   (0xb49fafa9) 
-33:33:00:02:10:01   -1 [.P....]   0.000   (0xb49fafa9) 
-01:00:5e:00:00:01   -1 [.P....]   0.000   (0xb49fafa9) 
-33:33:ff:40:f7:dc   -1 [.P....]   0.000   (0xb49fafa9) 
-33:33:ff:86:4e:c0   -1 [.P....]   0.000   (0xb49fafa9) 
-00:87:01:fc:fb:e6   -1 [....W.] 345.370   (0xb49fafa9) 
-33:33:00:00:00:01   -1 [.P....]   0.000   (0xb49fafa9)</code> 
- 
-=== 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. 
-   batctl tl | grep W | wc -l 
- 
-  1 
- 
-=== 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. 
-   swconfig dev switch0 show | grep 'link:' 
-<code> link: port:0 link:up speed:1000baseT full-duplex txflow rxflow  
- link: port:1 link:up speed:1000baseT full-duplex auto 
- link: port:2 link:up speed:1000baseT full-duplex txflow rxflow auto 
- link: port:3 link:down 
- link: port:4 link:down 
- link: port:5 link:down 
- link: port:6 link:down</code> 
- 
- 
-===== Ändern von Konfigurationsdaten ===== 
-Möchte man einzelne Konfigurationsparameter ändern, verwenden wir wiederum 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. 
-   uci export network > /tmp/network.uci 
- 
-Zum Wiederherstellen (restore) geht man dann wie folgt vor. 
-   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// ''.''. 
-   scp ff_pliening_gbw_od:/tmp/network.uci . 
- 
-==== 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='django@nausch.org' 
- 
-Hier ändern wir nun die eMail-Adresse unseren Wünschen entsprechend ab. 
-   uci set gluon-node-info.@owner[0].contact='django@it.piratenpartei-bayern.de' 
-   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='django@it.piratenpartei-bayern.de' 
- 
-Auf der [[https://map.ffmuc.net/#!/en/map/30b5c25662b1|Karte von Freifunk München]] werden die geänderten Daten dann auch entsprechend ausgegeben. 
-{{ :freifunk:ff_001.png?nolink&350 |Bild: Bildschirmhardcopy des betreffenden Freifunk-Knotens auf der Karte}} 
- 
-==== 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. 
-   uci show | grep hostname 
- 
-  system.@system[0].pretty_hostname='ff_pliening_gbw_ug' 
-  system.@system[0].hostname='ffplieninggbwug' 
- 
-Diesen Wert ändern wir nun in einen etwas sprechenderen Namen ab. 
-   uci set system.@system[0].pretty_hostname='ff_pliening_gänsbrunnenweg_ug' 
-   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='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. 
-{{ :freifunk:ff_002.png?nolink&650 |Bild: Bildschirmhardcopy des betreffenden Freifunk-Knotens auf der Karte}} 
- 
-==== 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. 
- 
-Auf der Karte sucht man den gewünschten Kartenausschnitt und wählt das PIN-Icon rechts oben am Bildschirm an. {{:freifunk:ff_003.png?nolink&100|Bild: PIN-Icon zur Auswahl der Koordinaten auf der Freifunkkarte}} \\ Mit dem erscheinenden Fadenkreuz markieren wir dann die Stelle an dem der vorhandene Knoten zukünftig in der Karte erscheinen soll. In der linken Bildschirmhälfte erscheinen dann die Koordinaten und in dem Rahmen **Uci** auch direkt die benötigten Befehle zum Ändern der Konfiguration. 
-{{ :freifunk:ff_004.png?nolink&600 |Bild: Bildschirmhardcopy der Freifunkkarte mit ausgewählten Geo-Koordinaten}} 
-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.: 
-<code>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='48.198675325';uci set gluon-node-info.@location[0].longitude='11.798149645';uci commit gluon-node-info</code> 
-Nach kurzer Zeit wird dann der Router auf der Karte an der neuen gewünschten Stelle angezeigt. 
-{{ :freifunk:ff_005.png?nolink&600 |Bild: FReifunkkarte mit Anzeige der gewählten Nodes}} 
- 
-==== Knoten von der Knotenkarte entfernen ==== 
-Will man seinen Knoten, sei es weil man diesen anderweitig weiterverwenden oder weg-/weitergeben möchte, von der **[[https://map.ffmuc.net|Knotenkarte]]** löschen, gibt es leider aktuell keinen direkten Löschbutton auf der Knotenkarte. Würde man den Router einfach nur so abstecken, würde für bis zu sieben Tage auf der Karte ein roter Kreis erscheinen, was hinlänglich als Störung oder defekter Router mit Problemen gleichgesetzt wird.  
- 
-Daher empfiehlt es sich in einer solchen Situation den Node manuell von der Karte zu nehmen. 
-   uci set gluon-node-info.@location[0].share_location=0 
-   uci commit gluon-node-info 
- 
-Nach ein paar Minuten verschwindet der Router auf der Karte und wir können diesen nun abstecken und abbauen. 
- 
- 
-==== (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 //** ~/.ssh/config**// ausreichend hinterlegt haben, brauchen wir keine IP-Adressen und User angeben, sondern können direkt auf die betreffenden Nodes so zugreifen. 
- 
-Wir kopieren nun den Publickey des zweiten Admins in die Datei //**/etc/dropbear/authorized_keys**// und gehen dabei wie folgt vor: 
-   cat ~/.ssh/id_rsa_piraten.pub | ssh ff_pliening_gbw_ug 'cat >> /etc/dropbear/authorized_keys' 
- 
-==== Passwort-Login für Nutzer root deaktivieren ==== 
-<WRAP center round important 80%> 
-Dass bei der **SSH** eine Schlüsselbasierter Login einem Passwort gesichertem Zugriff vorzuziehen ist, gilt nicht nur für **[[centos:ssh_c7|Server]]** sondern sollte grundsätzlich unserem Grundverständnis an Sicherheit entsprechen. SSH-Zugang für den User **root** mit Passwort ist hinlänglich als **__nogo__** allgemeingültig er- und anerkannt. 
-</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. 
- 
-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//**. 
-   vim /etc/config/dropbear 
-<file bash /etc/config/dropbear>config dropbear 
-# Django : 2019-06-14 
-# default: option PasswordAuth 'on' 
-#          option RootPasswordAuth 'on' 
- option PasswordAuth 'off' 
- option RootPasswordAuth 'off' 
- option Port         '22' 
-# option BannerFile   '/etc/banner' 
-</file> 
-Anschließend starten wir den Router einmal neu, damit dieser die Konfigurationsänderung aktiviert. 
-   reboot 
- 
-Versuchen wir uns nun ohne passenden SSH-Key am Node anzumelden, erfolgt keine Passwort-Abfrage mehr und wir werden freundlich mit einem ''Permission denied (publickey).'' darauf hingewiesen, dass es //ohne Hände keine Kekse// mehr gibt, kurzum ohne SSH-Schlüssel ist kein Zugang mehr möglich, auch nicht mittels Passwort! 
- 
-   ssh root@2001:608:a01:102:da0d:17ff:feff:569e 
- 
-  Permission denied (publickey). 
- 
-<WRAP center round tip 75%> 
-Bei einem Update des Routers mit einer neuen Firmware werden diese Einstellungen überschrieben - wir müssen diese **Konfigurationsänderung** dann **__erneut__** vornehmen! 
-</WRAP> 
- 
- 
-==== Kanal-Belegung ==== 
-Normalerweise funkt unser Freifunk-WLAN-Router auf Kanal **6**. Ist dieser Kanal schon durch andere WLAN //überbelegt// bzw. haben wir zur Versorgung einer Halle mehrere Router am Start, kann es zweckmäßig sein, den vorbelegten Kanal **6** zu wechseln. 
- 
-Im folgenden Konfigurationsbeispiel wechseln wir zum Kanal **1**. 
-   uci set wireless.radio0.channel=1 
- 
-Dieser Befehl ändern "nur" den Kanal bis zum nächsten Neustart/reboot des Routers. Wollen wir die Kanaländerung resetfest machen führen wir nachfolgende Befehle aus. 
-   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-/Bandbreitenbegrenzung zweckmäßig sein. 
-In Nachfolgendem Beispiel beschreiben die Parameter ''ingress'' den Down- und ''egress'' den Upstream. Mit der Option ''enabled'' kann man die Bandbreitenbegrenzung einschalten in dem man den Wert auf **1** setzt, der Wert **0** deaktiviert wieder die Begrenzung der Bandbreite. 
-   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='25000' 
-   uci set simple-tc.mesh_vpn.limit_egress='5000' 
-   uci commit 
- 
-==== Sendeleistung anpassen ==== 
-Bei größeren Installationen, insbesondere bei Versorgung von größeren Arealen, Hallen oder auch Zelten kann es an gebracht sein, mit Hilfe der Sendeleistung einzelner Zellen eine gewisse Art Lastverteilung vorzunehmen. So würde es keinem helfen z.B. in einem großen Festzelt in jeder der vier Ecken einen Router aufzustellen, der dann das komplette Zelt überstrahlt. Durch Verringerung der Sendeleistung können einzelne Funkzellen verkleinert werden und somit die Anzahl gleichzeitig eingebuchter Clients  besser auf alle vier Sender verteilt werden. 
- 
-<WRAP center round alert 80%> 
-Bei der Veränderung der Sendeleistung ist in Deutschland zwingend darauf zu achten, dass **__nicht__** versehentlich die maximale abgestrahlte Sendeleistung (Sendeleistung **__plus__** ggf. vorhandene Antennen mit Richtwirkung) im Frequenzbereich 2,400 GHz - 2,4835 GHz von **100 mW** überschritten wird! 
-</WRAP> 
- 
- 
-Der für die Sendeleistung relevante Konfigurationsoption kann nun mit dem Befehl ''iwinfo radio0 txpower'' abgefragt werden. 
-   iwinfo radio0 txpower 
-<code>   0 dBm (   1 mW) 
-   1 dBm (   1 mW) 
-   2 dBm (   1 mW) 
-   3 dBm (   1 mW) 
-   4 dBm (   2 mW) 
-   5 dBm (   3 mW) 
-   6 dBm (   3 mW) 
-   7 dBm (   5 mW) 
-   8 dBm (   6 mW) 
-   9 dBm (   7 mW) 
-  10 dBm (  10 mW) 
-* 11 dBm (  12 mW) 
-  12 dBm (  15 mW) 
-  13 dBm (  19 mW) 
-  14 dBm (  25 mW) 
-  15 dBm (  31 mW) 
-  16 dBm (  39 mW) 
-  17 dBm (  50 mW) 
-  18 dBm (  63 mW) 
-  19 dBm (  79 mW) 
-  20 dBm ( 100 mW)</code> 
-Das gezeigte Beispiel zeigt nun die möglichen Einstellungen eines //**TP-Link CPE210 v1.0**//, die der verwendete Chipsatz/Sendeeinheit technisch mitbringt. der mit dem Stern gekennzeichnete Wert repräsentiert die aktuellen Einstellungen. Hier nochmals die eindringliche __**Warnung**__, nicht die Sendeleistung über die vorgegebenen 11 dBm (12 mW) erhöhen, da der Outdoor-Router über eine interne Richtantenne (Antennengewinn von **9dBi** laut [[https://static.tp-link.com/2019/201905/20190524/CPE%20series-Datasheet.pdf|Datenblatt]]) verfügt! 
- 
-In folgendem Beispiel wollen wir nun die Abgestrahlte Sendeleistung auf ~ 60 mW verringern- Wir stellen daher die Sendeleistung auf 9 dBm ein. 
-   uci set wireless.radio0.txpower=9 
-   uci commit 
-   wifi 
- 
-Eine erneute Abfrage zeigt nun den geänderten Wert: 
-   iwinfo radio0 txpower 
-<code>   0 dBm (   1 mW) 
-   1 dBm (   1 mW) 
-   2 dBm (   1 mW) 
-   3 dBm (   1 mW) 
-   4 dBm (   2 mW) 
-   5 dBm (   3 mW) 
-   6 dBm (   3 mW) 
-   7 dBm (   5 mW) 
-   8 dBm (   6 mW) 
-*  9 dBm (   7 mW) 
-  10 dBm (  10 mW) 
-  11 dBm (  12 mW) 
-  12 dBm (  15 mW) 
-  13 dBm (  19 mW) 
-  14 dBm (  25 mW) 
-  15 dBm (  31 mW) 
-  16 dBm (  39 mW) 
-  17 dBm (  50 mW) 
-  18 dBm (  63 mW) 
-  19 dBm (  79 mW) 
-  20 dBm ( 100 mW)</code> 
- 
-==== privates und verschlüsseltes WLAN ==== 
-Zusätzlich zu den beiden Freifunk WLAN-Netzen Client und Mesh, kann ein Router auch noch ein verschlüsseltes privates WLAN ausstrahlen, welches dann __nicht über__ Freifunk ausgeleitet wird, sondern lokal vor Ort in das lokale Netzwerk bzw. lokalen privaten Netzeinwahlknoten übergeben wird. 
- 
-=== Einrichtung === 
-In folgendem Konfigurationsbeispiel wollen wir dein privates WLAN mit der  
-  * **SSID=**//''privacy-is-not-acrime!''// und dem zugehörigen  
-  * **Privaten Schlüssel=**//''N3v3r-7ru57-the-g0vernment!''// einrichten. 
- 
-   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="privacy-is-not-acrime!" 
-   uci set wireless.wan_radio0.key="N3v3r-7ru57-the-g0vernment!" 
-   uci set wireless.wan_radio0.disabled=0 
-   uci commit 
-   wifi 
- 
-=== Deaktivierung === 
-Zur Deaktivierung dieses zuvor eingerichteten privaten WLANs nutzen wir folgende Befehle. 
-   uci set wireless.wan_radio0.disabled=1 
-   uci commit 
-   wifi 
- 
- 
- 
- 
-==== 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 trennt, werden wir die Sache etwas eleganter lösen. 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 
-# Script zum (De-)Aktivieren der unterschiedlichen Client-WLANs 
- 
-# $1 : erste uebergebene Variable : 
-#                                   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 
-if [ $2 = "off" ] ; then 
-   if [ $1 = "2" ] ; then 
-      uci set wireless.client_radio0.disabled=1  
-   elif [ $1 = "5" ] ; then 
-      uci set wireless.client_radio1.disabled=1 
-   else  
-      uci set wireless.wan_radio0.disabled=1 
-   fi 
-fi 
- 
-# WLAN(s) einschalten 
-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 
-uci commit wireless 
-wifi 
-</file> 
- 
-Das Script statten wir zum Aufruf mit den entsprechenden **x**-Rechten aus. 
-   chmod +x /root/stop_wlan.sh 
- 
-Wollen wir nun ein WLAN 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 usercrontab 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 und das private verschlüsselte WLAN um 00:00 Uhr ausgeschaltet, sowie alle drei frühmorgens um 6:45 Uhr alle drei WLANs wieder eingeschaltet. 
- 
- 
-==== Zugangs zum Clientnetz begrenzen - Clients MAC-basiert aussperren ==== 
-Bis weilen 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 den Schutz anderer Nutzer vor Störungen.  
- 
-<WRAP center round alert 90%> 
-**WICHTIG**: \\ 
-Eine derartige Beeinflussung/Beschränkung muss wohl überlegt und wohl durchdacht und begründet sein, denn die widerspricht eindeutig den **[[https://ffmuc.net/nutzungsbedingungen/|Freifunk Nutzungsbedingungen]]**: \\ 
-  - **Freier Transit** : \\ EigentümerInnen bestätigen, freien Transit über ihre freie Netzwerkinfrastruktur anzubieten. EigentümerInnen bestätigen, die Daten, die seine freie Netzwerkinfrastruktur passieren, weder störend zu beeinträchtigen noch zu verändern. 
-</WRAP> 
- 
-Im folgenden Beispiel werden die Clients mit den MAC-Adressen **00:11:22:33:44:55** und **00:11:DE:AD:BE:EF** beim 2,4 GHz WLAN ausgesperrt. 
-   uci set wireless.client_radio0.macfilter=deny 
-   uci set wireless.client_radio0.maclist='00:11:22:33:44:55 00:11:DE:AD:BE:EF' 
-   uci commit 
-   /etc/init.d/network restart 
- 
-Hat man neben dem 2,4 GHz einen Router der ein 5 GHz WLAN ausstrahl, muss man auch noch ''radio1'' berücksichtigen. 
-   uci set wireless.client_radio1.macfilter=deny 
-   uci set wireless.client_radio1.maclist='00:11:22:33:44:55 00:11:DE:AD:BE:EF' 
-   uci commit 
-   /etc/init.d/network restart 
- 
-Mehrere MAC-Adressen werden hierbei einfach, wie in diesem Konfigurationsbeispiel zu sehen, durch ein Leerzeichen getrennt. 
- 
-Zum Entsperren einer hinterlegten MAC-Adresse löscht man diese einfach aus dem Parameter ''maclist'', also in obigen Beispielen würde man zum Entsperren des Clients **00:11:DE:AD:BE:EF** diese löschen und nur noch die **00:11:22:33:44:55** als zu sperrende MAC-Adresse angeben: 
-   uci set wireless.client_radio0.maclist='00:11:22:33:44:55' 
-   uci set wireless.client_radio1.maclist='00:11:22:33:44:55' 
-   uci commit 
-   /etc/init.d/network restart 
- 
-Will man die definierten Optionen wieder gänzlich löschen, lässt man die Parameter-Angaben leer. 
-   uci set wireless.client_radio0.macfilter='' 
-   uci set wireless.client_radio0.macfilter='' 
-   uci set wireless.client_radio0.maclist='' 
-   uci set wireless.client_radio1.maclist='' 
-   uci commit 
-   /etc/init.d/network restart 
- 
-==== manuelle Segmentauswahl ==== 
-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 hinterlegte GeoDaten und auch umliegender WLAN-Access-Points erfolgt die Segmentauswahl vollautomatisch und kann bei weiterem Anwachsen von Freifunkknoten weiter aufgeteilt werden.  
- 
-Aktuell((Stand Anfang Juni 2019)) gibt es folgende Segmente: 
-^ SSID                            ^ Segment-Name    ^ IPv4-Prefix      ^ IPv6-Prefix             ^ 
-| muenchen.freifunk.net/muc_cty   | ffmuc_muc_cty   | 10.80.128.0/21   | 2001:608:a01:100::/64   | 
-| muenchen.freifunk.net/muc_nord  | ffmuc_muc_nord  | 10.80.136.0/21   | 2001:608:a01:101::/64   | 
-| muenchen.freifunk.net/muc_ost   | ffmuc_muc_ost   | 10.80.144.0/21   | 2001:608:a01:102::/64   | 
-| muenchen.freifunk.net/muc_sued  | ffmuc_muc_sued  | 10.80.152.0/21   | 2001:608:a01:103::/64   | 
-| muenchen.freifunk.net/muc_west  | ffmuc_muc_west  | 10.80.160.0/21   | 2001:608:a01:104::/64   | 
-| muenchen.freifunk.net/uml_nord  | ffmuc_uml_nord  | 10.80.168.0/21   | 2001:608:a01:105::/64   | 
-| muenchen.freifunk.net/uml_ost   | ffmuc_uml_ost   | 10.80.176.0/21   | 2001:608:a01:106::/64   | 
-| muenchen.freifunk.net/uml_sued  | ffmuc_uml_sued  | 10.80.184.0/21   | 2001:608:a01:107::/64   | 
-| muenchen.freifunk.net/uml_west  | ffmuc_uml_west  | 10.80.192.0/21   | 2001:608:a01:108::/64   | 
-| muenchen.freifunk.net/welt      | ffmuc_welt      | 10.80.200.0/21   | 2001:608:a01:109::/64   | 
-| muenchen.freifunk.net/gauting   | ffmuc_gauting   | 10.80.208.0/21   | 2001:608:a01:10a::/64   | 
-| muenchen.freifunk.net/freising  | ffmuc_freising  | 10.80.216.0/21   | 2001:608:a01:10b::/64   | 
- 
-Will man in Erfahrung bringen welche Segmente aktuell zur Verfügung gestellt werden, kann man diese mit Hilfe des Folgenden Aufrufs abfragen. 
-   ls /lib/gluon/domains | cut -f1 -d "." 
- 
-  ffmuc_freising 
-  ffmuc_gauting 
-  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 
- 
-Den aktuellen Segmentdefinition kann man mit folgendem Befehl abfragen: 
-   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. 
-   uci set gluon.core.domain='ffmuc_uml_ost' 
-   uci commit gluon 
-   gluon-reconfigure 
-   reboot 
- 
-==== Passthrough-Port des TP-Link CPE ==== 
-Ein TP-Link CPE210 bietet neben seinem Uplink-Ethernet-Port noch einen weiteren sog. Passthrough-Port //LAN1// zur Verfügung. Über diesen Ethernet-Port kann ein weiteres Gerät versorgt werden.  
- 
-<WRAP center round important 60%> 
-Es wird jedoch **nicht** der WAN-Port „durchgeschliffen“ sondern das Freifunk Client-Netz! 
-</WRAP> 
- 
-Die aktuellen Einstellungen können wir hierzu folgender Maßen abfragen: 
-   uci show system.poe_passthrough 
- 
-  system.poe_passthrough=gpio_switch 
-  system.poe_passthrough.name='PoE Passthrough' 
-  system.poe_passthrough.gpio_pin='20' 
-  system.poe_passthrough.value='0' 
- 
-=== Aktivierung === 
-Zum Aktivieren des Passthrough-Port gehen wir wie folgt vor: 
-   uci set system.poe_passthrough.value='1' 
-   uci commit system 
- 
-=== Deaktivierung === 
-Wollen wir den Port von der Ferne aus deaktivieren setzen wir die Option **system.poe_passthrough.value='0'**. 
-   uci set system.poe_passthrough.value='0' 
-   uci commit system 
- 
-==== 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://192.168.1.1 zuzugreifen, verwendet man folgenden Aufruf. 
-   uci set "gluon-setup-mode.@setup_mode[0].enabled=1" 
-   uci commit 
-   reboot 
- 
-==== Routerkonfiguration komplett löschen / zurücksetzen ==== 
-Möchte man den Router in den Anfangszustand zurücksetzen, also die vorhandene Konfiguration komplett löschen, geht man wir folgt vor. 
-   firstboot 
-   reboot 
- 
-Anschließend ist der Router wieder zurückgesetzt und kann über die GUI erreichbar unter http://192.168.1.1 die Konfiguration auf einem neuen "leeren" Router beginnen. 
-  
- 
-===== 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/ 
-  * **experimental** : Hier werden brandaktuelle Neuerungen eingebaut und daher kann eine 100%ige Gewähr übernommen werden, ob auch wirklich alle Funktionen den gewünschten Erfolg bringen, bzw. auch alle bugfixes die bekannten Fehlfunktionen eliminiert haben. 
-  * **testing** Bevor eine Firmware großflächig im Releasezweig stable ausgerollt, wird diese von einem größeren Testfeld auf Herz und Nieren getestet. 
-  * **stable** : Wie der Name schon andeutet, ist dies der Releasezweig, der in aller Regel bei produktiven Umgebungen zum Einsatz kommen wird. 
- 
-==== Releasezweig abfragen ==== 
-Den aktuell eingestellten Releasezweig können wir mit Hilfe des nachfolgenden Befehls abfragen. 
-   uci show autoupdater.settings 
-<code>autoupdater.settings=autoupdater 
-autoupdater.settings.enabled='1' 
-autoupdater.settings.branch='experimental' 
-autoupdater.settings.version_file='/lib/gluon/release'</code> 
- 
-Der Router würde also demnach bei einem Update des Releasezweigs //experimental// sich automatisiert eine neue Firmware laden. Dies sollte man i.d.R. nur dann machen, wenn man auch wirklich weiss was man da macht und wenn man einen kurzen Draht zu den Firmewarecoreentwicklern hat. 
- 
-==== Releasezweig/Branch setzen ==== 
-Will man den Firmwarezweig manuell dauerhaft ändern setzen wir den Branch entsprechend z.B. auf die option **stable**. 
-   uci set autoupdater.settings.enabled='1' 
-   uci set autoupdater.settings.branch='stable' 
-   uci commit autoupdater 
- 
-Eine erneute Abfrage zeigt nun, dass der Branch **stable** künftig verwendet wird. 
-   uci show autoupdater.settings.branch 
- 
-  autoupdater.settings.branch='stable' 
- 
-==== Update manuell forcieren ==== 
-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 
-<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. 
-   autoupdater -f 
- 
-  Retrieving manifest from http://[2001:608:a01::27]/stable/sysupgrade//stable.manifest ... 
-  No new firmware available. 
- 
-Durch Angbane des Branches kann man unabhängig vom konfigurierten Releasezweig eine spezielle Firmware installieren. Im folgenden Beispiel erzwingen wir den Firmwareupdate aus dem Zweig //experimantal//. 
-   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. 
- 
-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 ab, welches Routermodell da im Einsatz ist. 
-   lua -e 'print(require("platform_info").get_model())' 
- 
-  Ubiquiti UniFiAP Outdoor+ 
- 
-Wir werden uns also erst einmal von der Firmwareseite das gewünschte Image auf unseren Admin-Rechner herunterladen. 
-   wget https://firmware.ffmuc.net/experimental/sysupgrade/gluon-ffmuc-v2019.0.4~exp86-ubiquiti-unifiap-outdoor+-sysupgrade.bin 
- 
-Anschließend kopieren wir diese Date in das Zielverzeichnis //**/tmp**// auf unseren Freifunk-Knoten. 
-   $ 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. 
-   ssh ff_pliening_gbw_od 
- 
-   echo 3 > /proc/sys/vm/drop_caches 
- 
-Zum Updaten verwenden wir den Befehl ''sysupgrade'' - bei Angabe der Option **_h** werden die möglichen Optionen angezeigt. 
-   sysupgrade -h 
-<code>Usage: /sbin/sysupgrade [<upgrade-option>...] <image file or URL> 
-       /sbin/sysupgrade [-q] [-i] <backup-command> <file> 
- 
-upgrade-option: 
- -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: 
- -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. 
-   sysupgrade /tmp/gluon-ffmuc-v2019.0.4~exp86-ubiquiti-unifiap-outdoor\+-sysupgrade.bin 
- 
-<code>Image metadata not found 
-Saving config files... 
-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 ===== 
-//**[[start|zurück zur Freifunk-Startseite hier im WIKI]]**// 
- 
  
  • freifunk/ssh.1563806448.txt.gz
  • Zuletzt geändert: 22.07.2019 14:40.
  • von django