Freifunk Augsburg

Blog zu Freifunk Augsburg und Mesh-Netzen im Allgemeinen

Unser IPv6 Setup kurz erklärt

Im letzten Eintrag Happy IPv6 Launch Day! / IPv6 für unser Mesh hatte ich ja ein Konzept zur IPv6-Adressierung vorgeschlagen, das /112er Netze auf den Interfaces verwenden sollte. Weiteres testen hat mich von der Idee wieder abgebracht, hauptsächlich da damit keine Autoadressierung ohne DHCPv6, also mittels SLAAC geht.

Daher will ich hier kurz die Funktionsweise des neuen Ansatzes, der so auch in der Firmware drin ist skizzieren:

IPv6 bei Freifunk Augsburg

Es wird wieder ein abgewandeltes auto-ipv6 script (vorerst auto-ipv6-ib genannt, ich hoffe man kann das irgendwann wieder zurückmergen) eingesetzt. IPv6-Netze für die einzelnen Interfaces werden diesmal aber von der IPv4-Adresse des Nodes abgeleitet. D.h, diese Art der Adressierung funktioniert nur in Meshnetzen die Netze kleiner oder gleich /16 verwenden, sonst kommt es zu Konflikten. Nun gut, wir verwenden hier ohnehin "nur" /18, also kein Problem.

Auto-ipv6-ib läuft als cronjob und überprüft einmal pro Minute die aktuelle IPv6-Konfiguration. Nach dem Flashen/ersten Booten des Routers haben Mesh Interfaces noch keine IPv6-Adresse. Stellt auto-ipv6-ib dies fest, dann generiert er zunächst eine neue IPv6 aus dem im Communityprofil festgelegten IPv6 Bereich, der für Augsburg 'fdca:ffee:ffa::/48' (eine ULA-Adresse) lautet. 

Beispiel

das Node hat die IPv4-Adresse 10.11.0.101. Aus den letzten zwei Octets wird das /64er Netz abgeleitet, es ergibt sich: fdca:ffee:ffa:65::/64. Das Node selbst erhält hiervon die erste IP (fdca:ffee:ffa:65::1). Dieses Netz wird zur olsrd-Konfiguration als HNA hinzugefügt und durch dnsmasq per Router Advertisments angekündigt und kann somit für die automatische Konfiguration von Clients verwendet werden. Olsrd kann mit dieser ULA-Adresse nun mit den Nachbarn Routen austauschen.


Ab jetzt überwacht auto-ipv6-ib die IPv6-Routingtabelle. Gibt es einen IPv6-Internetgateway im Mesh, dann wird nach kurzer Zeit für diesen eine Defaultroute in die Rountingtabelle eingetragen. Findet auto-ipv6-ib hier einen neuen Gateway, dann wird das Interface erneut konfiguriert. Aus dem /48-Netz des Gateways und der aus der IPv4-abgeleiteten vierten Stelle der IPv6-Adresse wird eine neue IPv6-Adresse generiert.

Beispiel 

Der neue Gateway hat das /48er Netz 2001:470:7184 zur Verfügung, das Node bekommt also das Netz 2001:470:7184:65::/64 und als eigene IP wiederum 2001:470:7184::1.

Wie schon vorher wird auch dieses Netz wieder als HNA in der Olsrd-Konfiguration eingetragen und wieder von dnsmasq für Autokonfiguration verwendet. Beide, olsrd und dnsmasq werden neu gestartet.

Das Node und angeschlossene Clients erhalten ab jetzt öffentlich erreichbare, global gültige IPv6-Adressen und sind somit auch aus dem Internet direkt erreichbar.

auto-ipv6-ib läuft weiterhin jede Minute und überprüft die Routingtabelle. Wird festgestellt, dass ein neuer Gateway als Defaultgateway verwendet werden soll dann wird die oben beschriebene Prozedur erneut durchgeführt und das Interface auf eine neue, zum neuen IPv6-Gateway passende IPv6-Adresse umkonfiguriert. Die alte öffentliche IPv6 Adresse bleibt weiterhin konfiguriert, wird aber auf deprecated (abgelaufen) gesetzt. Neue Verbindungen benutzen daher nun die eben neu konfigurierte IPv6-Adresse. Es wird dabei immer nur eine alte IPv6 beibehalten.

Probleme die es noch zu lösen gibt

  • Olsrd muss neu gestartet werden, damit neue HNA-Einträge gültig werden. Das init script erlaubt nur beide olsrds (ipv4 und ipv6) gleichzeitig neu zu starten, daher werden nach einem Wechsel des Defaultgateways kurzzeitig alle Routingtabellen wegbrechen und neu aufgebaut werden. Bei uns (mit wenig wechselnden Gateways) ist das kein großes Problem, dennoch wäre es schön in Zukunft HNA für einen laufenden olsrd hinzufügen und entfernen zu können.
  • Der Splash greift nicht für IPv6-Verbindungen. Da es bei IPv6 keine iptables NAT gibt muss hier eine andere Lösung gefunden werden.

IPv6 für andere Communities

Bis jetzt benutzt es ausser uns noch keine andere Community, wer es aber benutzen will soll sein Communityprofil entsprechend anpassen, als Beispiel siehe unseres: luci.subsignal.org/trac/browser/luci/trunk/contrib/package/community-profiles/files/etc/config/profile_augsburg

Integration im Imagebuilder

Der Imagebuilder wurde ja umgeschrieben und heisst jetzt Meshkit, ist aber noch im Betastadium. Support für Images mit IPv6 gibt es derzeit nur hier. Mit Erscheinen des lang ersehnten OpenWrt 12.09 (Attitude Adjustment) werde ich hoffentlich genug Feedback und ausreichend getestete Images haben und dann das neue Meshkit offiziell ankündigen und ein paar Worte dazu schreiben.

 

Kommentare (0)

Bisher keine Kommentare vorhanden.

Neuen Kommentar schreiben