NAT64

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
IPv6-Übergangsmechanismen
4in6 Tunneling von IPv4 in IPv6
6in4 Tunneling von IPv6 in IPv4
6over4 Transport von IPv6-Datenpaketen zwischen Dual-Stack Knoten über ein IPv4-Netzwerk
6to4 Transport von IPv6-Datenpaketen über ein IPv4-Netzwerk
AYIYA Anything In Anything
Dual-Stack Netzknoten mit IPv4 und IPv6 im Parallelbetrieb
Dual-Stack Lite Wie Dual-Stack, jedoch mit globaler IPv6 und Carrier-NAT IPv4
6rd IPv6 rapid deployment
ISATAP Intra-Site Automatic Tunnel Addressing Protocol
Teredo Kapselung von IPv6-Datenpaketen in IPv4-UDP-Datenpaketen
NAT64 Übersetzung von IPv4-Adressen in IPv6-Adressen
464XLAT Übersetzung von IPv4- in IPv6- in IPv4-Adressen
SIIT Stateless IP/ICMP Translation

NAT64 ist ein IPv6-Übergangsmechanismus. Er dient zur Übersetzung von IPv4- in IPv6-Adressen. Sein Zweck besteht vornehmlich in der Ermöglichung einer Kommunikation zwischen nur per IPv6 erreichbaren Hosts auf der einen Seite und nur per IPv4 erreichbaren Hosts auf der anderen Seite. In Sonderfällen ist es zwar möglich, durch IPv4-Hosts eine Verbindung zu initiieren, normalerweise bleibt dies allerdings den IPv6-Hosts vorbehalten. Da es auf absehbare Zeit jedoch viel mehr IPv6-Hosts als IPv4-Hosts geben wird, ist dies nicht problematisch, denn der Hauptzweck besteht darin, IPv4-Server von IPv6-Netzen aus anzusprechen.

NAT64 Funktionsweise

Funktionsweise[Bearbeiten]

Adressschreibweise[Bearbeiten]

NAT64 nutzt die Tatsache aus, dass die 128-bittigen IPv6-Adressen gut in der Lage sind, eine 32-bittige IPv4-Adresse zu enthalten:

IPv4: 192.0.2.1 - c0.00.02.01 (Hexadezimale Schreibweise der IPv4-Adresse)
IPv6: 64:ff9b:: - 64:ff9b::c000:0201 (Als die letzten 32 Bits in die IPv6-Adresse eingebettet)

Das Präfix 64:ff9b::/96 ist speziell für diesen Mechanismus reserviert worden. Alternativ und zur einfacheren Verwendung kann statt der rein hexadezimalen Schreibweise auch eine Mischschreibweise verwendet werden:

192.0.2.1 -> 64:ff9b::192.0.2.1

Dabei wird die IPv4-Adresse von der IPv6-Implementierung automatisch in Hexadezimal-Schreibweise umgewandelt.

Routing[Bearbeiten]

Will nun der IPv6-Host 2001:db8::1 Kontakt mit dem IPv4-Server 192.0.2.1 aufnehmen, so sendet er in seinem lokalen Netzwerk Pakete an die Adresse 64:ff9b::c000:0201. Hierbei würde beispielsweise eine statische Route helfen, die alle Pakete mit dem Ziel 64:ff9b::/96 an den NAT64-Router weiterleitet. Der NAT64-Router kann nun die Pakete entgegennehmen, die IPv4-Adresse "auspacken" und den Inhalt ab inklusive OSI-Schicht 4 gekapselt in IPv4-Pakete über seinen IPv4-Anschluss weiterrouten:

IPv6-Adresse: 64:ff9b::c000:0201 -> IPv4-Adresse (hex.): c0000201 -> IPv4-Adresse (dez.): 192.0.2.1

Bei der Nutzung der Präfixe ist man nicht unbedingt auf 64:ff9b::/96 beschränkt. Bei entsprechender Konfiguration kann man ein beliebiges Subnetz aus seinem zugeteilten Netz für diesen Zweck nutzen.

Stateful[Bearbeiten]

NAT64 ist stateful, "merkt" sich also, welcher IPv6-Host und welcher IPv4-Host miteinander kommunizieren. In der NAT64-Tabelle des Routers wird darüber Buch geführt. Dies funktioniert im Grunde genauso wie herkömmliche NAT.

