Kurzübersicht

Wir ersetzen auf den Access Points die Hersteller-Software durch die Freifunk-Firmware Gluon. Gluon basiert auf der Linux-Distribution OpenWRT, die auch von vielen Unternehmen für Netzwerkprodukte verwendet wird.

Ein Kernbestandteil von Gluon ist das Meshing: Access Points, die sich in gegenseitiger WLAN-Reichweite befinden oder per Netzwerkkabel miteinander verbunden sind, können automatisch die Internetverbindung der anderen Access Points nutzen.

Gluon sorgt außerdem dafür, dass die Access Points mit eigenem Internetanschluss einen VPN-Tunnel zu unseren Gateway-Servern aufbauen und für jeglichen Datenverkehr ins Internet verwenden.

Die Daten werden von unseren Gateway-Servern weitergeleitet zu den Servern von Freifunk Rheinland. Freifunk Rheinland ist als Internetprovider registriert und betreibt an den großen deutschen Internetknoten wie Frankfurt, Düsseldorf und Berlin sogenannte Exit-Nodes, von denen aus der Datenverkehr der Access Points schließlich ins Internet gelangt.

IP-Adressen

Endgeräte, die sich mit einem Access Point verbinden, erhalten eine nichtöffentliche IPv4-Adresse durch unsere Gateways sowie eine öffentliche IPv6-Adresse aus dem Adressbereich von Freifunk Rheinland.

Mesh-Netzwerk

Alle Access Points in unserem Freifunk-Netz sind durch ein Mesh-Netzwerk miteinander verbunden, über das der komplette Datenverkehr abgewickelt wird.

Access Points mit eigenem Internetzugang treten dem Mesh-Netzwerk über die VPN-Verbindung zu unseren Gateways bei. Access Points, die sich gegenseitig per WLAN erreichen können, verbinden sich untereinander per IEEE 802.11s. Auf diese Weise werden Access Points auch ohne eigenen Internetzugang in das Mesh-Netzwerk integriert, können über andere Access Points unsere Gateway-Server erreichen und Internet zur Verfügung stellen.

Außer über WLAN können sich Access Points auch über Netzwerkkabel verbinden („Mesh on LAN“): Dazu einfach zwei oder mehr Access Points über ihre LAN-Ports miteinander verbinden.

Für das effiziente Routing im Mesh-Netzwerk wird das Routingprotokoll B.A.T.M.A.N. verwendet.

VPN-Tunnel

Die Access Points verwenden für die Verbindung zu unseren Gateway-Servern je nach installierter Firmwarevariante das VPN-Tunnelprotokoll fastd oder L2TP.

fastd

Fastd ist klein, unkompliziert und zuverlässig und hat sich deswegen in den Anfangsjahren von Freifunk schnell als Standardlösung etabliert. Mit fastd aufgebaute VPN-Tunnel sind außerdem zusätzlich verschlüsselt.
Leider läuft fastd im Userspace und ist deswegen, anders als der Name suggeriert, ziemlich langsam. Günstige Access Points erreichen damit nur einen VPN-Durchsatz von etwa 10MBit/s.

L2TP

Seit einigen Jahren existiert als Alternative L2TP: L2TP läuft direkt im Linux-Kernel und erreicht so auf identischer Hardware einen etwa 4x so hohen VPN-Durchsatz wie fastd. Freifunk Ingolstadt bietet seit Juni 2020 L2TP an.

VPN-Tunnel mit L2TP sind im Gegensatz zu fastd-VPN-Tunneln nicht verschlüsselt, d.h. der Internetanbieter hat theoretisch die (illegale) Möglichkeit herauszufinden, welche Daten über den VPN-Tunnel zwischen Access Point und unseren Gateway-Servern übertragen werden. Obwohl der Internetverkehr heutzutage größtenteils ohnehin SSL/TLS-verschlüsselt ist und eine zusätzliche Verschlüsselung des VPN-Tunnels an der rechtlichen Stellung des Freifunk-Access Point-Aufstellers nichts ändert, haben wir deswegen beschlossen, zusätzlich zu L2TP auch weiterhin fastd anzubieten.

