Freifunk Nordwest

Das Bürgernetz im Nordwesten

Titelbild
31. Oktober 2021 20:10 Uhr von Simon
Fehlkonfiguration Firmware-Update 20210915 Wittmund Süd / Friesland West

Das westliche Friesland und das südliche Wittmund sind offline. Der Fehler verbirgt sich in einer fehlerhaften Konfiguration des Tunnelendpunkts im letzten Update.

Um einen Knoten wieder online zu bringen, ist ein manueller Eingriff notwendig, es gibt dafür verschiedene Möglichkeiten:
Option 1: Die Firmware Version 20211030 kann per manuellem Update installiert werden.
Option 2: Die Adresse des Tunnelendpunkts wird korrigiert.
Beide Möglichkeiten werden im folgenden Abschnitt beschrieben.

Reparatur

Repariert werden müssen Knoten, die selbst eine Internetverbindung haben (sollen). Knoten die eine Verbindung über einen anderen Knoten herstellen können, laden das Update automatisch herunter. Der Fehler wirkt sich bei diesen Knoten nicht weiter aus. Das bedeutet auch, dass du mit einem reparierten Knoten inklusive Internetanbindung andere Knoten in Reichweite automatisch reparierst. Das kann jeweils bis zu einer Stunde dauern, da der automatische Updateprozess stündlich gestartet wird. Eine Expertenanleitung, wie sich ein mobiler Update-Server auch offline realisieren lässt, findest du unten.

Option 1: Reparatur per Firmware-Upgrade im Config-Mode

Lade die aktuelle Firmware für dein Gerät herunter:
https://firmware.ffnw.de/l2tp/stable/sysupgrade/

Aktiviere den Config-Mode, indem du im laufenden Betrieb des Routers den (Reset-)Knopf ca. 10 Sekunden gedrückt hältst. Sobald der Router neu startet, lass den (Reset-)Knopf los.

Bist du per Kabel mit der LAN-Schnittstelle des Routers (z. B. die gelben Ports) verbunden, erreichst du die Konfiguration über http://192.168.1.1/. Über die erweiterten Einstellungen oben rechts findest du einen Reiter Update, in dem du die neue Firmware hochladen kannst. Lass das Häkchen gesetzt, um deine Einstellungen zu behalten.

Der Router schreibt die neue Firmware in seinen Speicher, startet neu und sollte wieder funktionsfähig sein.

Option 2: Reparatur des Tunnelendpunkts per SSH

sed -i -e 's/ffnw:9002/ffnw.de:9002/' /lib/gluon/domains/landkreis_wittmund_sued.json
uci set tunneldigger.mesh_vpn.address='wtm_sued01.sn.ffnw.de:9002'
uci commit tunneldigger
/etc/init.d/tunneldigger restart

Fehlerursache

In der Tunnelkonfiguration wird auf wtm_sued01.sn.ffnw ohne .de am Ende verwiesen. Dies verhindert eine Adressauflösung und der Aufbau des Tunnels ist nicht möglich. Wir können den Fehler leider nicht beheben, da die Knoten ein fehlerfreies Update nur über den Tunnel herunterladen würden. Auch können wir die fehlerhafte Adresse die auf .ffnw endet nicht geeignet hinzufügen, da diese keine öffentlich auflösbare Top-Level-Domain ist.

Finally …

Sollten in den Anleitungen Fehler enthalten sein, bitten wir um einen freundlichen Hinweis. Uns war es wichtig, schnell und umfangreich Hilfe zur Selbsthilfe zu leisten und haben die Anleitungen daher nicht mehrfach Korrektur gelesen und inhaltlich geprüft.

Solltest du Hilfe benötigen, melde dich gerne auf unserer Mailingliste nordwest@lists.ffnw.de.

Viel Erfolg!

Expertenanleitung: Einrichtung eines mobilen Update-Servers

Das folgende Verfahren ist hochgradig experimentell und erfordert gute Kenntnisse von OpenWrt bzw. Gluon. Benötigt wird ein mobiler, OpenWrt kompatibler Router mit USB-Anschluss für Speichermedien. Zur Erarbeitung dieser Anleitung wurde ein TP-Link TL-WR 902AC v3 eingesetzt. Der mobile Update-Server sollte nur zum Zweck der Reparatur eingesetzt werden, da für einen produktiven Einsatz falsche Netzwerkinformationen verteilt werden.

Alternativ kann auch ein reparierter Knoten, bspw. mit Firmware Version 20211030 mit einem mobilen Hotspot versorgt werden. Das ist ein deutlich einfacherer Ansatz. Du solltest bedenken, dass du für den Zeitraum der Reparatur alle verbundenen Freifunk-Knoten inklusive Clientnetzwerk über deinen mobilen Hotspot online bringst.

USB Storage

