5 vor 12Das ganze Wochenende schon bin ich dabei mein von Hetzner zugewiesenes IPv6-Subnetz (/64) auf meine virtuellen Maschinen zu verteilen, damit diese auch über IPv6 zu erreichen sind und somit ein wenig zukunftssicherer werden. So langsam bin ich auf einem Stand, an dem ich mir einen Golfschläger wünsche um die IP-Adressen damit irgendwo hinzuprügeln.

Aber fangen wir am Anfang an: Bei Hetzner ist es die "nette" Angewohnheit IP-Subnetze (egal ob IPv4 oder IPv6) auf bestimmte MAC-Adressen (also auf bestimmte (virtuelle) Netzwerkkarten) zu binden. Das macht es schon bei einer IPv4-Konfiguration in einem VSphere Hypervisor nötig eine Router-VM einzusetzen, die dann IP-Adressen weiterverteilen kann, da die Server sonst nicht auf das Netzwerk zugreifen können.

Bekommt man dann sein IPv6-Netz, ist das nicht wirklich stark gebunden, denn zum Teil konnten VMs mit fremden MAC-Adressen die IPs nutzen, die meisten allerdings konnten das nicht. Also auch hier muss wieder ein Router-Setup eingesetzt werden, welches dafür sorgt, dass die Anfrage im Endeffekt von einer der registrierten MAC-Adressen kommt. (Das sind die gleichen, die man schon für die IPv4-Subnetze bekommen hat.)

Hier geht der Mist dann los. Die VMs, die man an die vergebenen MACs gebunden hat können direkt IPv6-Adressen statisch zugewiesen bekommen und mit ein paar Tricks (manuell vergebene Routen) können sie das Netz auch nutzen. Die Maschinen, die allerdings MAC-Adressen haben, die nicht bei Hetzner registriert sind müssen wieder über die Router-VM arbeiten.

Bei IPv6 gibt es kein NAT mehr, es gibt kein ARP und somit kein Proxy-ARP und überhaupt eigentlich nichts was einem normalen Linux-System eine ordentliche Unterstützung für einen IPv6-Router bietet. Sollte eigentlich auch gar nicht mehr nötig sein. Wäre es auch nicht wenn man nicht gezwungen würde von Bridge-Netzwerken abzusehen und ein Host-Only Netzwerk einzusetzen.

Nachdem man also im sysctl das IPv6-Forwarding eingeschaltet hat wäre theoretisch alles prima wenn diese Router-VM denn einfach allen Netz-Traffic aus dem IPv6-Subnet abbekommen würde. Damit sind wir an dem Punkt angekommen an dem ich über Hetzner fluche. Der Hetzner-Router selber nutzt eine "neighborhood detection", die dafür da ist, dass ein Router erkennen kann was in seiner Nähe los ist und den Traffic dorthin einfach weiter zu leiten.

Nun ist unser Aufbau aber folgender: VM-X -> Router-VM -> Hetzner Router. Wir sehen: Die Router-VM ist der Nachbar des Hetzner Routers. Die VM nicht mehr und somit fällt diese auch aus der automatischen Erkennung raus.

An dieser Stelle kann man einfach verzeifelt aufgeben oder aber man aktiviert einen "neighborhood proxy" auf der Router-VM. Dieser Proxy muss dann nur noch mit den IP-Adressen aller VMs hinter ihm gefüttert werden und danach funktioniert das Setup in der Theorie. Leider gibt es keine Möglichkeiten um ein ganzes Subnetz in den Proxy einzutragen sondern es muss jede einzelne IP einzeln eingetragen werden. (Herzlichen Glückwunsch! Ist ja nur ein 64er-Subnetz...)

Eine Anleitung für XEN habe ich hier gefunden. Diese Anleitung lässt sich mit ein wenig Nachdenken auch auf ein VSphere-Setup übertragen. Bei mir sind nun zumindest die VMs hinter dem Router via IPv6 erreichbar, wobei dieser Status nicht allzu stabil zu sein scheint. Hin und wieder gibt es Aussetzer und der Router selber hat aus irgend einem Grund auch kein IPv6 mehr...

Ich glaube man versteht langsam wieso ich geringfügig "pissed" bin. Von Hetzner selber gibt es (zumindest im via Google auffindbaren Bereich) keine sinnvollen Anleitungen für diesen Anwendungsfall, so dass das ganze eigentlich mehr ein Im-Dunkeln-Tappen ist als ein ordentliches Konfigurieren.

Sollte einer meiner Leser da ein besseres Setup für gefunden haben würde ich mich sehr über einen Kommentar zum Thema freuen. Optimal ist meins definitiv nicht... Aber das hat man halt davon wenn man sich frühzeitig und nicht erst um 5 vor 12 Gedanken um die Umsetzung neuer Standards macht...