IPv6-Tunneling mit 6in4 / 6to4 / 6over4 / 4in6

Wenn innerhalb des eigenen lokalen Netzwerks IPv6 funktioniert, aber am Internet-Anschluss noch nicht, dann können die IPv6-Clients über einen Tunnel durch das IPv4-Netz mit IPv6-Servern kommunizieren. Dafür benötigt man in der Regel einen Tunnel-Provider, der die lokalen IPv6-Pakete über das IPv4-Internet ins IPv6-fähige Internet routet. Dafür gibt es verschiedene Tunneling-Verfahren.

Tunneling-Verfahren, wie 6in4 oder 6to4, machen natürlich nur dann Sinn, wenn der eigene Netzzugangsprovider noch keinen Dual-Stack-Zugang anbietet, sondern nur IPv4. Da IPv6 sich früher oder später sowieso durchsetzen wird, sind Tunneling-Verfahren nur eine vorübergehende Lösung. Längerfristig wird man immer natives IPv6 anstreben, mittelfristig auf den Parallelbetrieb (Dual-Stack) setzen und vorübergehend Tunneling verwenden.

Funktionsweise von Tunneling

Tunneling-Prinzip

Die Grundidee von IPv6 ist, dass es über alle Übertragungssysteme funktioniert. Beispielsweise auch über IPv4. In der Regel sind zwei Router die Endstellen für den Tunnel. Der eigene Netzzugangsrouter und das IPv6-Gateway oder -Relay des Tunnel-Providers. Doch auch Clients können eigene Tunnelverbindungen aufbauen.

Bei diesem Szenario muss man berücksichtigen, dass mindestens ein NAT-Router und die gesamte IPv4-Infrastruktur unter dem IPv6-Tunnel liegt. Die Latenz dieser Infrastruktur muss zur Roundtrip-Zeit der getunnelten IPv6-Pakete hinzugerechnet werden. Das kann für die eine oder andere Anwendung ein Problem sein.
Dann muss man berücksichtigen, dass die Komplexität der Infrastruktur steigt und unter Umständen die Fehlersuche erschwert. Außerdem kann ein IPv6-Tunnel nur dann funktionieren, wenn auch IPv4 geht.
Deshalb eignet sich Tunneling nur als vorübergehende Übergangslösung hinzu Dual-Stack mit nativem IPv6. Oder auch als Lern- und Übungsumgebung. Für einen langfristigen und produktiven Betrieb ist ein IPv6-Tunnel nicht geeignet.
Einen großen Vorteil hat das Tunneling von IPv6 dann aber doch. In der Regel ist keine Änderung an der bestehenden Infrastruktur notwendig.

6in4-Tunneling

6in4-Tunneling

Beim Tunneling mit "6in4" müssen die Clients im lokalen Netzwerk über IPv6-Adressen verfügen und auch die Server im Internet unter einer IPv6-Adresse erreichbar sein. Zwischen dem Client und dem Server müssen sich zudem zwei Router oder Gateways im Dual-Stack-Betrieb befinden. Also sowohl IPv4 als auch IPv6 beherrschen. Der erste Dual-Stack-Router generiert IPv4-Pakete, in denen sich die IPv6-Pakete befinden. Über das IPv4-Netz gelangt das IPv4-Paket zum letzten Dual-Stack-Router, der das IPv6-Paket aus dem IPv4-Paket herausholt und an den IPv6-fähigen Server weiterleitet.
Konkret heißt das, man sucht sich jemanden, der IPv6-Connectivity hat. Zum Beispiel einen Tunnel-Provider oder Tunnel-Broker. Mit dem einigt man sich, wie der Tunnel zustande kommen soll (Protokoll) und lässt sich anschließend einen Präfix zuteilen (Adressvergabe).

4in6-Tunneling

Bei "4in6" wird das Prinzip von "6in4" umgekehrt. Es ist dann notwendig, wenn man IPv4-Pakete in einem IPv6-Netz transportieren will. Dazu benötigt man jeweils einen IPv4-Client und IPv4-Server und zwei im Dual-Stack-Betrieb befindliche Router. Beim Dual-Stack-Router auf der Client-Seite wird das IPv4-Paket in ein IPv6-Paket gepackt, über das IPv6-Netz übertragen und beim letzten Dual-Stack-Router wieder ausgepackt. Von dort wird das IPv4-Paket an den IPv4-Server weitergeleitet.

6to4-Tunneling

6to4-Tunneling

"6to4" ist ein Tunneling-Verfahren, dass nur dafür interessant ist, um IPv6-only Dienste zu erreichen. Und 6to4 macht nur dann Sinn, wenn man eine öffentliche IPv4-Adresse hat. In der Regel braucht man "6to4" nur zu aktivieren, wenn man Dienste ansprechen möchte, die nur IPv6 können.

Für "6to4" ist der gesamte IPv6-Adressraum "2002::/16" reserviert. Dadurch ist es möglich alle öffentlichen IPv4-Adresse bei Bedarf in eine global gültige IPv6-Adresse umzuwandeln. Die IPv6-Adresse wird dabei in die Form "2002:{IPv4-Adresse}" gebracht. Die IPv4-Adresse wird in die hexadezimale Schreibweise umgewandelt. Anschließend kann der Paketinhalt in einem IPv6-Paket übertragen werden.

Das bedeutet, dass jeder, der eine öffentliche IPv4-Adresse hat automatisch auch eine IPv6-Adresse hat. Nachteil ist, ändert sich die IPv4-Adresse, dann ändert sich automatisch auch die IPv6-Adresse. Wenn man keine Dienste betreibt, ist das nicht weiter schlimm.