Diese Schritte folgen weitestgehend folgender Anleitung aus dem OpenWrt Wiki: https://openwrt.org/docs/guide-user/storage/usb-drives-quickstart

Die Formatierung und das Bereitstellen der Update-Images kann auch über ein anderes Gerät erfolgen.

USB Storge einrichten

opkg update && opkg install block-mount e2fsprogs kmod-fs-ext4 kmod-usb-storage kmod-usb2 kmod-usb3

USB Stick anschließen und ggf. das Gerät finden:

ls -al /dev/sd*

Das angezeigte Gerät ist in den folgenden Schritten statt sda1 zu verwenden.

Mit ext4 formatieren:

mkfs.ext4 /dev/sda1

fstab befüllen:

block detect | uci import fstab
uci set fstab.@mount[0].enabled='1' && uci set fstab.@global[0].anon_mount='1' && uci commit fstab
/etc/init.d/fstab boot

USB Storage befüllen

Dieser Abschnitt ist ggf. besser auf einem separaten Computer durchzuführen. Der opkg Befehl ist dann natürlich zu überspringen.

mkdir -p /mnt/sda1/v1/l2tp/stable

Update-Firmwares herunterladen:

opkg update && opkg install wget
wget --recursive --no-parent -nH --cut-dirs=3 --directory-prefix=/mnt/sda1/v1/l2tp/stable/ http://firmware.ffnw.de/l2tp/stable/sysupgrade/

Webserver vorbereiten / Statuspage auf Port 8080 umlegen

uci set uhttpd.firmware=uhttpd
uci set uhttpd.firmware.max_connections='100'
uci set uhttpd.firmware.network_timeout='30'
uci set uhttpd.firmware.http_keepalive='20'
uci set uhttpd.firmware.tcp_keepalive='1'
uci set uhttpd.firmware.home='/mnt/sda1'
uci set uhttpd.firmware.max_requests='32'
uci add_list uhttpd.firmware.listen_http='0.0.0.0:80'
uci add_list uhttpd.firmware.listen_http='[::]:80'
uci del_list uhttpd.main.listen_http='0.0.0.0:80'
uci del_list uhttpd.main.listen_http='[::]:80'
uci add_list uhttpd.main.listen_http='0.0.0.0:8080'
uci add_list uhttpd.main.listen_http='[::]:8080'
uci commit uhttpd

Update-Server, DNS und NTP announcen

uci set dhcp.autoupdate=domain
uci set dhcp.autoupdate.name='autoupdate-lede.ffnw'
uci set dhcp.autoupdate.ip="2a06:e881:2000:7::1"
uci set dhcp.ntp=domain
uci set dhcp.ntp.name='ntp.ffnw'
uci set dhcp.ntp.ip="2a06:e881:2000:7::1"
uci delete dhcp.@dnsmasq[0].server
uci commit dhcp
uci set system.ntp.enable_server='1'
uci delete system.ntp.server
uci commit system
echo "date -s \"2021-11-05 19:00:00\"" >/etc/rc.local
echo "ip a add 2a06:e881:2000:7::1/64 dev br-client" >>/etc/rc.local
echo "ip a add 2a06:e881:2000:8::1/64 dev br-client" >>/etc/rc.local
echo "/usr/sbin/uradvd -i br-client -p 2a06:e881:2000:7::/64 -p 2a06:e881:2000:8::/64" >>/etc/rc.local
echo "exit 0" >>/etc/rc.local
/etc/init.d/gluon-ebtables disable
/etc/init.d/gluon-radv-filtered disable
/etc/init.d/firewall disable

Client-Netzwerk umbenennen (optional)

uci set wireless.client_radio0.ssid='FreifunkMobileUpdate'
uci set wireless.client_radio0.owe_transition_ssid='FreifunkMobileUpdate OWE'
uci set wireless.client_radio1.ssid='FreifunkMobileUpdate'
uci set wireless.client_radio1.owe_transition_ssid='FreifunkMobileUpdate OWE'
uci commit wireless

Autoupdater deaktivieren, Setup-Mode verlassen und neustarten

uci set autoupdater.settings.enabled='0'
uci commit autoupdater
uci set gluon-setup-mode.@setup_mode[0].configured='1'
uci commit gluon-setup-mode
reboot

Das Ganze gibt es auch als fertiges Run’n’Play Script. Einfach den Knoten mit Firmware 20211030 fertig geflasht im Config-Mode anschließen und starten. Dein Rechner braucht sowohl eine Verbindung zum Knoten, als auch ins Internet. Anschließend muss der USB-Stick noch mit dem Inhalt des sysupgrade-Ordners der 20211030 befüllt werden.

Viel Erfolg! Fragen und Anmerkungen sende bitte über die Mailingliste.

Changelog

6. November 2021 14:38 Uhr - Ergänzung: Mobiler Update-Server