Kurzübersicht

Wir ersetzen auf den Access Points die Hersteller-Software durch die Freifunk-Firmware Gluon. Gluon basiert auf der Linux-Distribution OpenWRT.

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 und 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 ist klein, unkompliziert und zuverlässig und hat sich deswegen in den Anfangsjahren von Freifunk schnell als Standardlösung etabliert. 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.

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 SSL/TLS-verschlüsselt ist und eine zusätzliche Verschlüsselung des VPN-Tunnels an der rechtlichen Stellung des Betreibers des Freifunk-Access Points nichts ändert, haben wir deswegen beschlossen, zusätzlich zu L2TP auch weiterhin fastd anzubieten.

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 bei 2,4 GHz Kanal 5 und bei 5 GHz Kanal 44. Für das Meshing kommt der Standard 802.11s zum Einsatz.

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.

Stand Juli 2020 betreiben wir drei miteinander verbundene Gateway-Server (gw2, gw3 und gw4). Durch die hohe Redundanz gewährleisten wir hohe Ausfallsicherheit.

Jeder Gateway-Server hat GRE-Tunnel zu mehreren 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 Clients installiert.

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. 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 drohende 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 Konfiguration kannst du Firmware auch selbst bauen und auf deinem Access Point installieren.

Wenn du dazu einer der vielen Anleitungen im Internet benutzt, beachte 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 nur Firmwardateien für fastd erstellt, mit export VPN_TYPE=l2tp nur für L2TP.

Du kannst auch 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 benötigte Datei „config.env“ 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

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.

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.