Handbuch
Dies ist das Handbuch des Freifunk Rheinland. Hier sollen Anleitungen und Referenzen für den Aufbau und Betrieb unseres Netzwerks möglichst vollständig dokumentiert werden.
Autoren:
- nomaster
Einführung
Freifunk ist eine Community und eine Technologie.
Die Community baut ein gemeinsames Rechnernetz auf, das frei zugänglich und erweiterbar sein soll. Sie organisiert sich in einer großen Meta-Community und verschiedenen Communities vor Ort. Die einzelnen Communities sind autonom und bauen eigene Netzwerke auf.
Die Technologie besteht im wesentlichen aus WLAN Access Points, die mit einer alternativen Software umfunktioniert wurden. Die Communities geben dafür jeweils ihre eigene Variante passend für eine Reihe handelsüblcher Geräte heraus, die mit wenig Kenntnissen aufgespielt und eingestellt werden kann. Der Freifunk Rheinland nimmt dazu eine einheitliche Firmware, die für die unterschiedlichen Setups mehere Betriebsmodi unterstützt.
In diesem Handbuch beschreiben wir die Firmware und Infrastruktur derjenigen Communities, die im Freifunk Rheinland organisiert sind.
Nodes und Super-Nodes
Das Freifunk-Netzwerk besteht aus sogenannten Nodes. Eine Node ist ein Computer, der über seine Netzwerkschnittstellen mit anderen Nodes verbunden ist. Das findet nicht unbedingt hierarchisch in einem Baum statt, sondern es werden alle Nodes zu ihren Nachbarn verbunden. Das nennt man Mesh-Netzwerk. An die Nodes sind außerdem Clients verbunden. Clients sind vor allem Computer, die von Menschen bedient werden; aber auch die Nodes selber, insofern von ihnen Dienste im Freifunk-Netzwerk angeboten werden. Der meistgenutzte Dienst ist das Routing ins (restliche) Internet.
Über das Mesh-Netzwerk kommunizieren die Nodes untereinander darüber, welche Nachbarn sie sehen können und welche Clients an sie angebunden sind. Dafür verwenden wir eine spezielle Software namens B.A.T.M.A.N.. Dieses lustige Akronym steht für "Better approach to mobile ad-hoc networking". B.A.T.M.A.N. verwendet ein eigenes Protokoll, um diese Informationen im Netzwerk zu verbreiten und möglichst schnell zu aktualisieren. Denn unser Netzwerk ändert sich ständig: zum Beispiel werden Nodes hinzugefügt, Clients bewegen sich hin- und her und Verbindungen durch die Luft werden gestört. Daher nennt sich das mobiles Netzwerk. Ein mobiles Netzwerk aufzubauen, ist eine Aufgabe für findige Techniker und Gegenstand aktueller Forschung. Daher aktualisieren wir häufig die Software oder ändern den Aufbau unserer Verbindungen.
Das Hinzufügen einer Node bedarf keinerlei Konfiguration auf dieser oder anderen Nodes. Sie meldet sich selbstständig an und wird automatisch in das Netzwerk aufgenommen. Daher kann jederzeit jemand eine Node hinzufügen und das Netzwerk erweitert sich. Verbindungen zwischen den Nodes kommen über drei Medien zustande:
- WLAN
- Ethernet
- Tunnel
Eine Node macht zwei WLAN-Verbindungen auf: eine im ad-hoc-Modus, um sich zu anderen Nodes zu verbinden und eine im Access Point-Modus um Clients anzubinden. Für den ad-hoc-Modus verwenden wir SSIDs, die mit wifimesh beginnen. Außerdem können sich zwei Nodes über Ethernet verbinden, also über Netzwerkkabel. Das hat natürlich große Vorteile, was Bandbreite und Qualität der Verbindung angeht. Jedoch ist es rechtlich nicht gestattet, ohne Genehmigung Kabel über Grundstücksgrenzen zu verlegen. Für die Verbindung zweier Nodes benutzen wir daher WLAN. Teilweise kommen hier spezielle Antennen zum Einsatz, die die Verbindung optimieren.
Über WLAN und Ethernet lassen sich Nodes verbinden, die räumlich in der Nähe zueinander liegen. Diese bilden eine sogenannte Wolke. Über größere Distanzen, zum Beispiel zwischen zwei Stadtteilen ist das nur mit großen Aufwand möglich. Richtfunk ist hier eine gangbare Technik. Um alle Wolken effizient miteinander zu vernetzen, benutzen wir aber immer auch Tunnel. Das bedeutet, dass über vorhandene DSL- oder Kabelmodems ein regulärer Internetzugang dazu verwendet wird. Über diesen bauen Nodes Verbindungen untereinander auf. Diese verschlüsseln wir, um Privatsphäre zu wahren und um den Eingriff in unseren Datenverkehr zu erschweren, wie er beispielsweise bei Drosselung vorgenommen wird.
Da in den meisten Fällen Nodes nicht Tunnelverbindungen untereinander aufbauen können, weil sie hinter Firewalls sitzen oder nicht global gültige IP-Adressen zugewiesen bekommen, betreiben wir Super-Nodes. Super-Nodes sind genau so Computer mit Linux und B.A.T.M.A.N., jedoch keine umfunktioierten WLAN-Access Points, sondern Server in Rechenzentren. Denn dort haben sie genug Bandbreite und eine optimale Umgebung, in der sie fast immer erreichbar sind. Um die Erreichbarkeit zu verbessern und zu verhindern, dass durch den Ausfall einzelner Geräte unser Netz ausfällt, betreibt der Verein mehrere Super-Nodes.
Die Super-Nodes verbinden also die Wolken untereinander. Außerdem haben sie die Aufgabe, Datenpakete aus der Community heraus und in diese hinein zu routen. Diese gehen entweder ins "normale" Internet (Default Routing) oder zu anderen Freifunk-Communities außerhalb des Rheinlands (Intercity VPN). Um eine Super-Node zu betreiben, sind Kenntnisse über Rechnernetze und Bedienung eines Linux-Rechners per Text-Shell notwendig. Wer sich das zutraut, bekommt vom Verein die Zugangsdaten für die Super-Nodes seiner Community und ist dann Admin.
Domäne
Die Nodes und Super-Nodes bilden ein lokales Netzwerk (LAN). Das nennen wir eine Domäne. Alle Clients einer Domäne hängen am Netzwerk, als ob sie an einen Switch eingesteckt sind. Also fast genau so, wie man es von zu Hause oder in einem Büro hat. Ein bisschen filtern müssen wir jedoch, um zu verhindern, dass die Anbindung der Wolken mit unnötigem Datenverkehr verstopft wird. Dabei möchten wir nicht weitesgehend die Netzneutralität wahren und filtern nur das, was ohnehin nicht über eine Internetverbidung weitergeleitet würde.
Damit kleine Communities nicht in Schwierigkeiten kommen, weil sie keinen Admin finden und ihnen der Aufbau eines neuen Standorts erleichtert wird, können sie sich einfach an eine Domäne ihrer Wahl anschließen. Durch den offenen Aufbau des Netzwerks benötigen sie hierfür zwar keine Genehmigung, aber wir hoffen, dass sich Ansprechpartner selbstständig auf den Mailinglisten anmelden und das Wiki pflegen.
IPv4 und IPv6
Wenn sich Clients im Freifunk-Netzwerk anmelden, erhalten sie gleich mehrere IP-Adressen, über die sie kommunizieren können. Das nennt man Ende-zu-Ende-Prinzip. Leider gibt es für das ältere IPv4-Protokoll schon lange nicht mehr genug Adressen, um jedem Client eine eigene zu vergeben. Daher ist das Prinzip hier nicht mehr vollständig umsetzbar und alle Clients einer Super-Node müssen sich eine einzige IP-Adresse teilen. Für den Datenverkehr über IPv4 muss die Super-Node daher bei jedem ein- und ausgehenden Paket übersetzen. Dabei ersetzt sie bei ausgehenden Paketen die Client-Adressen, die nur im Freifunk-Netzwerk gültig sind, durch ihre externe Adresse und zurück. Diese Technik ist in jedem Haushalt üblich und wird Network Address Translation (NAT) genannt.
Mit dem aktuellen IPv6-Protokoll wird quasi ein neues Internet aufgebaut. Bereits seit Ende der Neunziger wird es weltweit eingeführt, aber die meisten Menschen werden leider immer noch nicht von ihren Providern daran angeschlossen. Mit IPv6 erhält das Internet dermaßen viele Adressen, dass wir auf lange Sicht keine Knappheit erwarten dürfen. Jede Super-Node kündigt ihr eigenes Subnet an, in dem sich Clients frei IP-Adressen aussuchen dürfen. Durch diese Stateless Automatic Address Allocation (SLAAC) erhalten sie pro Subnetz mehrere IP-Adressen. Eine, deren hinterer Teil für den Client unabhängig von Subnetz eindeutig ist und der aus ihrer MAC-Adresse generiert wurde (EUI64) und bei vielen Clients eine weitere, zufällige, die für ausgehende Verbindungen temporär verwendet wird (IP Privacy Extensions).
Dadurch, dass Clients eine eindeutige, global gültige IP-Adresse erhalten, ist das Ende-zu-Ende-Prinzip wieder hergestellt. Auf Clients können also reguläre Dienste angebunden werden, die dann nicht nur intern aus dem Freifunk-Netzwerk, sondern von jedem Rechner im Internet erreichbar sind -- so er per IPv6 abgebunden ist. Wenn also zum Beispiel ein E-Mail-Dienst angeboten wird und aus dem Freifunk-Netz eine E-Mail übertragen werden soll, wird diese nicht unbedingt durch einen DSL-Anschluss rausgeschickt, sondern unter Umständen einfach rübergefunkt, also per WLAN direkt zum Empfänger übertragen.
Netzbetreiber
Rechtlich ist der Freifunk Rheinland e.V. Betreiber des Netzwerks, weil es über die von ihm angemieteten Super-Nodes realisiert wird. Das ist Absicht, um einzelne Freifunker vor rechtlichen Problemen zu bewahren. Da der Datenverkehr ins (weitere) Internet nicht weiter zurückzuverfolgen ist, als zu den Super-Nodes, ist der Verein auch für Abuse, also für missbräuchliche Nutzung des Netzwerks zuständig. Abmahnungen, Beschwerden und Auskunftsgesuche erreichen den Verein, der dazu ein Team von juristisch geschulten Personen einsetzt. Dies hat sich aus unserem Vorgehen gegen die Mitstörerhaft ergeben, wie sie bei missbräuchlicher Nutzung offener WLAN-Netze diskutiert wird. Der Verein hat dazu Spenden gesammelt und geht an die Öffentlichkeit. Dies ist die Operation Störerhaft.
Firmware
Unser Netzwerk besteht an den Standorten aus WLAN Access-Points, die mit einer eigenen Software betrieben werden. Die Software besteht aus einem spezialisierten Betriebssystem für Router (OpenWRT) und zusätzlichen, vorkonfigurierten Komponenten. Es wird der Originalquelltext von OpenWRT genommen und durch Pakete, sowie Konfigurationsdateien und Skripte erweitert. Beim Build-Prozess kommen mehrere Images heraus, die für die verschiedenen unterstüzten Modelle individuell sind. Es gibt zudem zwei Varianten jedes Images, also zwei Dateien. Die eine enthält ein Image, das auf Geräten zum Update verwendet werden kann, die bereits unter OpenWRT (Freifunk) laufen. Die andere Datei enthält dasselbe Image, jedoch für Neuinstallationen auf Geräten, die noch die Original-Firmware des Herstellers aufweisen. Der Unterschied besteht in einem Header, der vor das Image gesetzt wurde, damit die Konfigurationsoberfläche die neue Firmware akzeptiert.
Somit ist die Installation der Firmware denkbar einfach: nach dem Auspacken wird ein Computer an das Gerät angeschlossen, die Web-Oberfläche aufgerufen und das Freifunk-Image so wie ein Update des Herstellers hochgeladen und installiert. Anschließend startet das Gerät neu und verbindet sich ins Freifunk-Netzwerk. Die Software ist free and open source. Sie kann also von jedem, der will, weiterentwickelt werden. Die Communities kopieren dabei den Quelltext der anderen und entwickeln diesen für ihre Zwecke weiter. Diese Unterschiedlichkeit ermöglicht es, dass einzelne Communities Neuerungen ausprobieren können und Erfahrungen damit sammeln, bevor andere sie übernehmen.