Wireguard

Mittelfristig wollen wir fastd durch Wireguard ersetzen. Wireguard ist etwa doppelt so schnell wie fastd und halb so schnell wie L2TP, der Tunnel ist jedoch zusätzlich verschlüsselt.

WLAN

Damit sich die Access Points per WLAN für das Mesh-Netzwerk miteinander verbinden können, müssen alle Access Points die selben WLAN-Kanäle benutzen. Wir verwenden auf 2,4 GHz Kanal 5 und auf 5 GHz Kanal 44. Für das Meshing kommt der Standard IEEE 802.11s zum Einsatz.

Auf 5 GHz verwenden wir Opportunistic Wireless Encryption (OWE) bzw. Enhanced Open im Transition Mode. OWE-kompatible Endgeräte nutzen damit automatisch das Freifunk-WLAN verschlüsselt, alle anderen Geräte unverschlüsselt.

Wir benutzen, wie die meisten Freifunk-Communities, die SSID „Freifunk“. Hat ein Access Point keine Verbindung zu unseren Gateways, wird die SSID automatisch geändert auf „Freifunk offline“.

Gateway-Server

Jeder Access Point verbindet sich per VPN-Tunnel zu einem unserer Gateway-Server. Jeder Gateway-Server hat GRE-Tunnel zu mehreren deutschlandweit verteilten Exit-Nodes von Freifunk Rheinland, die für den Internetdatenverkehr verwendet werden. Auf jedem Gateway-Server ist ein DNS-Resolver für die Namensauflösung und ein DHCPv4-Server für Zuteilung von IPv4-Adressen an die Endgeräte installiert.

Stand August 2021 betreiben wir drei miteinander verbundene Gateway-Server. Durch die hohe Redundanz gewährleisten wir hohe Ausfallsicherheit.

Die Gateway-Server laufen unter Debian-Linux. Um Installation und Konfiguration erfolgt mit Hilfe von Ansible. Damit stellen wir sicher, dass Änderungen dokumentiert und nachvollziehbar sind. Unsere Ansible-Rollen findest du hier: https://git.bingo-ev.de/freifunk/Ansible-Freifunk-Gateway, das Inventory hier: https://git.bingo-ev.de/freifunk/ansible-ffin. Die Konfiguration der Server basiert auf dem Setup von Freifunk Münsterland, einer mit fast 5000 Access Points sehr großen Freifunk-Community, mit deren Administratoren wir intensiv zusammenarbeiten.

Webseiten

