Archiv:Kamikaze/auto-ipv6

Aus wiki.freifunk.net
(Weitergeleitet von Kamikaze/auto-ipv6)
Zur Navigation springenZur Suche springen

Auto-ipv6

Grundlegendes Problem: sollen für Router im Mesh eindeutige, im Internet erreichbare IPv6-Adressen verwendet werden, dann muss der Router eine IP verwenden, die zum verwendeten Gateway passt, der Router muss also automatisch die IP zum Gateway setzen. Bei einem Wechseln des Gateways muss diese IP geändert werden. Ein Ansatz dieses zu bewerkstelligen ist auto-ipv6.

Funktionsweise

auto-ipv6 überwacht in regelmässigen Abständen (cronjob) die HNA-tabelle von OLSRD (das ist wo u.a. die Gateway-Ankündigungen gespeichert werden) und extrahiert daraus den Prefix (die ersten 3 Stellen der IPv6-Adresse) des Gateways. Wird ein neuer Gateway gefunden oder ein Wechsel des Gateways festgestellt, dann konfiguriert auto-ipv6 die eigenen Interfaces, Radvd und OLSRd neu, damit die neue Adresse verwendet werden kann.

Konfiguration

Die Konfiguration erfolgt in /etc/config/auto-ipv6:

config 'autoipv6' 'tunnel'
	option 'enable' '0'
config 'autoipv6' 'olsr_node'
	option 'enable' '1'

Tunnel: Es wird ein 6to4 Tunnel aufgebaut. Diese Option kann man auf Gateways verwenden. olsr_node: Autoconfig der IPv6-Adressen

Varianten

Derzeit gibt es mindestens zwei Varianten von auto-ipv6. Die bereits oben erwähnte aus Prenzlauer Berg und eine, die gerade getestet wird: "auto-ipv6-ib".

auto-ipv6

Die (neue) IPv6-Adresse (bzw. der neue zu nutzende /64 Netzbereich) wird aus dem Prefix des Gateways plus zwei Byte Zufallszahlen gebildet.

Bsp.: Der Gateway hat das Prefix 2001:db8:1234::/48. Als ZufallsZahl wird (zufällig) 5678 gewürfelt. Also wird auf dem Interface ein Netz 2001:db8:1234:5678::/64 konfiguriert, der Gateway selbst erhält dabei die IP 2001:db8:1234:5678::1.

Anschließend werden diese Netze in die OLSRd-Konfiguration als HNA eingetragen (damit bekannt wird, dass dieses Netz zu diesem Knoten gehört) und OLSRd sowie auch radvd neu gestartet.

auto-ipv6-ib

Benutzt den Code von auto-ipv6, jedoch mit einigen Änderungen, der Hauptunterschied ist, dass pro Interface nur ein /112-netz generiert wird. Um eindeutige Netze zu konfigurieren wird dabei die Macadresse des Interfaces verwendet. Den Quellcode gibt es hier: http://trac.augsburg.freifunk.net/browser/kamikaze/packages/auto-ipv6-ib

Bsp.: Der Gateway hat das Prefix 2001:db8:1234:5678:/64. Der Router hat auf einem Interface die Macadresse 21:22:23:24:25:26. Dann wird auf diesem Interface das Netz 2001:db8:1234:5678:2122:2324:2526::/112 konfiguriert. Da mit so "kleinen" Netzen stateless autoconfiguration nicht mehr funktioniert wird DHCPv6 (ist in neueren Versionen (ab 2.61) von dnsmasq benutzbar) verwendet, um Adressen auf Clients zu konfigurieren.

Verbesserungspotenzial

  • In beiden Varianten muss olsrd nach einem Gatewaywechsel neu gestartet werden (und sogar beide, IPv4 und IPv6, da sie dasselbe init-script verwenden), damit die vom Skript eingetragenen HNA-Einträge aktiv werden. Während des olsrd-restarts werden aber bisher konfigurierte Routen vergessen und damit kommt es zu einer Nichterreichbarkeit für wenige Minuten. Abhilfe würde hier ein OLSR-Plugin schaffen, das HNA automatisch announcen kann (so wie es das dyngw plugin macht)
  • Um herauszufinden, welches der aktuelle Gateway ist wird derzeit ein cronjob verwendet, der in kurzen Abständen (1-4 Minuten) die HNA-Tabelle überwacht. Eleganter und schneller wäre eine Lösung, bei der ein OLSR-Plugin die Ausführung von auto-ipv6(-ib) triggert, sobald ein neuer Defaultgateway gewählt wurde.