In diesem Beitrag beschäftigen wir uns mit der sinnvollen Konfiguration mehrerer Freifunk-Knoten in einem lokalen Netzwerk.
Warum sollte ich etwas ändern?
Vor einiger Zeit sind die Server mehrerer Domänen regelmäßig und nachhaltig abgestürzt. Betroffen war zunächst Wittmund, später Aurich/Leer. Neue Tunnelverbindungen wurden abgelehnt und die Knoten in der jeweiligen Domäne sind nach und nach offline gegangen. Der Grund war offenbar der exzessive Aufbau von Tunnelverbindungen durch einzelne Knoten. Teilweise wurden sekündlich neue Tunnel eröffnet. Ein Tunnel hat die Eigenschaft zwei Enden zu haben: Eins beim Knoten, das andere beim Server. Beim Server wird für jeden Tunnel eine Netzwerkschnittstelle angelegt. Das ist vergleichbar mit einem LAN-Anschluss am Computer, nur halt virtuell. Die Menge der möglichen Tunnel ist endlich. Eine Überbeanspruchung kann zum Absturz des Servers führen.
Serverseitig ist leider kaum zu unterscheiden, ob es sich beim exzessiven Aufbau von Tunnelverbindungen um einen gezielten Angriff, einen Defekt oder eine ungeschickte Konfiguration handelt. Unsere derzeitige Lösung ist, die Anzahl neuer Tunnel pro Gegenstelle zu begrenzen. Wird die Grenze überschritten, wird die Kommunikation mit der Gegenstelle für eine begrenzte Zeit unterbrochen.
Nun lassen sich über ein lokales Netzwerk mehrere Freifunk-Knoten anschließen, z. B. um größere Bereiche mit WLAN zu versorgen. An dieser Stelle ist besondere Aufmerksamkeit geboten.
Die wenig sinnvolle Konfiguration im LAN-Verbund
Die Standard-Konfiguration sieht vor, dass eine Tunnelverbindung (Mesh-VPN) aufgebaut wird, sofern möglich. Mehrere Freifunk-Knoten im LAN-Verbund haben alle die Möglichkeit einen Tunnel aufzubauen, also tun sie das auch. Eine Kommunikation zwischen den Knoten erfolgt im besten Fall per WLAN, im schlechtesten ausschließlich über den Tunnel.
Was bedeutet das konkret? Der Server hat eine Gegenstelle für alle Freifunk-Knoten im selben lokalen Netzwerk. Von dieser einen Gegenstelle werden so viele Tunnel aufgebaut, wie es Freifunk-Knoten gibt. Der Server kann das, wie oben beschrieben, nicht gut von einem gezielten Angriff oder einem Defekt unterscheiden. Außerdem werden Informationen über das Freifunk-Netzwerk an jeden Freifunk-Router einzeln übermittelt. Deine Anbindung wird also um ein Vielfaches belastet.
Besonders deutlich wird das an der Kommunikation zwischen zwei Freifunk-Knoten innerhalb deines Netzwerks: Besteht keine WLAN-Verbindung, werden die Daten über den einen Tunnel zum Server übertragen und über den anderen Tunnel zurück in euer Netzwerk. Spätestens hier wird dir auffallen, dass das auch lokal in deinem Netzwerk hätte passieren können. Und das sogar über die performante Verbindung per Kabel und ohne dass deine Anbindung an die Außenwelt jemals genutzt wird.
tl;dr - Die Lösung
Wähle einen Stellvertreter-Knoten, der die Tunnelverbindung aufbaut. Deaktiviere Mesh-VPN auf allen anderen Knoten. Aktiviere Mesh-on-WAN auf allen Knoten. Alle Knoten nutzen gemeinsam eine Tunnelverbindung. Die Kommunikation zwischen den Knoten wird lokal abgewickelt.
Einstellen kannst du das im Config-Mode, also der Oberfläche, bei der du auch den Namen und die Position des Freifunk-Knotens eingestellt hast. Um den Config-Mode erneut zu aktivieren, genügt es normalerweise die Reset-Taste des Gerätes im laufenden Betrieb solange gedrückt zu halten, bis das Gerät neustartet (ca. 10 Sekunden). Die Einstellung zu Mesh-on-WAN findest du im Expertenmodus unter „Netzwerk“. Diese aktivierst du auf allen Freifunk-Knoten in deinem Netzwerk. Den Tunnel kannst du mit dem Punkt „Mesh-VPN“ im Einrichtungsassistenten deaktivieren. Mesh-VPN deaktivierst du auf allen Knoten, bis auf einem. Benötigst du dabei Hilfe, nimm gerne Kontakt zu uns auf!
Befehle für die Konsole, um Mesh-on-WAN zu aktivieren (auf allen Geräten im Verbund):
uci delete network.mesh_wan.disabled
uci set network.mesh_wan.auto='1'
uci commit
Befehle für die Konsole, um Mesh-VPN zu deaktivieren (auf allen Geräten im Verbund, außer einem):
uci set tunneldigger.mesh_vpn.enabled='0'
uci set gluon.mesh_vpn.enabled='0'
uci commit
Am einfachsten lässt sich die neue Konfiguration mit einem Neustart anwenden:
reboot
Habe ich dann Freifunk-Pakete in meinem Netzwerk?
Ja! Und dennoch musst du dir keine Sorgen machen ;-)
Im Grunde ist es ein Tunnelsystem durch euer lokales Netzwerk. Die ursprünglichen Datenpakete sind mehrfach gekapselt. Zunächst durch unser derzeit eingesetztes Routingprotokoll „batman-adv“ und auf allen Kabelverbindungen zusätzlich in einem VXLAN (VLANs in groß und mächtig; virtuelles lokales Netzwerk). Die meisten Geräte verstehen diese Pakete nicht, leiten sie weiter oder verwerfen sie. Ein Konflikt mit deinem Netzwerk ist sehr unwahrscheinlich. Wenn du dir dennoch unsicher bist, nimm am besten Kontakt zu uns auf.
Lässt sich das noch weiter optimieren?
Ja! Das muss allerdings dein lokales Netzwerk leisten. Du kannst z. B. den Mesh-Datenverkehr per Kabel in ein VLAN sperren, sodass Freifunk-Pakete nur noch an Freifunk-Knoten zugestellt werden. Intelligente Switches machen das übrigens auch ohne weitere Konfiguration eines VLANs. Wenn du dazu mehr erfahren möchtest, lohnt sich der Weg zu unseren Treffen.
Wenn dein lokales Netzwerk nicht die entsprechenden Voraussetzungen mitbringt, macht das nichts. Nicht lesbare Datenpakete zu verwerfen, ist ein ganz normaler Vorgang in der Netzwerktechnik. Du wirst also wahrscheinlich keinen Unterschied merken.