Gateway-Firmware mit Babel über Mesh
Privater experimenteller Firmware-Fork!
Dies ist die Beschreibung einer Firmware-Modifikation von Miki. Ursprung ist die Freifunk-Franken-Firmware und deren verschiedene Varianten für dezentrale Gateways.
Der Quellcode ist in Github zu finden. (Ihr dortiger Accountname: MaretaDagostino)
Aktuell empfohlener Softwarestand
Commit b9bbdac vom 9.2.2019 mit dem Tag "20190209-beta".
Auf diesen Stand bezieht sich die folgende Auflistung.
Besondere Features, implementiert
- Verschlüsselte Babel-Verbindungen über Mesh möglich.
- Webinterface angepasst.
- Software-Struktur gemeinsamer Pakete nahe an der Original-Firmware, um längerfristige Pflege zu erleichtern.
- Unterstützung zusätzlicher Routermodelle aus den Entwicklerbranches von Adrian oder Fabian (hier ungetestet, reiner Code-Import).
Geplante Features, in der Warteliste
- Zuverlässige Update-Möglichkeit auf dem Ubiquiti Unifi AC-Mesh Router.
- Hochladen der Konfigurationsdateien über das Webinterface.
- Konfigurationslauf übers Webinterface anstoßen können.
- Einzelne Funkbereiche (2,4 GHz und/oder 5 GHz) einzeln übers Webinterface deaktivieren können.
Bekannte Fehler
- Updates funktionieren nur auf Routern mit Hardware-Bridge zuverlässig, das sind meistens Geräte mit 5 Ports (z.B. WR1043).
Ungetestet
- Fast alle Routermodelle.
- Funktionsweise und Wirksamkeit der Bandbreitenbegrenzung.
- ...sicherlich vieles andere mehr...
Historie
- Commit 1d301d0dd vom 28.10.2018, Tag "20181028-beta":
Erste real eingesetzte Version. Codebasis ist hier die Firmware von Adrian, das Hoodfile muss nach /www/hood/keyxchangev2data kopiert werden.
- Commit b9bbdac vom 9.2.2019, Tag "20190209-beta":
Wechsel der Quelle auf Freifunk Franken Original-Firmware mit Gateway-Paketen nach Fabians Methode. Das Hoodfile muss jetzt nach /etc/hoodfile kopiert werden. In der GW-Firmware funktionslose Bedienelemente wurden aus dem Webinterface entfernt. Diverse Pakete für zentrale V2 Hoods wurden entfernt, da in Gateways obsolet. Code-Import zur Unterstützung der Router Ubiquiti Edge X und Archer C60 v1/v2.
Konfiguration
Achtung: Auf dem Ubiquiti Unifi AC-Mesh und vermutlich auch anderen Routern mit nur einer oder zwei Ethernetschnittstellen ist ein Firmware-Upgrade unzuverlässig. Miki hat bei ihren Tests auf dem AC-Mesh schließlich immer mit TFTP die Originalfirmware des Herstellers aufgespielt und dann die Gateway-Firmware als erneute "Erstinstallation".
Anleitungen im Wiki:
- Freifunk-Firmware auf TP-Link WR1043N(D) installieren
- Freifunk-Firmware auf Ubiquiti Unifi AC-Mesh installieren
- Installation der Gatewayfirmware, Hoodfile nach /etc/hoodfile kopieren
Richtwerte für Babel Penalty (rxcost) in dezentralen Hoods
Es wird empfohlen, die "rxcost" jeweils zur Hälfte auf beide Seiten des Peerings zu verteilen. Pro Link sollte maximal 16384 verwendet werden, damit auch bei vielen Hops das Maximum von 65535 nicht erreicht wird.
- Ethernet: 96
- Richtfunk
- >100Mbit: 256
- 30-100Mbit: 512
- 10-30Mbit: 1024
- bis 10Mbit: 4096
- VPN: 4096 - 16384
Konfiguration des Extra-Features "Babel über Mesh"
Ein besonderes Feature dieser Software-Modifikation ist die Möglichkeit, mit verschlüsselten Babel-Verbindungen über Mesh zu peeren. Da solltet ihr aber keine zu großen Illusionen haben! Den eh schon stark ausgelasteten 2,4 GHz Funkraum teilt ihr euch mit allen Clients. Die Performance entspricht also in etwa dem, was eine Batman-Verbindung in einer V2 Hood hergibt.
/etc/config/gateway
Am Ende der Datei wird folgender Block angefügt, der Name des Interfaces kann nach Bedarf angepasst werden.
gateway |
config babelpeer 'w2babel' option iface 'w2babel' option type 'wireless' option rxcost '2048' |
Nach der Konfiguration
Die folgenden Änderungen müssen gemacht werden, nachdem das Script "configuregateway" erfolgreich ausgeführt wurde. Sie sind nicht updatefest und gehen bei jedem erneuten Aufruf von configuregateway verloren!
Am Ende der Datei "/etc/config/wireless" wird folgender Block eingetragen. Dabei muss der Name des Interfaces und das Device (radio0 oder radio1) angepasst werden. Die Mesh-ID sollte einen Namen bekommen, der nicht das Wort "Freifunk" enthält, damit keine Clients versuchen sich darauf zu verbinden. Der Key muss mit dem Peering-Partner abgesprochen werden.
wireless |
config wifi-iface 'w2babel' option device 'radio0' option network 'w2babel' option ifname 'w2babel' option mode 'mesh' option mesh_id 'fff_irgend_was' option encryption 'psk2+aes' option key '784e0K767.................' option mesh_fwding '0' |
In der Datei "/etc/config/network" kommen für das neue Interface zwei Blöcke mit Rules vor. Miki hat bei ihren Tests festgestellt, dass die Verbindung instabil war, wenn der Wert der Option "priority" genauso wie bei den anderen Babel Interfaces war. Sie hatte Erfolg damit, statt des Defaultwertes 31 den Wert 28 einzutragen. (Eine Erklärung für das Phänomen kennt Miki nicht.)
network |
config rule 'w2babel_rule' option in 'w2babel' option lookup '10' option priority '28' config rule6 'w2babel_rule6' option in 'w2babel' option lookup '10' option priority '28' |
5 GHz Warnung
Ein Peering über Mesh wird in den meisten Fällen außerhalb geschlossener Gebäude stattfinden. Falls das Gerät 5 GHz unterstützt (z.B. AC-Mesh), muss daher normalerweise der 5 GHz Funkbereich deaktiviert werden! Die Freifunk-Firmware ist nicht zertifiziert und darf auf 5 GHz generell nicht im Freien verwendet werden.
- Frequenzbereiche und deren Zulassungsbedingungen sofern für Freifunk relevant.