NAT64: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „{{IPv6-Übergangsmechanismen}} '''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 de…“
 
K Textersetzung - „Man-Pages“ durch „Man-Page“
 
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{IPv6-Übergangsmechanismen}}
'''NAT64''' - Übersetzung von [[IPv4]]- in [[IPv6]]-Adressen
 
== Beschreibung ==
'''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''' 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.
[[Datei:NAT64.svg|mini|hochkant=2|NAT64 Funktionsweise]]


== Funktionsweise ==
== Funktionsweise ==
=== Adressschreibweise ===
[[Datei:NAT64.svg|mini|400px|NAT64 Funktionsweise]]
<!-- Beispieladressen aus RFC6146 übernommen. IPv6-Adressen teilweise ausgeschrieben zum besseren Verständnis -->
<!-- Beispieladressen aus RFC6146 übernommen. IPv6-Adressen teilweise ausgeschrieben zum besseren Verständnis -->
<!-- Gutes Tool zur Umrechnung ist ipv6calc -->
<!-- Gutes Tool zur Umrechnung ist ipv6calc -->
=== Adressschreibweise ===
NAT64 nutzt die Tatsache aus, dass die 128-bittigen IPv6-Adressen gut in der Lage sind, eine 32-bittige IPv4-Adresse zu enthalten:
NAT64 nutzt die Tatsache aus, dass die 128-bittigen IPv6-Adressen gut in der Lage sind, eine 32-bittige IPv4-Adresse zu enthalten:


Zeile 38: Zeile 39:


== DNS64 ==
== DNS64 ==
DNS64 ist eine Technik, die NAT64 ergänzt. Sie ist in <nowiki>RFC&nbsp;6147</nowiki> definiert<ref>{{RFC-Internet |RFC=6147 |Titel=DNS64 |Datum=}}</ref> und basiert auf [[Domain Name System|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:
DNS64 ist eine Technik, die NAT64 ergänzt. Sie ist in <nowiki>RFC&nbsp;6147</nowiki> definiert und basiert auf [[Domain Name System|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:


# ''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''
# ''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''
Zeile 47: Zeile 48:


== Vor- und Nachteile ==
== Vor- und Nachteile ==
NAT64 mit DNS64 ist für IPv6-Hosts ein transparentes und einfaches Verfahren zur Verbindung beider Protokollwelten. Bei der Umstellung auf NAT64 mit DNS64 müssen Hosts lediglich auf einen DNS64-Nameserver wechseln, was in den meisten Umgebungen automatisiert über [[Dynamic Host Configuration Protocol#DHCPv6|DHCPv6]] oder [[IPv6#Autokonfiguration|SLAAC]] mit <nowiki>RFC&nbsp;8106</nowiki><ref>{{RFC-Internet |RFC=8106 |Titel=IPv6 Router Advertisement Options for DNS Configuration |Datum=2017}}</ref> erfolgen kann.
NAT64 mit DNS64 ist für IPv6-Hosts ein transparentes und einfaches Verfahren zur Verbindung beider Protokollwelten. Bei der Umstellung auf NAT64 mit DNS64 müssen Hosts lediglich auf einen DNS64-Nameserver wechseln, was in den meisten Umgebungen automatisiert über [[Dynamic Host Configuration Protocol#DHCPv6|DHCPv6]] oder [[IPv6#Autokonfiguration|SLAAC]] mit <nowiki>RFC&nbsp;8106</nowiki> erfolgen kann.


Die Nachteile von NAT64 resultieren vorrangig daraus, dass es sich weiterhin um ein NAT-Verfahren handelt. Wird [[Internetdienstanbieter|providerseitig]] ein dynamischer IPv4-Adresspool verwendet (''statesome'' oder ''stateful NAT64'') muss der Verbindungsaufbau vom Client aus erfolgen, d.&nbsp;h. Serverdienste sind auf Kundenseite nicht möglich. Das schließt auch [[Peer-to-Peer]]-Dienste mit ein. Ein dynamischer IPv4-Adresspool ist dabei aber Voraussetzung, um providerseitig IPv4-Adressen einzusparen, was für Provider den Vorteil von NAT64 gegenüber [[IPv6#Dual-Stack|Dual-Stack]] darstellt.
Die Nachteile von NAT64 resultieren vorrangig daraus, dass es sich weiterhin um ein NAT-Verfahren handelt. Wird [[Internetdienstanbieter|providerseitig]] ein dynamischer IPv4-Adresspool verwendet (''statesome'' oder ''stateful NAT64'') muss der Verbindungsaufbau vom Client aus erfolgen, d.&nbsp;h. Serverdienste sind auf Kundenseite nicht möglich. Das schließt auch [[Peer-to-Peer]]-Dienste mit ein. Ein dynamischer IPv4-Adresspool ist dabei aber Voraussetzung, um providerseitig IPv4-Adressen einzusparen, was für Provider den Vorteil von NAT64 gegenüber [[IPv6#Dual-Stack|Dual-Stack]] darstellt.
Zeile 57: Zeile 58:


== Unterstützung ==
== Unterstützung ==
Der Paketfilter [[pf (Paketfilter)|pf]] von [[OpenBSD]] erlangte in der am 1. Mai 2012 zusammen mit OpenBSD 5.1 veröffentlichten Version Unterstützung für NAT64. Das Paket [[netfilter]]/iptables benötigt für NAT64<ref>[http://thomas.gelf.net/blog/archives/Licht-ins-Dunkel-DNS64-und-NAT64,43.html thomas.gelf.net]</ref> noch einen Patch. <!-- bitte prüfen, ob das noch so ist -->
Der Paketfilter [[pf (Paketfilter)|pf]] von [[OpenBSD]] erlangte in der am 1. Mai 2012 zusammen mit OpenBSD 5.1 veröffentlichten Version Unterstützung für NAT64. Das Paket [[netfilter]]/iptables benötigt für NAT64 noch einen Patch. <!-- bitte prüfen, ob das noch so ist -->
Weitere Opensource NAT64-Implementationen als Programme außerhalb des Kernels sind TAYGA für Linux ([[stateless]])<ref>[http://www.litech.org/tayga/ litech.org]</ref> und WrapSix ([[stateful]])<ref>[https://www.semirocket.science/projects/wrapsix/ semirocket.science]</ref> sowie innerhalb des Kernels Jool (stateful)<ref>[http://jool.mx/en/index.html jool.mx]</ref>
Weitere Opensource NAT64-Implementationen als Programme außerhalb des Kernels sind TAYGA für Linux ([[stateless]])  
Die Nameserversoftware [[BIND]] unterstützt DNS64.<ref>[https://ftp.isc.org/isc/bind9/cur/9.11/doc/arm/Bv9ARM.ch06.html#options_grammar ftp.isc.org]</ref>
sowie innerhalb des Kernels Jool (stateful)
 
Die Nameserversoftware [[BIND]] unterstützt DNS64.
== Weblinks ==
* {{RFC-Internet |RFC=6146 |Titel=Stateful NAT64 |Datum= |Kommentar=beschreibt den eigentlichen NAT64-Mechanismus}}
* {{RFC-Internet |RFC=6147 |Titel=DNS64 |Datum= |Kommentar=beschreibt den für den Betrieb von NAT64 wichtigen Mechanismus DNS64}}


=== Einzelnachweise ===
<noinclude>
<references />
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
==== Sicherheit ====
==== Dokumentation ====
===== RFC =====
{| class="wikitable sortable options"
|-
! RFC !! Titel
|-
| [https://www.rfc-editor.org/rfc/6146 6146] || Stateful NAT64
|-
| [https://www.rfc-editor.org/rfc/6147 6147]|| DNS64
|-
| [https://www.rfc-editor.org/rfc/5942 5942] || IPv6 Subnet Model: The Relationship between Links and Subnet Prefixes
|}
===== Man-Page =====
===== Info-Pages =====
==== Links ====
===== Projekt =====
===== Weblinks =====


[[Kategorie:Internet Protocol]]
[[Kategorie:IPv6/Translation]]
[[Kategorie:IPv6-Übergangsmechanismus]]
</noinclude>

Aktuelle Version vom 6. November 2024, 12:27 Uhr

NAT64 - Übersetzung von IPv4- in IPv6-Adressen

Beschreibung

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.

Funktionsweise

Adressschreibweise

NAT64 Funktionsweise

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 (in die letzten 32 Bits der 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 dezimale IPv4-Adresse von der IPv6-Implementierung automatisch in Hexadezimal-Schreibweise umgewandelt.

Routing

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.): c0.00.02.01 → 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

NAT64 ist stateful, das heißt, der NAT64-Router merkt sich, welcher IPv6-Host und welcher IPv4-Host miteinander kommunizieren. In der NAT64-Tabelle des Routers wird darüber Buch geführt. Dies funktioniert ähnlich 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, weiß der Router sofort, an welchen IPv6-Host er das Paket weiterleiten muss.

DNS64

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 hält die IPv6-Adresse für die valide Adresse von host1.example.net und kann nun über diese Adresse IPv6-Pakete senden, die vom NAT64-Router ebenfalls transparent konvertiert und an den Zielhost gesendet werden.

Vor- und Nachteile

NAT64 mit DNS64 ist für IPv6-Hosts ein transparentes und einfaches Verfahren zur Verbindung beider Protokollwelten. Bei der Umstellung auf NAT64 mit DNS64 müssen Hosts lediglich auf einen DNS64-Nameserver wechseln, was in den meisten Umgebungen automatisiert über DHCPv6 oder SLAAC mit RFC 8106 erfolgen kann.

Die Nachteile von NAT64 resultieren vorrangig daraus, dass es sich weiterhin um ein NAT-Verfahren handelt. Wird providerseitig ein dynamischer IPv4-Adresspool verwendet (statesome oder stateful NAT64) muss der Verbindungsaufbau vom Client aus erfolgen, d. h. Serverdienste sind auf Kundenseite nicht möglich. Das schließt auch Peer-to-Peer-Dienste mit ein. Ein dynamischer IPv4-Adresspool ist dabei aber Voraussetzung, um providerseitig IPv4-Adressen einzusparen, was für Provider den Vorteil von NAT64 gegenüber Dual-Stack darstellt.

NAT64 mit DNS64 basiert auf der Idee, bei einer DNS-Anfrage statt einer IPv4- eine IPv6-Adresse zurückzugeben. Werden aber keine Namen, sondern direkt IPv4-Adressen verwendet (zum Beispiel URIs mit numerischen IPv4-Adressen), findet erst gar keine DNS-Anfrage statt. Auch Anwendungen die veraltete, zu IPv6 inkompatible Programmierschnittstellen verwenden, können keine Verbindung aufbauen. Diese Probleme lösen ergänzende Verfahren wie 464XLAT.

Öffentliches Gateway

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

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. Das Paket netfilter/iptables benötigt für NAT64 noch einen Patch. Weitere Opensource NAT64-Implementationen als Programme außerhalb des Kernels sind TAYGA für Linux (stateless) sowie innerhalb des Kernels Jool (stateful) Die Nameserversoftware BIND unterstützt DNS64.


Anhang

Siehe auch

Sicherheit

Dokumentation

RFC
RFC Titel
6146 Stateful NAT64
6147 DNS64
5942 IPv6 Subnet Model: The Relationship between Links and Subnet Prefixes
Man-Page
Info-Pages

Links

Projekt
Weblinks