KeyXchangeV2: Unterschied zwischen den Versionen
Zeile 109: | Zeile 109: | ||
Sourcecode: https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff-hoods/files/usr/sbin/configurehood | Sourcecode: https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff-hoods/files/usr/sbin/configurehood | ||
Speziell Zeilen: 117-119 ; 127-179 ; 230 (kann sich durch Patches ändern!) | Speziell Zeilen: 9-11 ; 117-119 ; 127-179 ; 230 (kann sich durch Patches ändern!) | ||
== FAQ == | == FAQ == |
Version vom 10. November 2017, 12:32 Uhr
Erklärung
Mit dem KeyXchangeV2 werden den Routern nicht nur VPN Endpunkte wie bisher genannt sondern die komlette Routerkonfiguration. Somit weiß ein Router in welcher Hood er ist und kann sich dementsprechend konfigurieren. Eine solche Konfiguration sieht etwa so aus:
Da wir eh die kompatiblität zum alten System brechen, werden auch einige Systeme aktualisiert:
- Batman Compat v15
- 11s statt IBSS Mesh
Grundsätzlich kann man sich das v2 Netz als komplett neues Netz vorstellen. Alte Router meshen nicht mit neuen oder andersherum. Eine Kommunikation zwischen alten und neuen Hoods ist auf IPv4 Basis möglich. Auch die Aufteilung der Hoods wird von vorne gestartet. Je mehr Router in die neuen Hoods umgezogen werden, desto mehr Hoods müssen dort erstellt werden und je kleiner die alten Hoods werden, desto mehr Hoods kann man im alten System auflösen bis es dort nur noch eine hand voll Router in der letzten default Hood geben wird.
Vorteile
- Verschiedene Hoods können nicht mehr miteinander meshen
- SSID ist für jede Hood einzigartig (nach RFCXXXX richtig das jedes L2 Netz eine eigene SSID hat)
- Router können Hoodübergreifend erreicht und konfiguriert werden (über nun routbare fd43:*** Adressen)
- Es wird auf den Gateways nicht mehr der Key des Routers geprüft. Somit kann jede Hood auch manuell ohne KeyXchange betreten werden!
- Das Monitoring bekommt die Daten dezentral von den Gateways und nicht mehr zentral von der NetmonVM
- Neue Hoods sind deutlich leichter anzulegen
- NetmonVM muss nicht mehr angepasst werden
- Monitoring muss nicht mehr angepasst werden, Hoods entstehen dort von alleine sobald Router sich mit einer neuen Hood melden.
- Allgemein wurde das System so entwickelt, das es eine Vorstufe zum dezentralen KeyXchange wird. Dieses System ist weiterhin noch nicht 100% dezentral wir nähern uns diesen aber an. Wer jetzt schon dezentral sein möchte, kann dies problemlos machen wie div. Hoods (StPaul, Marterlach, Stmarkus, Unterfürberg, Hardhöhe, Neunhof, FabLabnbg, etc.) beweisen.
Informationen
Inbetriebname Uplinkrouter
Nach dem flashen, den Router wie bisher auch mit dem blauen Port zum Internet verbinden. Nach einiger Zeit sollte er eine SSID mit den Namen trainstation.freifunk ausstrahlen (kann u.U. etwas länger dauern 5 Minuten oder so sind beim ersten boot keine Seltenheit). Mit dieser kann man sich verbinden und den Router wie bisher auch erreichen zum konfigurieren. In dieser Hood ist kein Zugang zum Internet möglich, es handelt sich nur um eien Trainstation. Um diese zu verlassen müssen Koordinaten gesetzt werden damit er in einer gültigen Hood landet. Zu einigen Seiten ist der Zugang dennoch möglich:
- Monitoring
- Freifunk Franken Wiki
- OSM Karte damit im WebUI des Routers auch die Karte läd
Nach den setzen der Koordinaten sollte der Knoten eine SSID in der Art: STADT.freifunk(.net) ausstrahlen und darüber ist dann normaler Zugang zum Freifunknetz und Internet möglich
Inbetriebname Meshrouter
Per WLAN
Jeder schon fertig konfigurierte Router strahlt eine versteckte SSID config.franken.freifunk.net aus. In dieser SSID wird nur eine Konfigurationfile für Meshrouter angeboten.
Wenn nun ein Meshrouter einfach aufgestellt wird und er selbst feststellt, das er am WAN Port kein Internet hat, sucht er selbstständig nach diesem versteckten Netz und holt sich dort die Konfiguration. Anschließend wendet er diese Konfiguration an und ist absofort als Meshrouter in dieser Hood aktiv. Dies funktioniert auch problemlos mit dezentralen Hoods sofern sie schon soweit aktualisiert sind (z.b. Unterfürberg).
Anschließend kann man den Router ganz normal im WebUI erreichen und Koordinaten sowie Kontatadresse und weitere Infos setzen.
Per Kabel
Dies geschieht ähnlich wie bei dem WLAN Meshrouter, nur das dieser Router bereits Zugang zur Hood hat (er ist per Kabel direkt mit Batman verbunden) und läd sich daher die Konfigurationfile nicht vom Hidden AP sondern direkt vom Gateway der Hood. Die anschließende Konfiguration geschieht genauso wie per WLAN.
Regelmäßiges aktualisieren der Hoodinformation
Da sich Hoods durchaus aktualisieren können (neues Gateway kommt dazu, Rechtschreibfehler aus SSID verbessert, etc.). muss jeder Router regelmäßig nach neuen Hoodfiles suchen.
Uplinkrouter
Uplinkrouter fragen ganz normal alle 5Minuten den KeyXchangeV2 an und prüfen ob es dort eine neuere Version gibt
Meshrouter
Meshrouter haben keinen Zugang zum KeyXchangeV2. Daher wird dort über ein Anycast von fe80::1 auf Port 2342 von den Gateways regelmäßig die Hoodfile bezogen. Auf den Gateways wird die fe80::1 per nodad an das Batman gehangen um ein Anycast System aufzubauen. Die Gateways beziehen diese Konfigurationfile regelmäßig vom KeyXchangeV2.
Hoodtrenung
Sollte es zu einer Hoodtrennung kommen und eine Wolke in eine neue Hood umziehen, merken dies zuerst die Uplinkrouter da sie vom KeyXchangeV2 eine neue Hoodfile bekommen. Nachdem diese sich neu konfiguriert haben, haben Meshrouter kein Gateway mehr in Reichweite (batctl gwl ist leer), anhand dieser Information starten sie ihre Hoodkonfiguration wie oben beschrieben erneut. Hinterlegte Informationen wie Koordinaten, E-Mail, etc. bleiben dabei natürlich erhalten
Gefahren eines Updates vom alten System
Alte Freifunkrouter werden aufgrund der gebrochenen kompatibilität nicht mer mit dem neuen System meshen können. Gerade bei größeren Installationen ist daher vorsicht geboten. Es macht Sinn von "hinten" in der Kette mit dem Update anzufangen und sich nach vorne in der Kette bis zum Uplinkrouter vorzuarbeiten. Ob ein Remoteupdate halbwegs sicher ist, kann zum aktuellen Zeitpunkt nicht gesagt werden. Ein Update vor Ort ist einen remote Update aber eindeutig immer vorzuziehen.
fd43:*** Adressen
Es wurden neuen IPv6 ULA Adressen eingeführt. Diese Adressen werden wie auch der komplette fc00::/7 ULA Raum in unseren Freifunknetz geroutet. Jeder Router bekommt über die Hoodfile mitgeteilt welches /64 er nutzen soll und konfiguriert sich eine Adresse auf br-mesh. Diese ist auch im Monitoring zu sehen. Da diese Adressen geroutet werden, ist darüber ein Zugang im kompletten Freifunknetz (später auch über ICVPN) möglich und nicht nur in der gleichen Hood. Freifunkclients bekommen so eine Adresse über radvd von den Gateways zugesteckt(?!) ohne default Route aber mit fc00::/7 als Route. Natürlich können auch Cliens über dieses Netz Freifunkweit per IPv6 kommunizieren.
fdff:: Adressen
Hier bleibt alles beim alten. Diese Adressen werden direkt vom Knoten vergeben und somit ist ein Knoten auch komplett ohne Hoodkonfiguration über seine fdff::MAC oder fdff::1 erreichbar. Diese Adressen gelten nach wie vor nur in der gleichen Hood, auch fdff::1 bleibt als Sonderadresse bestehen und zeigt immer auf den aktuell verbundenen Knoten. Zum aktuellen Zeitpunkt sind u.U. Knoten ohne Konfiguration nicht per WLAN sondern nur per Kabel zu erreichen.
Sectorfile
(Achtung! Diese Anleitung hab ich gerade aus dem Kopf heraus verfasst, bitte noch mal in der Praxis prüfen!)
Mit der Sektorfile ist es nun möglich, auf einzelnen Sektoren den Kanal o.ä. zu ändern. In unserem Beispiel machen wir das nur mit dem Kanal, theoretisch wären aber auch andere Informationen die in der JSON File stehen möglich.
Notwendige Konstellation
Damit auf einzelnen Sektoren der Kanal geändert werden kann, muss folgendes bedacht werden:
- Es muss einen Initial-Router geben.
- Dieser Initial-Router muss entweder per WAN Uplink haben oder Batman per Kabel bekommen, bei reinen WLAN-Meshrouter macht eine Kanaländerung keinen Sinn.
- Dieser Initial-Router gibt den Sektorkanal vor, alle WLAN Meshrouter die sich von diesem Router die JSON File holen werden sich auf den neuen Kanal konfigurieren
Beispiel
Beispiel einer sinnvollen Konstellation:
- Auf einen Kirchturm ist ein "Uplinkrouter" dabei ist es egal ob er dezentrales Gateway ist, Batman per Kabel bekommt oder WAN Uplink hat.
- An diesen "Uplinkrouter" hängen 4 Sektorgeräte (z.b. NSM2) mit Freifunkfirmware in jede Blickrichtung der Kirche, diese Sektorgeräte möchte man nun auf 4 verschiedene Kanäle (1, 5, 9, 13) legen. Ein Meshrouter würde sich im normalfall auf den Kanal konfigurieren den die JSON die in der Hood verteilt wird eingestellt ist. Es macht nun Sinn diese Sektorfile auf jeden dieser 4 Sektorantennen anzulegen, jeweils mit dem Kanal den man auf der Antenne einstellt.
- Wenn sich nun ein WLAN-Meshrouter unten im Geschäft auf der Antenne mit Kanal 5 die keyxchangev2data json holt, holt er sich gleich noch die Sektorfile mit, in welcher der Kanal 5 steht und konfiguriert sich dann automatisch auf Kanal 5. So kann an jeden Sektor ohne manuelle Konfigurieren gemesht werden.
Bilder [...]TBD[...]
Anlegen der Sektorfile
Nachdem auf einer Antenne der Kanal geändert wurde, muss die File /etc/sectorfile angelegt werden. Hier wird nun die Information hinterlegt die überschrieben werden soll als gültige JSON, in unserem Fall der Kanal von 2,4GHz auf Kanal 5.
Die File müsste so aussehen:
{ "hood": { "channel2": "5" } }
Bitte immer prüfen ob die json valide ist, z.b. mit https://jsonlint.com/
danach wird diese an Meshrouter ausgeliefert. Alle Meshrouter die sich nun genau von dieser Sektorantenne die json holen werden sich anschließend auf Kanal 5 konfiguren, auch diese Meshrouter liefern automatisch wiederrum die erweitere JSON aus so das auch die nächsten Meshrouter auf Kanal 5 bleiben, dies geschieht solange bis die Kette durch eine Kabelverbindung unterbrochen wird, danach fällt der Knoten der per Kabel dran hängt wieder auf den Kanal zurück den die Hood vorgibt (macht auch Sinn und ist so gewollt).
Speziell Zeilen: 9-11 ; 117-119 ; 127-179 ; 230 (kann sich durch Patches ändern!)
FAQ
Frage:
Wenn jede Hood eine eigene SSID hat, dann muss ich mir ja 100 SSID ims Handy speichern und niemand findet mehr das Freifunknetz
Antwort: Es hat sich in einigen Bereichen schon in der Praxis gezeigt, das User eine neue SSID sehr schnell finden [2] oder [3] Zudem ist es technisch gesehen einfach rchtig, das jedes Layer 2 Netz eine eigene SSID hat. Und seien wir mal ehrlich, hälst du dich wirklich in 100 verschiedene Hoods auf? Selbst in Fürth mit den vielen dezentralen Hoods sind es meist doch immer die gleichen 3-5 Bereiche und soviele SSIDs sollten moderne Handys problemlos verkraften ;)
Frage:
Ich seh nur so eine Sperrseite, was kann ich tun?
Antwort: In der Trainstation ist kein Internet möglich. Bitte setze im Routerwebinterface Koordinaten damit er sich in eine richtige Hood verbindet.