Ein Beispiel: Wenn 2001:db8::dead:beef eine Verbindung mit 192.0.2.56 aufbauen möchte, so schickt er (wie gehabt) die Pakete, die an diesen Host gerichtet sind, an 64:ff9b::c000:238, also im Grunde den Router. Dieser entnimmt die IPv4-Adresse und routet die Pakete weiter, merkt sich aber dabei

  1. den Sender (Source host)
  2. den Empfänger (Destination host)
  3. den Sendeport (TCP/UDP; Source port)
  4. den Empfängerport (TCP/UDP; Destination Port)

Trifft nun auf IPv4-Seite des Routers ein Paket mit "gegenteiligen" Daten ein, also Sender und Empfänger jeweils vertauscht (wie für eine Antwort logisch, vgl. Briefverkehr), weiß der Router sofort, an welchen IPv6-Host er das Paket weiterleiten muss.

DNS64[Bearbeiten]

DNS64 ist eine Technik, die NAT64 ergänzt. Sie ist in RFC 6147 definiert und basiert auf DNS. Hierbei erzeugt ein DNS64-Server aus A-Resource Records (A-RRs, also DNS-Einträge für IPv4-Adressen) automatisch und transparent AAAA-RRs (AAAA: Feldname im DNS für IPv6-Adressen). Dies funktioniert über das erläuterte Verfahren:

  1. 2001:db8::1 möchte Kontakt mit dem Nur-IPv4-Host host1.example.net aufnehmen. Er weiß nichts über die Protokollunterstützung dieses Hosts, da er nur dessen Namen kennt. Er fragt seinen Nameserver 2001:db8::2 nach der Adresse für host1.example.net
  2. Sein DNS64-Nameserver 2001:db8::2 versucht nun zunächst eine AAAA-Auflösung, findet jedoch keinen passenden Eintrag (da host1.example.net ja keine IPv6-Adresse hat). Dafür erhält er vom für host1.example.net zuständigen Nameserver einen A-Record mit der IPv4-Adresse: 192.0.2.1
  3. Diese Adresse wird nun in die (evtl. für dieses Netzwerk gültige) IPv6-NAT64-Form transformiert: 64:ff9b::192.0.2.1 bzw. 64:ff9b::c000:0201
  4. Der DNS64-Server gibt nun dem anfragenden Host 2001:db8::1 einen AAAA-RR zurück: 64:ff9b::c000:0201
  5. Für diesen ist das ganze transparent. Er "denkt" nun, host1.example.net habe tatsächlich die Adresse 64:ff9b::c000:0201. Er kann nun über IPv6-Pakete an diese Adresse senden, die vom NAT64-Router ebenfalls transparent konvertiert werden.

Vor- und Nachteile[Bearbeiten]

Vorteile von NAT64 (insbesondere in Kombination mit DNS64) sind unter anderem:

  • Völlig transparent für die IPv6-Hosts
  • Günstige und einfache Verbindung beider Protokollwelten
  • Für neue Hosts ist nur eine Konfiguration nötig: Nameserver auf einen DNS64-Server umstellen

Nachteile sind, vor allem, weil NAT64 immer noch ein NAT-Verfahren ist:

  • Um von IPv4-Hosts aus Verbindungen zu IPv6-Hosts aufzubauen, benötigt man statische NAT-Einträge und extra IPv4-Adressen für jeden anzusprechenden IPv6-Host für eine 1-zu-1-Weiterleitung oder statische Portweiterleitungen.
  • Typische NAT-Probleme, z.B. mit P2P-Anwendungen

Öffentliches Gateway[Bearbeiten]

NAT64 in Kombination mit DNS64 ist als öffentliches Angebot geeignet, zum Beispiel für Provider. Hierbei muss nur der DNS64-Nameserver dieses Providers bei den Clients eingetragen werden, um die Verbindung mit IPv4-Hosts zu ermöglichen.

Unterstützung[Bearbeiten]

Der Paketfilter pf von OpenBSD erlangte in der am 1. Mai 2012 zusammen mit OpenBSD 5.1 veröffentlichten Version Unterstützung für NAT64. Weiterhin existiert ein Patch für BIND, um DNS64 zu ermöglichen, und ebenso ein Patch für netfilter/iptables für NAT64.[1]

Literatur[Bearbeiten]

Spezifikationen[Bearbeiten]

  • RFC 6146 - "Stateful NAT64". Beschreibt den eigentlichen NAT64-Mechanismus
  • RFC 6147 - "DNS64". Beschreibt den für den Betrieb von NAT64 wichtigen Mechanismus DNS64

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. http://thomas.gelf.net/blog/archives/Licht-ins-Dunkel-DNS64-und-NAT64,43.html