Die Frage ist wohin werden die IPv6-Pakete getunnelt? Gemeint ist, was ist die IPv4-Ziel-Adresse? Der Router tunnelt zu der IPv4-Anycast-Adresse "192.88.99.1". Das bedeutet, irgendwo gibt es ein Gateway, dass das IPv6-Paket aus dem IPv4-Paket auspackt und ins IPv6-Netz weiterleitet. Der Rückweg funktioniert genauso, nur umgekehrt. Das IPv6-Paket geht zu irgendeinem Gateway, dass das IPv6-Paket in ein IPv4-Paket packt und an die angegebene IPv4-Adresse, die in der IPv6-Adresse drinsteht weiterleitet.
Das bedeutet, dass die Pakete nie den selben Hin- und Rückweg nehmen, was ein bisschen problematisch ist.

6rd / IPv6 Rapid Deployment

Eine Variante von "6to4" ist "6rd" (IPv6 Rapid Deployment). Es eignet sich allerdings nur für typische Endkunden-Internet-Anschlüsse, da die IPv6-Adressen zentral vergeben werden.
"6to4" war eigentlich für den nahtlosen Umstieg auf IPv6 gedacht. Leider funktioniert es hinter Carrier-Grade-NAT (CGNAT) nicht.

6over4-Tunneling

"6over4" funktioniert ähnlich wie "6to4". Bei "6over4" wird eine IPv6-Adresse in der Form "fe80::{IPv4-Adresse}" gebildet. Dabei wird die IPv4-Adresse in hexadezimaler Schreibweise verwendet. Das IPv6-Paket mit der link-lokalen Adresse wird anschließend in IPv4 eingebettet und über ein IPv4-Multicast-Netzwerk übertragen.
Dieses Tunneling-Verfahren kommt allerdings wegen Durchsatz- und Sicherheitsproblemen nicht so häufig zum Einsatz. Die einfacheren und praktikableren Tunnelingverfahren "6in4" und "6to4" sind viel mehr verbreitet als "6over4".

AYIYA - Anything In Anything

Tunneling, wie 6in4 oder 6to4, führt an typischen Internet-Anschlüssen zu Problemen, wenn der Zugang über einen NAT-Router hergestellt wird. Die Address-Übersetzung von NAT und auch restriktive Firewalls, verhindern das Tunneling, wenn der Netzzugangsrouter das entsprechende Tunneling-Verfahren nicht beherrscht. Deshalb findet Tunneling per "6*4" nicht so häufig statt.

Was auch ein Problem ist, wenn ein Internet-Anschluss seine IPv4-Adresse dynamisch zugeteilt bekommt. Dann muss die neue IPv4-Adresse bei jedem Wechsel an den Tunnel-Endpunkt übermittelt werden. Dafür gibt es dann Tunnel-Management-Protokolle, wie zum Beispiel AYIYA (IPv4 in IPv6-UDP and IPv6 in IPv4-UDP).
Das Protokoll AYIYA ist ein Entwurf von SixXS und wird auch nur von dieser Organisation verwendet.

Um einen AYIYA-Tunnel aufzubauen braucht man eine Client-Software für den eigenen Rechner. Oder man hat einen Netzzugangsrouter, der einen solchen AYIYA-Tunnel aufbauen kann. Dort gibt man die Account-Daten des Tunnel-Providers ein und der loggt sich dann beim Tunnel-Provider ein, holt sich die Konfiguration und sagt dem Tunnel-Endpunkt auf der anderen Seite, wenn sich die IPv4-Adresse geändert hat.
Selbst wenn sich die IPv4-Adresse ändert, gibt es nur eine kurze Unterbrechung, sofern die Anwendung nicht in einen Timeout läuft.
Obwohl sich dann die IPv4-Adresse immer ändert, behält mein seinen eigenen IPv6-Präfix vom Tunnel-Provider.

Der Transport von IPv6-Paketen erfolgt nicht direkt in IPv4, sondern in UDP. Nur so kann man einen Tunnel in einer NAT-Umgebung betreiben. Gleichzeitig kann ein Tunnelendpunkt seine neue Adresse per AYIYA dem anderen Tunnelendpunkt mitteilen, ohne das die Stabilität des Tunnels beeinträchtigt wird.

Tunnel-Provider: SixXS (Six Access)

Im weitesten Sinne ist SixXS kein Tunnel-Provider, sondern ein Tunnel-Broker, der IPv6-PoPs (Point of Presence) verwaltet, die IPv6-Connectivity anbieten und bereit sind diese zu teilen. Die Zugangspunkte sind auf der ganzen Welt verteilt, von denen man sich am besten den lokal nächstliegenden aussucht. Um einen Tunnel-Zugang und einen IPv6-Präfix zu bekommen muss man sich Anmelden, den Tunnel beantragen und einige Fragen beantworten. Das Verfahren etwas umständlich, weil das manuell geprüft wird. Allerdings wird dabei die Ernsthaftigkeit der eigenen Anwendung geprüft.
Um IPv6-Tunneling mit SixXS zu betreiben braucht man eine Client-Software, die es für verschiedene Systeme gibt. Unter Linux ist die Einrichtung spielend leicht. Von Routern wird das Protokoll AYIYA so gut wie nicht unterstützt. Außer es handelt sich um einen Router, der auf Linux basiert. Alternativ lässt sich eine einem IPv4-Netzwerk auch ein IPv6-Gateway betreiben.

Tunnel-Provider: Hurricane Electric

Hurricane Electric ist ein globaler ISP und betreibt den Dienst www.tunnel-broker.net. Hier kann man kostenlos einen IPv6-Präfix bekommen und einen Tunnel einrichten. Da Hurricane Electric ein eigenes Netz betreibt, sind die Verbindungen darüber in der Regel schneller als bei den SixXS-Providern.

Übersicht: Übergangsverfahren