Die Webseite zur Firmware-Auswahl (https://firmware.freifunk-ingolstadt.de) verwendet den Firmware-Selector von Freifunk Darmstadt.

Unsere Freifunk-Karte (https://map.freifunk-ingolstadt.de) benutzt Meshviewer von Freifunk Regensburg. Die dort angezeigten Statistiken (Anzahl der Nutzer, Durchsatz usw.) werden von https://grafana.freifunk-ingolstadt.de eingebettet und durch Grafana erzeugt. Die dazu benötigten Daten werden durch Yanic, entwickelt von Freifunk Bremen, im Mesh-Netzwerk gesammelt und in einer InfluxDB abgelegt.

Für die Freifunk-App und Webseiten wie freifunk.net und freifunk-karte.de stellen wir Informationen zu unserer Community mit Hilfe der Freifunk-API über https://api.freifunk-ingolstadt.de/api.json bereit.

All diese Dienste werden in Docker-Containern gestartet und über einen Nginx-Reverse-Proxy publiziert. Für die TLS-Verschlüsselung verwenden wir Zertifikate von Let’s Encrypt. Die Docker-Compose-Konfiguration für alle Webseiten (außer dieser) findest du hier: https://git.bingo-ev.de/freifunk/mapserver-docker. Die Installation erfolgt, wie üblich, per Ansible.

Diese Webseite läuft auf einer WordPress-Installation des Bingo e.V.

Monitoring

Um Probleme rechtzeitig zu erkennen, überwachen wir unsere Server mit Icinga2. Icinga2 prüft in regelmäßigen Abständen Server, Dienste und Netzverbindungen. Sobald Icinga2 eine Anomalie feststellt, werden die Administratoren von Freifunk Ingolstadt informiert.

Die Konfiguration von Icinga2 erfolgt über Ansible.

Firmware

Gluon

Wir verwenden das auf OpenWRT basierende Gluon als Betriebssystem (Firmware) für die Access Points.

Gluon wird speziell für Freifunk entwickelt und muss nur für die jeweilige Community konfiguriert werden.
Die Konfiguration umfasst im Wesentlichen die verwendeten IP-Adressbereiche, das Protokoll für die VPN-Tunnel, Adressen und Ports der Gateway-Server und die Auswahl der Softwarepakete, die auf den Access Points installiert werden sollen. Die Konfiguration ist in der Gluon-Dokumentation beschrieben. Unsere Konfiguration findest du hier: https://git.bingo-ev.de/freifunk/ffin-site.

Neue Gluon-Versionen enthalten neben Bugfixes und Verbesserungen auch Unterstützung für neue Access Point-Modelle. Wir veröffentlichen daher regelmäßig aktualisierte Firmware. Damit ein Firmwareupdate automatisch auf den Access Points installiert wird, muss die Firmware von mehreren unserer Administratoren freigegeben und elektronisch signiert werden.

Firmware selbst erstellen

Mit Hilfe des Gluon-Quellcodes und unserer „Site“-Konfiguration kannst du Firmware auch selbst bauen und auf deinem Access Point installieren.

Obacht: Wenn du selbst gebaute Firmware einsetzt und den Autoupdater eingeschaltet lässt, wird dein Access Point automatisch wieder unsere offizielle Firmware installieren, sobald wir Firmware veröffentlichen deren Versionsnummer höher ist als die deiner Firmware.

Zum Bauen der Firmware kannst du unseren Docker-basierten Gluon-Image-Builder verwenden. Wenn du damit z.B. Firmware-Images mit Gluon v2020.1.3 für fastd als auch Images für L2TP erstellen willst, sieht die dafür benötigte „config.env“-Datei so aus:

GLUON_GIT_URL=https://github.com/freifunk-gluon/gluon.git
GLUON_GIT_BRANCH=v2020.1.3
SITE_GIT_URL=https://git.bingo-ev.de/freifunk/ffin-site.git
SITE_GIT_BRANCH=master
VPN_TYPES=fastd l2tp

Alternativ zu unserem Gluon-Image-Builder kannst du auch einer der vielen Anleitungen im Internet benutzten. Beachte dabei bitte, dass unsere Konfiguration eine Besonderheit aufweist: Anders als andere Communities verwenden wie die selben Konfigurationsdateien für die fastd- und die L2TP-Firmware. Welche Firmware daraus gebaut wird entscheidest du, indem du vor dem Compilieren die Umgebungsvariable „VPN_TYPE“ setzt: Mit export VPN_TYPE=fastd werden Firmwaredateien für fastd erstellt, mit export VPN_TYPE=l2tp für L2TP.

Mehr Informationen

Mehr Informationen zur bei Freifunk verwendeten Technik findest du auf den Seiten von freifunk.net. Eine weitere nützliche Informationsquelle ist das Freifunk-Forum, das auch zum Erfahrungsaustausch zwischen den einzelnen regionalen Communities benutzt wird.

Wenn du so weit gelesen hast würden wir uns freuen, dich bei unserem Treffen begrüßen zu dürfen – wir beantworten aber auch Fragen per E-Mail an ff@bingo-ev.de.