Freifunk Fulda/Netz
Dieser Artikel versucht einen Überblick über unser Freifunk Netz zu geben. Da das Netz groß ist und eine Menge verschiedener Technologien nutzt, ist es schwierig, alle Informationen knapp in nur einem Artikel darzustellen. Aus diesem Grund wird hier zuerst ein Überblick verschafft und für Details auf weitere Artikel verwiesen. Da unser Netz ständig im Wandel ist, sind nicht alle Informationen zu jeder Zeit ganz aktuell.
Inhaltsverzeichnis
Übersicht
Ein Freifunk-Netz verwendet WLAN, um Freifunk-Knoten (handelsübliche WLAN-Router) untereinander zu verbinden. Dadurch ist es möglich, Haushalte, Cafes und öffentliche Plätze über einige Entfernung und ohne Kabel oder die Notwendigkeit eines Internetanschlusses miteinander zu verbinden.
Da nicht alle Freifunk-Knoten einer Stadt immer in WLAN-Reichweite zueinander sind (und weil Menschen gerne auch Internetzugang haben), können Freifunk-Knoten auch eine VPN-Verbindung über das Internet zu unseren Gateway-Servern aufbauen. Vereinfacht kann man sagen, dass es innerhalb des VPN-Tunnel für die Freifunk-Knoten so aussieht, als wären sie direkt per WLAN miteinander verbunden.
Da wir die Nutzer der Freifunk-Knoten nicht direkt mit der IP-Adresse des Betreibers des Knoten surfen lassen wollen (etwa wegen Haftungsfragen bei Urheberrechtsverletzungen), leiten wir sämtlichen Datenverkehr, der nicht für Ziele innerhalb des Mesh-Netzes gedacht ist, über unsere Gateway-Server ins Internet. Es scheint also, als ob die Gateways der Urheber des Datenverkehrs wären (wieder sehr vereinfacht ausgedrückt).
Die Gateways erlauben uns außerdem die Verbindung mit anderen Freifunk Communities in anderen Städten (zu denen wir keine Funkverbindung haben). Dazu nutzen wir ebenfalls VPN-Techniken.
WLAN-Mesh Netz
Das WLAN-Mesh ist die nativste Form von Freifunk in unserem Netz. Ein Mesh-Netzwerk stellt eine Verbindung von Knoten (bei uns die Freifunk-WLAN-Router) untereinander dar. Alle Knoten, die einen anderen Knoten sehen verbinden sich mit diesem. Es entsteht ein teilweise (bis hin zu vollständig) vermaschtes Netz.
Für das Mesh-Netz verwenden wir die physikalische WLAN-Karte nicht wie in den meisten normalen WLANs im Infrastruktur-Modus, sondern im sog. Ad-Hoc Modus. Hier setzen wir ein Routing Protokoll namens B.A.T.M.A.N. ein, das es uns erlaubt, Datenverkehr der Nutzer dynamisch durch das Netz zu leiten. Die Pakete der Nutzer können sich über verschiedene Wege zum Ziel bewegen und Ausfälle einzelner WLAN-Router führen einfach dazu, dass die Daten über eine andere Verbindung laufen (falls vorhanden). B.A.T.M.A.N. kümmert sich dabei um die Wegfindung, indem Routen unter den Knoten ausgetauscht werden.
Das schöne ist, dass das ganze völlig autonom funktioniert. Ein Mensch kann auf eine abgelegene Wiese (auf der beispielsweise ein Festival stattfindet) gehen und dort über das Gelände mehrere (z.B. batteriebetriebene) Freifunk-Knoten aufstellen. Die Knoten werden sich untereinander verbinden und ein WLAN-Mesh Netz bilden. Nutzer können sich mit ihren Notebooks, Tablets und Smartphones im WLAN anmelden und sofort miteinander kommunizieren. Natürlich gibt es keinen Internetzugriff, aber es ermöglicht den Aufbau völlig autonomer und konfigurationsfreier Netze.
Die Konfigurationsfreiheit ist zur Zeit nur durch die Nutzung von IPv6 möglich, was das präferierte IP-Protokoll in unserem Netz ist (auch wenn es sich im Internet leider viel zu langsam durchsetzt). Dies stellt aber kein Problem dar, da alle Clients heute mit IPv6 umgehen können.
VPN-Mesh Netz
Falls Internetzugang vorhanden ist, besteht die Möglichkeit, einen Freifunk-Knoten mit dem Internet zu verbinden. Der Knoten nutzt dann eine VPN-Technologie für Mesh-VPN Netze namens fastd, um sich mit unseren Gateway-Servern zu verbinden. Die Entscheidung für fastd (z.B. gegenüber OpenVPN) hängt an dieser Stelle mit der Effizienz zusammen. Auf den kleinen WLAN-Routern ist weder viel Speicherplatz noch viel CPU-Leistung vorhanden.
Innerhalb des VPN-Tunnel wird wieder das B.A.T.M.A.N Protokoll verwendet. Die Gateway-Server wirken wie ein großer Switch (die Dinger, in die man Netzwerkkabel steckt). Dadurch vergrößert sich bei Verbindung über das VPN-Mesh das gesamte Freifunk-Mesh. Entfernte Knoten sind über das B.A.T.M.A.N Routing Protokoll direkt miteinander verbunden.
Rolle der Gateways
Die Gateways nehmen eine Zentrale Rolle in Freifunk-Netzen ein, die auf der Firmware Gluon basieren. Hier findet einerseits die Verbindung entfernter Mesh-Netzen (mittels VPN-Mesh) und die Verbindung mit dem Internet statt, andererseits sind die Gateways auch die zentrale Infrastruktur für die Konfiguration des IPv4 Netzes und für Dienste wie DNS.
Leider ist die automatisierte Konfiguration von IPv4 in einem Kommunikationsnetz in der Informatik kein triviales Problem. Damit Geräte eine IP-Adresse (IPv4-Adresse) erhalten können, muss diese entweder manuell eingestellt, oder von einer zentralen Komponente (dem DHCP-Server) geliefert werden. Diese zentrale Komponente kann nicht ohne unangenehme Probleme von den Knoten selbst übernommen werden. Stattdessen setzen wir die Gateways als zentrale DHCP-Server im Freifunk-Netz ein. Ohne die Gateways besteht im Netz (nur) IPv6 Konnektivität und kein Internetzugriff.
Die Gateways haben also die Aufgabe
- entfernte WLAN-Mesh-Netze über einen großen Switch miteinander zu verbinden
- DHCP und DNS Server für diese Netze zur Verfügung zu stellen
Gleichzeitig stellen die Gateways aber auch unsere zentrale Routing-Infrastruktur dar. Datenverkehr, der nicht in unserem eigenen Netz bleiben soll (wenn also ein Freifunk-Fulda-Nutzer mit jemand anderem als einem anderen Freifunk-Fulda-Nutzer kommunizieren will), wird auf den Gateways zum richtigen Ziel weitergeleitet. Das wichtigste Ziel dürfte hier das Internet sein, das wir im Moment über eine OpenVPN Verbindung zu Perfect Privacy erreichen. Weitere Ziele sind andere Freifunk Communities, das dn42 und das ChaosVPN, die über unser Freifunk Netz direkt adressiert werden können.
Die Gateways sind also gleichzeitig Router, die
- uns per Overlay-Netz mit anderen Communities verbinden
- unseren Nutzern den Internet-Zugang ermöglichen
Aus Gründen der Bewältigbarkeit (wenige Admins administrieren viele Gateways) und der Versionskontrolle werden unsere Gateways mit Hilfe von Saltstack konfiguriert. Dabei handelt es sich um eine Software für Konfigurationsmanagement, die es erlaubt, die Installation von Programmen, deren Konfiguration, und was man sonst auf Servern noch so macht, vollständig mit Hilfe von Templates abzubilden und dann einfach auf blanken Servern immer wieder zu verwenden. Der Server befindet sich dadurch immer im gewünschten und im Konfigurationsmanagement abgebildeten Zustand. Die Konfiguration der Gateways ist vollständig auf Github einsehbar.
Ein Artikel, der die Dienste eines Gateway und deren Konfiguration etwas detaillierter (wenn auch nicht immer ganz aktuell) beschreibt findet sich hier.
Da die Gateways auch untereinander verbunden sind, ist es uns möglich, ganz tolle Dinge mit asymmetrischem Routing zu tun und viel Spaß mit Technik zu haben. Die ganze Routing und damit zusammenhängende Firewall Konfiguration ist im Artikel Freifunk_Fulda/Gateway/Routing etwas detaillierter beschrieben.
Verbindung zu anderen Netzen
Obwohl schon einige male gesagt, der Vollständigkeithalber: Wir verbinden unser Freifunk Netz natürlich auch mit anderen Netzen.
Eine Verbindung mit anderen Freifunk Communities findet mittels ICVPN (das gerade durch direkte Peerings einzelner Communities teilweise abgelöst wird) statt. Dabei wird ein Layer3-Mesh-Netz mit Hilfe der Software tinc aufgebaut und darin mit Hilfe des Routing-Daemon bird per BGP gerouted.
Eine Verbindung zum Internet erfolgt per OpenVPN über Perfect Privacay. Dies soll in naher Zukunft durch ein Peering mit Freifunk Rheinland abgelöst werden.