
Netzwerkadressübersetzung ( NAT ) ist eine Methode, um einen IP- Adressraum in einen anderen abzubilden, indem die Netzwerkadressinformationen im IP-Header von Paketen während der Übertragung über ein Routing-Gerät modifiziert werden . [ 1 ] Ursprünglich wurde diese Technik eingesetzt , um die Zuweisung einer neuen Adresse an jeden Host zu vermeiden, wenn ein Netzwerk verschoben wurde oder der vorgelagerte Internetdienstanbieter (ISP) wechselte, aber den Adressraum des Netzwerks nicht routen konnte. Angesichts der IPv4-Adressknappheit ist NAT ein gängiges und wichtiges Werkzeug zur Schonung des globalen Adressraums . Eine einzige über das Internet routbare IP-Adresse eines NAT-Gateways kann für ein gesamtes privates Netzwerk verwendet werden . [ 2 ]
Da die Netzwerkadressübersetzung (NAT) die IP-Adressinformationen in Paketen verändert, kann sich das spezifische Verhalten von NAT-Implementierungen in verschiedenen Adressierungsfällen und deren Auswirkungen auf den Netzwerkverkehr unterscheiden. Hersteller von Geräten mit NAT-Implementierungen dokumentieren das genaue Verhalten von NAT üblicherweise nicht. [ 2 ]
Geschichte
Das Internetprotokoll Version 4 (IPv4) verwendet 32-Bit-Adressen, mit denen etwa 4,3 Milliarden Geräte im Netzwerk eindeutig adressiert werden können. Bereits 1992 wurde deutlich, dass dies nicht ausreichen würde. Der RFC 1631 von 1994 beschreibt NAT als „kurzfristige Lösung“ für die beiden drängendsten Probleme des Internetprotokolls zu dieser Zeit: die Knappheit der IP-Adressen und die Skalierung des Routings. Bis 2004 hatte sich NAT weit verbreitet. [ 3 ]
Diese Technik wurde auch als IP-Masquerading bekannt . Der Begriff bezeichnet ein Verfahren, bei dem ein ganzer IP-Adressraum, üblicherweise bestehend aus privaten IP-Adressen, hinter einer einzigen IP-Adresse in einem anderen, meist öffentlichen Adressraum verborgen wird. Aufgrund der Beliebtheit dieser Technik zur Einsparung von IPv4-Adressraum wurde der Begriff NAT nahezu synonym mit IP-Masquerading verwendet.
Im Jahr 1996 wurde die Port-Adressübersetzung (PAT) eingeführt, [ 4 ] die die Übersetzung von Adressen auf Portnummern ausweitete.
Basic NAT
Die einfachste Form von NAT bietet eine Eins-zu-Eins-Übersetzung von IP-Adressen (RFC 1631). RFC 2663 bezeichnet diese Art von NAT als Basic NAT , auch Eins-zu-Eins-NAT genannt . Bei dieser Art von NAT werden nur die IP-Adressen, die IP-Header -Prüfsumme und alle übergeordneten Prüfsummen, die die IP-Adresse enthalten, geändert. Basic NAT kann verwendet werden, um zwei IP-Netzwerke mit inkompatiblen Adressen zu verbinden. [ 2 ]
Eins-zu-viele-NAT

Die meisten Netzwerkadressübersetzer ordnen mehrere private Hosts einer einzigen öffentlich zugänglichen IP-Adresse zu.
In einer typischen Konfiguration nutzt ein lokales Netzwerk eines der festgelegten privaten IP-Adress-Subnetze (RFC 1918 [ 5 ] ). Das Netzwerk verfügt über einen Router mit Netzwerkschnittstellen sowohl zum privaten als auch zum öffentlichen Netzwerk. Die öffentliche Adresse wird üblicherweise von einem Internetdienstanbieter (ISP) zugewiesen . Beim Datenverkehr vom privaten Netzwerk ins Internet übersetzt NAT die Quelladresse jedes Pakets von einer privaten Adresse in die öffentliche Adresse des Routers. Die NAT-Funktion verfolgt jede aktive Verbindung. Empfängt der Router eingehenden Datenverkehr aus dem Internet, verwendet er die während der ausgehenden Phase erfassten Verbindungsdaten, um zu bestimmen, an welche private Adresse die Antwort weitergeleitet werden soll. [ 2 ]
Pakete, die vom privaten ins öffentliche Netzwerk übertragen werden, erhalten eine geänderte Quelladresse, während Pakete, die vom öffentlichen zurück ins private Netzwerk gesendet werden, eine geänderte Zieladresse erhalten. Um Mehrdeutigkeiten bei der Übersetzung von Antworten zu vermeiden, sind weitere Anpassungen der Pakete erforderlich. Der Großteil des Internetverkehrs nutzt das Transmission Control Protocol (TCP) oder das User Datagram Protocol (UDP). Bei diesen Protokollen werden die Portnummern so geändert, dass die Kombination aus IP-Adresse (im IP-Header ) und Portnummer (im Transport-Layer-Header ) im zurückgesendeten Paket eindeutig dem entsprechenden Ziel im privaten Netzwerk zugeordnet werden kann. RFC 2663 verwendet den Begriff Netzwerkadress- und Portübersetzung ( NAPT ) für diese Art von NAT. [ 5 ] Weitere Bezeichnungen sind Portadressübersetzung ( PAT ), IP-Masquerading , NAT-Überlastung und Many-to-One-NAT . Dies ist die gebräuchlichste Art von NAT und wird im allgemeinen Sprachgebrauch synonym mit dem Begriff NAT verwendet.
Diese Methode ermöglicht die Kommunikation über den Router nur dann, wenn die Verbindung aus dem privaten Netzwerk stammt, da die initiale Übertragung die erforderlichen Informationen in den Übersetzungstabellen festlegt. Daher kann ein Webbrowser innerhalb des privaten Netzwerks Webseiten außerhalb des Netzwerks aufrufen, während Webbrowser außerhalb des Netzwerks keine innerhalb des Netzwerks gehosteten Webseiten aufrufen können. [ a ] Protokolle, die nicht auf TCP und UDP basieren, benötigen andere Übersetzungstechniken.
Der Hauptvorteil von Eins-zu-Viele-NAT besteht in der Milderung der IPv4-Adressknappheit, da ganze Netzwerke über eine einzige öffentliche IP-Adresse mit dem Internet verbunden werden können.
Übersetzungsmethoden
Netzwerkadress- und Portübersetzung kann auf verschiedene Weise implementiert werden. Anwendungen, die IP-Adressinformationen nutzen, müssen unter Umständen die externe Adresse eines Netzwerkadressübersetzers (NAT) ermitteln. Dies ist die Adresse, die von den Kommunikationspartnern im externen Netzwerk erkannt wird. Darüber hinaus kann es erforderlich sein, die Art der verwendeten Zuordnung zu untersuchen und zu kategorisieren, beispielsweise wenn ein direkter Kommunikationspfad zwischen zwei Clients eingerichtet werden soll, die sich hinter separaten NAT-Gateways befinden.
Zu diesem Zweck spezifizierte RFC 3489 im Jahr 2003 das Protokoll Simple Traversal of UDP over NATs ( STUN ). Es klassifizierte NAT-Implementierungen als Full-Cone-NAT , (Address-)Restricted-Cone-NAT , Port-Restricted-Cone-NAT oder symmetrisches NAT und schlug eine entsprechende Testmethodik für Geräte vor. Diese Verfahren gelten jedoch mittlerweile nicht mehr als Standard, da sie für die korrekte Bewertung vieler Geräte unzureichend sind. RFC 5389 standardisierte 2008 neue Methoden, und das Akronym STUN steht seither für den neuen Titel der Spezifikation: Session Traversal Utilities for NAT .
Endpunktunabhängiges NAT , Full Cone NAT , 1:1 - NAT oder NAT 1
| |
Address-Dependent NAT , Restricted Cone NAT oder NAT 2
| |
Adress- und portabhängiges NAT , portbeschränktes Kegel-NAT oder NAT 3
Es ähnelt einem adressbeschränkten Kegel-NAT, aber die Beschränkung umfasst auch Portnummern. | |
Adress- und portabhängiges NAT , symmetrisches NAT oder NAT 4
|
Da viele NAT-Implementierungen mehrere Typen kombinieren, ist es sinnvoller, das spezifische Verhalten einzelner NAT-Typen zu beschreiben, anstatt die Begriffe „Cone“ und „Symmetric“ zu verwenden. RFC 4787 versucht, Verwirrung zu vermeiden, indem es eine standardisierte Terminologie für beobachtete Verhaltensweisen einführt. Gemäß dem ersten Punkt in jeder Zeile der obigen Tabelle würde der RFC Full-Cone-, Restricted-Cone- und Port-Restricted-Cone-NAT als endpunktunabhängiges Mapping charakterisieren , während er ein symmetrisches NAT als adress- und portabhängiges Mapping charakterisieren würde . Für den zweiten Punkt in jeder Zeile der obigen Tabelle würde RFC 4787 Full-Cone-NAT als endpunktunabhängiges Filtern , Restricted-Cone-NAT als adressabhängiges Filtern , Port-Restricted-Cone-NAT als adress- und portabhängiges Filtern und symmetrisches NAT als entweder adressabhängiges oder adress- und portabhängiges Filtern kennzeichnen . Weitere im RFC erwähnte Klassifizierungen des NAT-Verhaltens umfassen die Beibehaltung von Ports, den Zeitpunkt und die Art der Aktualisierung von Portzuordnungen, die Nutzung externer Zuordnungen durch interne Hosts (d. h. das Hairpinning- Verhalten) und den Grad der Deterministik von NATs bei der Anwendung all dieser Regeln. [ 2 ] Konkret kombinieren die meisten NATs symmetrisches NAT für ausgehende Verbindungen mit statischem Port-Mapping , wobei eingehende Pakete, die an die externe Adresse und den externen Port adressiert sind, an eine bestimmte interne Adresse und einen bestimmten internen Port umgeleitet werden.
NAT-Mapping vs. NAT-Filterung
RFC 4787 unterscheidet zwischen NAT-Mapping und NAT-Filterung. [ 2 ]
Abschnitt 4.1 des RFC behandelt das NAT-Mapping und spezifiziert die Übersetzung einer externen IP-Adresse und Portnummer in eine interne IP-Adresse und Portnummer. Er definiert endpunktunabhängiges Mapping, adressabhängiges Mapping und adress- und portabhängiges Mapping, erklärt, dass diese drei Möglichkeiten nicht mit der Sicherheit des NAT zusammenhängen, da die Sicherheit durch das Filterverhalten bestimmt wird, und legt fest: „Ein NAT MUSS ein endpunktunabhängiges Mapping-Verhalten aufweisen.“
Abschnitt 5 des RFC behandelt die NAT-Filterung und beschreibt die Kriterien, die NAT zur Filterung von Paketen verwendet, die von bestimmten externen Endpunkten stammen. Die Optionen sind endpunktunabhängige Filterung, adressabhängige Filterung und adress- und portabhängige Filterung. Die endpunktunabhängige Filterung wird empfohlen, wenn maximale Anwendungstransparenz erforderlich ist, während die adressabhängige Filterung empfohlen wird, wenn ein strengeres Filterverhalten von größter Bedeutung ist.
Einige NAT-Geräte sind nicht RFC 4787-konform, da sie NAT-Mapping und -Filterung gleich behandeln, sodass ihre Konfigurationsoption zur Änderung der NAT-Filtermethode auch die NAT-Mappingmethode ändert (z. B. Netgate TNSR, archiviert am 30.01.2024 in der Wayback Machine ).
Art von NAT und NAT-Traversal, Rolle der Portbeibehaltung für TCP
NAT-Traversal- Probleme treten auf, wenn Peers hinter unterschiedlichen NATs miteinander kommunizieren. Eine Lösungsmöglichkeit ist die Portweiterleitung . Alternativ können verschiedene NAT-Traversal-Techniken eingesetzt werden. Die gängigste Technik für TCP-NAT-Traversal ist TCP-Hole-Punching .
Das Durchlaufen von TCP-Hole-Routen erfordert, dass das NAT-System das Port-Erhaltungsprinzip von TCP befolgt . Bei einer ausgehenden TCP-Kommunikation werden auf beiden Seiten des NAT-Systems dieselben Portnummern verwendet. Die Port-Erhaltung durch das NAT-System für ausgehende TCP-Verbindungen ist für die TCP-NAT-Traversal entscheidend, da unter TCP ein Port immer nur für eine Kommunikation gleichzeitig verwendet werden kann. Programme, die für jede TCP-Kommunikation unterschiedliche TCP-Sockets an dynamische Ports binden, machen die NAT-Portvorhersage für TCP unmöglich. [ 2 ]
Bei UDP hingegen benötigen NATs keine Portbeibehaltung. Tatsächlich können mehrere UDP-Kommunikationen (jeweils mit einem eigenen Endpunkt ) über denselben Quellport erfolgen, und Anwendungen verwenden üblicherweise denselben UDP-Socket, um Pakete an verschiedene Hosts zu senden. Dadurch wird die Portvorhersage unkompliziert, da für jedes Paket derselbe Quellport verwendet wird.
Darüber hinaus ermöglicht die Portbeibehaltung bei NAT für TCP P2P-Protokollen eine geringere Komplexität und niedrigere Latenz, da kein Drittanbieter (wie STUN) zur Ermittlung des NAT-Ports benötigt wird, da die Anwendung den NAT-Port bereits kennt. [ 2 ] [ 6 ]
Wenn jedoch zwei interne Hosts versuchen, mit demselben externen Host über dieselbe Portnummer zu kommunizieren, kann das NAT versuchen, für die zweite Verbindung eine andere externe IP-Adresse zu verwenden oder die Portbeibehaltung aufgeben und den Port neu zuordnen. [ 2 ] : 9 Im Jahr 2006 nutzten etwa 70 % der Clients in Peer-to-Peer -Netzwerken (P2P) irgendeine Form von NAT. [ 7 ]
Durchführung
Herstellung einer Zwei-Wege-Kommunikation

Jedes TCP- und UDP-Paket enthält eine Quell- und eine Zielportnummer. Jedes dieser Pakete wird in ein IP-Paket gekapselt, dessen IP-Header eine Quell-IP-Adresse und eine Ziel-IP-Adresse enthält. Das Tripel aus IP-Adresse, Protokoll und Portnummer definiert eine Verbindung zu einem Netzwerk-Socket .
Bei öffentlich zugänglichen Diensten wie Web- und Mailservern ist die Portnummer wichtig. Beispielsweise stellt Port 443 über einen Socket die Verbindung zur Webserver -Software her, und Port 465 verbindet sich mit dem SMTP- Daemon eines Mailservers . [ 8 ] Die IP-Adresse eines öffentlichen Servers ist ebenfalls wichtig und weltweit ähnlich eindeutig wie eine Postanschrift oder Telefonnummer. Sowohl die IP-Adresse als auch die Portnummer müssen allen Hosts, die erfolgreich kommunizieren möchten, korrekt bekannt sein.
Private IP-Adressen gemäß RFC 1918 sind nur in privaten Netzwerken nutzbar, die nicht direkt mit dem Internet verbunden sind. Ports sind die für jeden Host eindeutigen Kommunikationsendpunkte. Eine Verbindung über ein NAT-Gerät wird durch die kombinierte Zuordnung von Port und IP-Adresse aufrechterhalten. Eine private Adresse innerhalb des NAT wird einer externen öffentlichen Adresse zugeordnet. Port Address Translation (PAT) löst Konflikte, die entstehen, wenn mehrere Hosts gleichzeitig denselben Quellport verwenden, um unterschiedliche externe Verbindungen herzustellen.
Übersetzungsprozess
Bei NAT enthalten alle an externe Hosts gesendeten Nachrichten die externe IP-Adresse und Portinformationen des NAT-Geräts anstelle der internen Host-IP-Adressen oder Portnummern. NAT übersetzt ausschließlich IP-Adressen und Ports seiner internen Hosts und verbirgt so den tatsächlichen Endpunkt eines internen Hosts in einem privaten Netzwerk.
Wenn ein Computer im privaten (internen) Netzwerk ein IP-Paket an das externe Netzwerk sendet, ersetzt das NAT-Gerät die interne Quell-IP-Adresse im Paketkopf durch seine externe IP-Adresse. Anschließend kann PAT der Verbindung eine Portnummer aus einem Pool verfügbarer Ports zuweisen und diese in das Feld „ Quellport “ eintragen. Das Paket wird dann an das externe Netzwerk weitergeleitet. Das NAT-Gerät erstellt daraufhin einen Eintrag in einer Übersetzungstabelle, der die interne IP-Adresse, den ursprünglichen Quellport und den übersetzten Quellport enthält. Nachfolgende Pakete mit derselben internen Quell-IP-Adresse und Portnummer werden in dieselbe externe Quell-IP-Adresse und Portnummer übersetzt. Der Computer, der ein NAT-Paket empfängt, stellt eine Verbindung zu dem im geänderten Paket angegebenen Port und der IP-Adresse her, ohne zu bemerken, dass die angegebene Adresse übersetzt wird.
Beim Empfang eines Pakets aus dem externen Netzwerk sucht das NAT-Gerät anhand des Zielports im Paketkopf in der Übersetzungstabelle. Wird eine Übereinstimmung gefunden, werden die Ziel-IP-Adresse und die Portnummer durch die entsprechenden Werte aus der Tabelle ersetzt und das Paket an das interne Netzwerk weitergeleitet. Andernfalls, wenn die Zielportnummer des eingehenden Pakets nicht in der Übersetzungstabelle gefunden wird, wird das Paket verworfen, da das PAT-Gerät nicht weiß, wohin es gesendet werden soll.
Anwendungen
- Routing
- Netzwerkadressübersetzung (NAT) kann zur Vermeidung von IP-Adressüberschneidungen eingesetzt werden. [ 9 ] [ 10 ] Adressüberschneidungen treten auf, wenn Hosts in unterschiedlichen Netzwerken mit demselben IP-Adressraum versuchen, denselben Zielhost zu erreichen. Dies ist meist auf eine Fehlkonfiguration zurückzuführen und kann durch die Zusammenführung zweier Netzwerke oder Subnetze entstehen, insbesondere bei Verwendung der privaten Netzwerkadressierung nach RFC 1918. Der Zielhost empfängt Datenverkehr, der scheinbar aus demselben Netzwerk stammt, und zwischengeschaltete Router können nicht bestimmen, wohin der Antwortverkehr gesendet werden soll. Die Lösung besteht entweder in einer Neunummerierung, um Überschneidungen zu beseitigen, oder in der Netzwerkadressübersetzung.
- Lastverteilung
- In Client-Server- Anwendungen leiten Load Balancer Client-Anfragen an mehrere Serverrechner weiter, um die Auslastung der einzelnen Server zu verteilen. Mithilfe der Netzwerkadressübersetzung (NAT) kann eine repräsentative IP-Adresse des Serverclusters den jeweiligen Hosts zugeordnet werden, die die Anfrage bearbeiten. [ 11 ] [ 12 ] [ 13 ] [ 14 ]
Verwandte Techniken
IEEE Reverse Address and Port Translation (RAPT oder RAT) ermöglicht es einem Host, dessen reale IP-Adresse sich gelegentlich ändert, als Server über eine feste Heim-IP-Adresse erreichbar zu bleiben. [ 15 ] Ciscos RAPT-Implementierung ist PAT- oder NAT-Overloading und ordnet mehrere private IP-Adressen einer einzigen öffentlichen IP-Adresse zu. Mehrere Adressen können einer einzigen Adresse zugeordnet werden, da jede private Adresse über eine Portnummer verfolgt wird. PAT verwendet eindeutige Quellportnummern auf der internen globalen IP-Adresse, um zwischen den Übersetzungen zu unterscheiden. [ c ] PAT versucht, den ursprünglichen Quellport beizubehalten. Ist dieser Quellport bereits belegt, weist PAT die erste verfügbare Portnummer ab dem Anfang der entsprechenden Portgruppe (0–511, 512–1023 oder 1024–65535) zu. Sind keine Ports mehr verfügbar und mehrere externe IP-Adressen konfiguriert, versucht PAT, den ursprünglichen Quellport der nächsten IP-Adresse erneut zuzuweisen. Dieser Vorgang wird fortgesetzt, bis keine Ports und externen IP-Adressen mehr verfügbar sind.
Die Adress- und Portzuordnung ist ein Cisco-Vorschlag, der Adress- und Portübersetzung mit dem Tunneln von IPv4-Paketen über das interne IPv6- Netzwerk eines Internetdienstanbieters kombiniert . Im Prinzip handelt es sich um eine (nahezu) zustandslose Alternative zu Carrier-Grade-NAT und DS-Lite , die die IPv4-Adress- /Portübersetzung (und die Verwaltung des NAT-Zustands) vollständig in die bestehende NAT-Implementierung der Kundengeräte integriert . Dadurch werden die Probleme von NAT444 und der Zustandsverwaltung bei Carrier-Grade-NAT vermieden und gleichzeitig ein Übergangsmechanismus für die Einführung von nativem IPv6 mit nur geringfügiger zusätzlicher Komplexität bereitgestellt.
Probleme und Einschränkungen
Hosts hinter NAT-fähigen Routern verfügen nicht über eine durchgängige Konnektivität und können daher nicht an allen Internetprotokollen teilnehmen. Dienste, die TCP- Verbindungen aus dem externen Netzwerk initiieren müssen oder zustandslose Protokolle wie UDP verwenden , können beeinträchtigt werden. Sofern der NAT-Router diese Protokolle nicht explizit unterstützt, erreichen eingehende Pakete ihr Ziel nicht. Einige Protokolle können eine NAT-Instanz zwischen beteiligten Hosts tolerieren ( z. B. FTP im passiven Modus ), mitunter mithilfe eines Application-Level-Gateways (siehe Abschnitt „Von NAT betroffene Anwendungen “). Sie funktionieren jedoch nicht, wenn beide Systeme durch NAT vom Internet getrennt sind. Die Verwendung von NAT erschwert zudem Tunnelprotokolle wie IPsec , da NAT Werte in den Headern verändert, was die Integritätsprüfungen von IPsec und anderen Tunnelprotokollen beeinträchtigt.
Die durchgängige Konnektivität ist ein Kernprinzip des Internets und wird beispielsweise vom Internet Architecture Board unterstützt . Aktuelle Architekturdokumente des Internets stellen fest, dass NAT zwar gegen das Prinzip der durchgängigen Konnektivität verstößt , aber bei sorgfältiger Planung durchaus seine Berechtigung hat. [ 16 ] Die Verwendung von IPv6-NAT gibt deutlich mehr Anlass zur Sorge, und viele IPv6-Architekten sind der Ansicht, dass IPv6 die Notwendigkeit von NAT beseitigen sollte. [ 17 ]
Eine Implementierung, die lediglich Ports verfolgt, kann durch interne Anwendungen, die mehrere gleichzeitige Verbindungen nutzen (z. B. eine HTTP- Anfrage für eine Webseite mit vielen eingebetteten Objekten), schnell an ihre Grenzen stoßen. Dieses Problem lässt sich beheben, indem zusätzlich zum Port auch die Ziel-IP-Adresse verfolgt wird, wodurch ein einziger lokaler Port mit mehreren Remote-Hosts geteilt wird. Diese zusätzliche Verfolgung erhöht jedoch die Komplexität der Implementierung und den Ressourcenbedarf des Übersetzungsgeräts.
Da die internen Adressen alle hinter einer öffentlich zugänglichen Adresse verborgen sind, ist es externen Hosts unmöglich, direkt eine Verbindung zu einem bestimmten internen Host herzustellen. Anwendungen wie VoIP , Videokonferenzen und andere Peer-to-Peer-Anwendungen müssen daher NAT-Traversal- Verfahren nutzen, um zu funktionieren.
Fragmentierung und Prüfsummen
Reines NAT, das ausschließlich mit IP arbeitet, kann Protokolle mit Nutzdaten, die Informationen über IP enthalten (z. B. ICMP) , unter Umständen nicht korrekt verarbeiten. Dies hängt davon ab, ob die Nutzdaten von einem Host innerhalb oder außerhalb der Übersetzung interpretiert werden . Grundlegende Protokolle wie TCP und UDP funktionieren nur dann ordnungsgemäß, wenn NAT über die Netzwerkschicht hinaus Maßnahmen ergreift.
IP-Pakete enthalten in jedem Paketheader eine Prüfsumme, die jedoch nur die Fehlererkennung im Header ermöglicht. IP-Datagramme können fragmentiert werden, und ein NAT muss diese Fragmente wieder zusammensetzen, um die korrekte Neuberechnung der Prüfsummen höherer Ebenen und die korrekte Zuordnung der Pakete zu den jeweiligen Verbindungen zu gewährleisten.
TCP und UDP verwenden eine Prüfsumme, die alle übertragenen Daten sowie den TCP- bzw. UDP-Header abdeckt, und einen Pseudo-Header , der die Quell- und Ziel-IP-Adressen des Pakets mit dem TCP- bzw. UDP-Header enthält. Damit ein NAT-Router TCP oder UDP erfolgreich weiterleiten kann, muss er die Prüfsumme des TCP- bzw. UDP-Headers anhand der übersetzten IP-Adressen (nicht der ursprünglichen) neu berechnen und diese Prüfsumme in den TCP- bzw. UDP-Header des ersten Pakets des fragmentierten Paketsatzes einfügen.
Alternativ kann der sendende Host eine Pfad-MTU-Erkennung durchführen , um die Paketgröße zu bestimmen, die ohne Fragmentierung übertragen werden kann, und anschließend das „ Nicht fragmentieren “-Bit (DF-Bit) im entsprechenden Paketheader setzen. Dies ist jedoch nur eine unidirektionale Lösung, da der antwortende Host Pakete beliebiger Größe senden kann, die möglicherweise fragmentiert werden, bevor sie das NAT erreichen.
Variantenbegriffe
DNAT
Die Ziel-Netzwerkadressübersetzung (DNAT) ist eine Technik, die die Ziel -IP-Adresse eines gerouteten Pakets transparent ändert und für alle Antworten die umgekehrte Funktion ausführt. Jeder Router zwischen zwei Endpunkten kann diese Pakettransformation durchführen.
DNAT wird häufig verwendet, um einen Dienst, der sich in einem privaten Netzwerk befindet, über eine öffentlich zugängliche IP-Adresse bereitzustellen. Diese Verwendung von DNAT wird auch als Portweiterleitung bezeichnet . Bei der Anwendung auf einem gesamten Server , der dadurch dem WAN ausgesetzt wird und somit einer unverteidigten militärischen demilitarisierten Zone (DMZ) ähnelt, spricht man von DMZ .
SNAT
Die Bedeutung des Begriffs SNAT variiert je nach Hersteller: [ 18 ] [ 19 ] [ 20 ]
- Source-NAT ist eine gängige Erweiterung und das Gegenstück zu Destination-NAT ( DNAT ). Sie wird verwendet, um Eins-zu-Viele-NAT zu beschreiben; NAT für ausgehende Verbindungen zu öffentlichen Diensten.
- Stateful NAT wird von Cisco Systems verwendet [ 21 ].
- WatchGuard verwendet statisches NAT [ 22 ].
- Secure NAT wird von F5 [ 23 ] und von Microsoft (im Zusammenhang mit dem ISA-Server ) verwendet .
Die sichere Netzwerkadressübersetzung (SNAT) ist Bestandteil des Microsoft Internet Security and Acceleration Server und eine Erweiterung des in Microsoft Windows Server integrierten NAT-Treibers . Sie ermöglicht die Nachverfolgung und Filterung von Verbindungen für die zusätzlichen Netzwerkverbindungen, die für die Protokolle FTP , ICMP , H.323 und PPTP benötigt werden , sowie die Konfiguration eines transparenten HTTP- Proxyservers .
Dynamische Netzwerkadressübersetzung

Dynamisches NAT ist, genau wie statisches NAT, in kleineren Netzwerken unüblich, findet sich aber in größeren Unternehmen mit komplexen Netzwerken. Während statisches NAT eine Eins-zu-eins-Zuordnung von internen zu öffentlichen statischen IP-Adressen ermöglicht, verwendet dynamisches NAT eine Gruppe öffentlicher IP-Adressen. [ 24 ] [ 25 ]
NAT-Haarnadelung
NAT-Hairpinning , auch bekannt als NAT-Loopback oder NAT-Reflexion [ 26 ], ist eine Funktion vieler Consumer-Router [ 27 ] , die es einem Rechner im LAN ermöglicht, über die externe IP-Adresse des LANs/Routers auf einen anderen Rechner im LAN zuzugreifen (nachdem auf dem Router eine Portweiterleitung eingerichtet wurde, um die Anfragen an den entsprechenden Rechner im LAN zu leiten). Dieses Konzept wurde 2008 in RFC 5128 offiziell beschrieben .
Im Folgenden wird ein Beispielnetzwerk beschrieben:
- Öffentliche Adresse: 203.0.113.1 . Dies ist die Adresse der WAN -Schnittstelle des Routers.
- Interne Adresse des Routers: 192.168.1.1
- Serveradresse: 192.168.1.2
- Adresse eines lokalen Computers: 192.168.1.100
Wird ein Paket von einem Computer mit der IP -Adresse 192.168.1.100 an die Adresse 203.0.113.1 gesendet , wird es normalerweise an das Standardgateway (den Router) weitergeleitet [ d ] . Ein Router mit NAT-Loopback erkennt, dass 203.0.113.1 die Adresse seiner WAN-Schnittstelle ist und behandelt das Paket so, als käme es von dieser Schnittstelle. Er ermittelt das Ziel des Pakets anhand der DNAT-Regeln (Portweiterleitung) für dieses Ziel. Wurden die Daten an Port 80 gesendet und existiert eine DNAT-Regel für Port 80, die auf 192.168.1.2 verweist , empfängt der Host unter dieser Adresse das Paket. Ist keine passende DNAT-Regel vorhanden, verwirft der Router das Paket. Gegebenenfalls wird eine ICMP-Antwort „Ziel nicht erreichbar“ gesendet. Waren DNAT-Regeln vorhanden, ist die Adressübersetzung weiterhin aktiv; der Router überschreibt die Quell-IP-Adresse im Paket.
Im obigen Beispiel einer TCP-Verbindung zum Server initiiert der lokale Computer die Verbindung, indem er ein Paket von 192.168.1.100 an 203.0.113.1 über den Router sendet. Der Server empfängt das Paket mit dieser Quelladresse und der vom Router geänderten Zieladresse ( 192.168.1.2 ). Da die Quelladresse zur selben Broadcast-Domäne wie der Server gehört, antwortet dieser mit einem Paket, das direkt auf Schicht 2 an den lokalen Computer gerichtet ist , ohne den Router einzubeziehen. Da der lokale Computer keinen Datenverkehr von 192.168.1.2 (der lokalen Adresse des Servers), sondern von 203.0.113.1 (der Adresse, zu der er sich eigentlich verbinden wollte) erwartet hat, verwirft er die Antwort stillschweigend.
Um die bidirektionale Kommunikation zwischen diesen Hosts über die externe Adresse zu ermöglichen, muss eine SNAT-Regel konfiguriert werden. Diese Regel legt fest, dass die Quelladresse des vom lokalen Netzwerk empfangenen und für den Server (nach Umschreibung an seine lokale Adresse) bestimmten Datenverkehrs in eine Routeradresse umgeschrieben wird. Dadurch wird die Serverantwort an den Router gesendet, der anschließend die Reverse-SNAT- und DNAT-Transformationen anwendet und die erwartete Antwort an den lokalen Rechner zurücksendet. Somit ist die bidirektionale Kommunikation zwischen Hosts innerhalb des LANs über die öffentliche IP-Adresse möglich, sofern die entsprechenden NAT-Regeln eingerichtet sind.
NAT in IPv6
Netzwerkadressübersetzung (NAT) wird in IPv6 nicht häufig verwendet , da eines der Designziele von IPv6 die Wiederherstellung der Ende-zu-Ende-Netzwerkkonnektivität ist. [ 28 ] Der große Adressraum von IPv6 macht die Einsparung von Adressen überflüssig, und jedem Gerät kann eine eindeutige, global routingfähige Adresse zugewiesen werden. Die Verwendung eindeutiger lokaler Adressen in Kombination mit Netzwerkpräfixübersetzung kann ähnliche Ergebnisse wie NAT erzielen.
Der große Adressraum von IPv6 kann jedoch durch die vom Anbieter vergebene Präfixlänge eingeschränkt werden. Es ist nicht ungewöhnlich, für ein gesamtes Heimnetzwerk ein /64-Präfix – das kleinste empfohlene Subnetz – zu erhalten. In solchen Fällen sind verschiedene Techniken erforderlich, um den Adressbereich manuell zu unterteilen und die Erreichbarkeit aller Geräte zu gewährleisten. [ 29 ] Unter diesen Umständen kann die vollständige Netzwerkadress- und Portübersetzung (NAPT) für IPv6, üblicherweise als NAT66 bezeichnet, notwendig sein. Dabei wird ein IPv6-ULA-Präfix auf eine einzelne globale eindeutige IPv6-Adresse (GUA) reduziert. [ 30 ] [ 31 ] [ 32 ] Der APNIC-Blog beschreibt einen Fall, in dem dem Autor nur eine einzige Adresse (/128) zur Verfügung gestellt wurde. [ 31 ]
Anwendungen, die von NAT betroffen sind
Einige Anwendungsschichtprotokolle , wie beispielsweise das File Transfer Protocol (FTP) und das Session Initiation Protocol (SIP), senden explizite Netzwerkadressen in ihren Anwendungsdaten. FTP im aktiven Modus verwendet beispielsweise separate Verbindungen für den Steuerungsverkehr (Befehle) und den Datenverkehr (Dateiinhalte). Bei einer Dateiübertragungsanforderung identifiziert der anfragende Host die entsprechende Datenverbindung anhand seiner Netzwerk- und Transportschichtadressen . Befindet sich der anfragende Host hinter einer einfachen NAT-Firewall, führt die Übersetzung der IP-Adresse oder der TCP-Portnummer dazu, dass die vom Server empfangenen Informationen ungültig werden. SIP steuert häufig VoIP- Anrufe und ist von demselben Problem betroffen. SIP und das zugehörige Session Description Protocol (SDP) können mehrere Ports verwenden, um eine Verbindung aufzubauen und einen Sprachstream über das Real-Time Transport Protocol (RTP) zu übertragen . IP-Adressen und Portnummern sind in den Nutzdaten kodiert und müssen vor der NAT-Überwindung bekannt sein. Ohne spezielle Techniken wie STUN ist das Verhalten von NAT unvorhersehbar und die Kommunikation kann fehlschlagen. Application Layer Gateway (ALG)-Software oder -Hardware kann diese Probleme beheben. Ein ALG-Softwaremodul auf einer NAT-Firewall korrigiert alle Nutzdaten, die durch Adressübersetzung ungültig geworden sind. ALGs müssen das übergeordnete Protokoll, das sie korrigieren müssen, verstehen. Daher benötigt jedes Protokoll mit diesem Problem ein separates ALG. Beispielsweise gibt es auf vielen Linux-Systemen Kernelmodule namens Verbindungstracker , die ALGs implementieren. ALG funktioniert jedoch nicht, wenn die Protokolldaten verschlüsselt sind.
Eine weitere mögliche Lösung dieses Problems besteht in der Verwendung von NAT-Traversal -Verfahren mit Protokollen wie STUN oder Interactive Connectivity Establishment (ICE) oder proprietären Ansätzen in einem Session Border Controller . NAT-Traversal ist sowohl in TCP- als auch in UDP-basierten Anwendungen möglich, wobei das UDP-basierte Verfahren einfacher, weiter verbreitet und kompatibler mit älteren NATs ist. In beiden Fällen muss das übergeordnete Protokoll NAT-Traversal berücksichtigen und funktioniert nicht zuverlässig über symmetrische NATs oder andere problematische ältere NATs hinweg.
Weitere Möglichkeiten sind das Port Control Protocol (PCP), [ 33 ] das NAT Port Mapping Protocol (NAT-PMP) oder das Internet Gateway Device Protocol , allerdings ist hierfür die Implementierung des jeweiligen Protokolls durch das NAT-Gerät erforderlich.
Die meisten Client-Server-Protokolle (mit Ausnahme von FTP [ e ] ) senden jedoch keine Layer-3-Kontaktinformationen und benötigen keine spezielle Behandlung durch NATs. Tatsächlich ist die Vermeidung von NAT-Komplikationen heutzutage bei der Entwicklung neuer Protokolle höherer Schichten praktisch eine Voraussetzung.
NATs können auch dann Probleme verursachen, wenn IPsec- Verschlüsselung verwendet wird und sich mehrere Geräte, wie z. B. SIP-Telefone, hinter einem NAT befinden. Telefone, die ihre Signalisierung mit IPsec verschlüsseln, kapseln die Portinformationen in ein verschlüsseltes Paket ein. Dadurch können NAT-Geräte nicht auf den Port zugreifen und ihn übersetzen. In diesen Fällen greifen die NAT-Geräte auf einfache NAT-Operationen zurück. Das bedeutet, dass der gesamte zum NAT zurückkehrende Datenverkehr einem einzigen Client zugeordnet wird, wodurch die Dienste für mehrere Clients hinter dem NAT ausfallen. Es gibt verschiedene Lösungsansätze für dieses Problem: Zum einen kann TLS verwendet werden, das auf Schicht 4 arbeitet und die Portnummer nicht maskiert. Zum anderen kann IPsec in UDP gekapselt werden – letzteres ist die von TISPAN gewählte Lösung für sicheres NAT-Traversal oder ein NAT mit „IPsec Passthru“ -Unterstützung. Eine weitere Möglichkeit ist der Einsatz eines Session Border Controllers (SBC) zur Unterstützung des NAT-Traversal .
Interactive Connectivity Establishment (ICE) ist eine NAT-Traversal-Technik, die nicht auf ALG-Unterstützung angewiesen ist.
Die von Dan Kaminsky am 8. Juli 2008 gemeldete DNS-Protokoll-Schwachstelle [ 34 ] wird indirekt durch NAT-Portweiterleitung beeinflusst. Um DNS-Cache-Poisoning zu vermeiden , ist es dringend ratsam, die UDP-Quellportnummern ausgehender DNS-Anfragen von einem DNS-Server hinter einer Firewall mit NAT nicht zu übersetzen. Die empfohlene Problemumgehung besteht darin, alle zwischenspeichernden DNS-Server mit randomisierten UDP-Quellports zu konfigurieren. Werden die UDP-Quellports durch die NAT-Funktion wieder freigegeben, ist der DNS-Server angreifbar.
Beispiele für NAT-Software
- Internet Connection Sharing (ICS): NAT- und DHCP-Implementierung in Windows- Desktop-Betriebssystemen enthalten
- IPFilter : enthalten in OpenSolaris , FreeBSD und NetBSD , verfügbar für viele weitere Unix-ähnliche Betriebssysteme
- ipfirewall (ipfw): FreeBSD-nativer Paketfilter
- Netfilter mit iptables / nftables : der Linux- Paketfilter
- NPF : NetBSD-nativer Paketfilter
- PF : OpenBSD-nativer Paketfilter
- Routing- und Remotezugriffsdienst (RRAS): Routing-Implementierung, die in Windows Server -Betriebssystemen enthalten ist
- VPP : Implementierung der Paketweiterleitung im Benutzermodus für Linux
- WinGate : Routing-Implementierung eines Drittanbieters für Windows
Siehe auch
- Anything In Anything (AYIYA) – IPv6 über IPv4 UDP, wodurch IPv6-Tunneling über die meisten NATs hinweg funktioniert
- Carrier-Grade NAT – NAT hinter NAT innerhalb eines ISPs
- Gateway (Telekommunikation) – Verbindung zwischen zwei Netzwerksystemen
- Internet Gateway Device Protocol (UPnP IGD) NAT-Traversal-Methode
- Middlebox – Zwischenbox auf dem Datenpfad zwischen einem Quellhost und einem Zielhost
- NAT Port Mapping Protocol (NAT-PMP) NAT-Traversal-Methode
- Port Control Protocol (PCP) NAT-Traversal-Methode
- Port-Triggerung – NAT-Traversal-Mechanismus
- Subnetz – Logische Unterteilung eines IP-Netzwerks
- Teredo-Tunneling – NAT-Traversal mit IPv6
Anmerkungen
- Die meisten NAT-Geräte ermöglichen es dem Netzwerkadministrator heutzutage, statische Einträge in der Übersetzungstabelle für Verbindungen vom externen Netzwerk zum internen, maskierten Netzwerk zu konfigurieren. Diese Funktion wird oft als statisches NAT bezeichnet . Sie kann auf zwei Arten implementiert werden: Portweiterleitung , die den Datenverkehr von einem bestimmten externen Port an einen internen Host auf einem bestimmten Port weiterleitet, und die Festlegung eines DMZ-Hosts , der den gesamten auf der externen Schnittstelle (auf einer beliebigen Portnummer) empfangenen Datenverkehr unter Beibehaltung des Zielports an eine interne IP-Adresse weiterleitet. Beide Arten können in ein und demselben NAT-Gerät verfügbar sein.
- Da der NAT-Router für jede ausgehende Verbindung einen eigenen Port zuweist, kann eine große Anzahl ausgehender Verbindungen die verfügbaren Ports überlasten. Da Ports in der Regel freigegeben werden , sobald eine Verbindung für eine gewisse Zeit keinen Datenverkehr mehr erzeugt, ist die maximale Anzahl aktiver Verbindungen auf etwa 64.000 begrenzt.
- Die Portnummern sind 16-Bit-Ganzzahlen. Theoretisch könnten bis zu 65.536 interne Adressen pro IP-Adresse auf eine externe Adresse abgebildet werden. Realistisch betrachtet, können einer einzelnen IP-Adresse etwa 4000 Ports zugewiesen werden .
- ^ Sofern in den Routingtabellen des Computers keine explizite Route festgelegt ist.
- Dieses Problem lässt sich vermeiden, indem man SFTP anstelle von FTP verwendet .
Referenzen
- ^ Handbuch der Netzwerkprotokolle (2. Aufl.). Javvin Technologies Inc. 2005. S. 27. ISBN 9780974094526Abgerufen am 16.09.2014 .
- ^ a b c d e f g h i François Audet; Cullen Jennings (Januar 2007). Network Address Translation (NAT) Behavioral Requirements for Unicast UDP . IETF . doi : 10.17487/RFC4787 . RFC 4787 .
- ^ Geoff Huston (September 2004). „Anatomie: Ein Blick ins Innere von Netzwerkadressübersetzern“ (PDF) . The Internet Protocol Journal .
- ^ Heon Y. Yeom; Jungsoo Ha; Ilhwan Kim (1996). "IP-Multiplexing durch transparenten Port-Adressübersetzer" . USENIX LISA.
- ^ a b Wing, Dan (2010-07-01). „Network Address Translation: Extending the Internet Address Space“. IEEE Internet Computing . 14 (4): 66–70 . doi : 10.1109/MIC.2010.96 . ISSN 1089-7801 . S2CID 31082389 .
- ^ „Charakterisierung und Messung der TCP-Traversal durch NATs und Firewalls“ . Dezember 2006.
- ^ „Die Schatten erhellen: Opportunistische Netzwerk- und Webmessung“ . Dezember 2006. Archiviert vom Original am 24.07.2010.
- ^ RFC 8314
- ^ „Nutzung von NAT in überlappenden Netzwerken“ . August 2005.
- ^ „VPNs mit überlappenden Subnetzen – Problemszenario“ . September 2017. Archiviert vom Original am 15.06.2020 . Abgerufen am 15.06.2020 .
- ^ Srisuresh, Pyda; Gan, Der-Hwa (August 1998). Load Sharing using IP Network Address Translation . IETF . RFC 2391 .
- ^ „Was ist Layer-4-Lastverteilung?“ . Juni 2020.
- ^ „Was ist Load Balancing?“ . November 2018.
- ^ „Server-Lastverteilung mit dynamischem NAT konfigurieren“ . Juni 2018.
- ^ Singh, R.; Tay, YC; Teo, WT; Yeow, SW (1999). „RAT: Ein schneller (und unsauberer?) Versuch zur Unterstützung mobiler Anwendungen“. Proceedings WMCSA’99. Zweiter IEEE Workshop über mobile Computersysteme und -anwendungen . S. 32–40 . CiteSeerX 10.1.1.40.461 . doi : 10.1109/MCSA.1999.749275 . ISBN 978-0-7695-0025-6. S2CID 7657883 .
- ^ Bush, R.; Meyer, D. (2002). Some Internet Architectural Guidelines and Philosophy . IETF . doi : 10.17487/RFC3439 . RFC 3439 .
- ^ Velde, G. Van de; Hain, T.; Droms, R.; Carpenter, B.; Klein, E. (2007). Lokaler Netzwerkschutz für IPv6 . IETF . doi : 10.17487/RFC4864 . RFC 4864 .
- ^ „Verbesserte IP-Resilienz durch Cisco Stateful NAT“ . Cisco .
- ^ „NAT für den öffentlichen Zugriff auf Server mit privaten IP-Adressen im privaten Netzwerk verwenden (WatchGuard-Konfigurationsbeispiel)“ (PDF) . www.watchguard.com . Archiviert vom Original (PDF) am 17.01.2013.
- ^ „K7820: Überblick über die SNAT-Funktionen“ . AskF5 . 28. August 2007. Abgerufen am 24. Februar 2019 .
- ^ „Verbesserte IP-Resilienz durch Cisco Stateful NAT“ . Cisco .
- ^ „NAT für den öffentlichen Zugriff auf Server mit privaten IP-Adressen im privaten Netzwerk verwenden (WatchGuard-Konfigurationsbeispiel)“ (PDF) . www.watchguard.com . Archiviert vom Original (PDF) am 17.01.2013.
- ^ „K7820: Überblick über die SNAT-Funktionen“ . AskF5 . 28. August 2007. Abgerufen am 24. Februar 2019 .
- ^ Upravnik (26. Januar 2016). „Dynamic NAT“ . Study CCNA . Abgerufen am 19. April 2022 .
- ^ „Dynamic NAT“ . Abgerufen am 19.04.2022 .
- ^ „Was ist NAT Reflection/NAT Loopback/NAT Hairpinning?“ . NYC Networkers. 09.11.2014 . Abgerufen am 27.04.2017 .
- ^ „NAT Loopback Routers – OpenSim“ ( MediaWiki ) . OpenSimulator . 21.10.2013 . Abgerufen am 21.02.2014 .
- ^ van Beijnum, Iljitsch (23.07.2008). „Nach hartnäckigem Widerstand könnte NAT doch noch in IPv6 Einzug halten“ . Ars Technica . Abgerufen am 24.04.2014 .
- ^ Dupont, Kasper (18. August 2015). „Subnetz – IPv6-Subnetting eines /64-Netzes – Was kann schiefgehen und wie lassen sich Probleme umgehen?“ Server Fault . Abgerufen am 20. April 2023 .
- ^ Hogg, Scott (28.12.2021). „Sie dachten, es gäbe kein NAT für IPv6, aber NAT existiert immer noch . “ Infoblox Blog . Abgerufen am 12.09.2025 .
- ^ a b Cilloni, Marco (2018-02-01). „NAT66: Das Gute, das Schlechte, das Hässliche“ . APNIC Blog . Abgerufen am 20.04.2023 .
- ^ „NAT-Beispiele (IPv6 NAT) – OpenWrt Wiki“ . Abgerufen am 11.06.2026 .
- ^ D. Wing, Ed; Cheshire, S.; Boucadair, M.; Penno, R.; Selkirk, P. (2013). Port Control Protocol (PCP) . IETF . doi : 10.17487/RFC6887 . RFC 6887 .
- ^ Messmer, Ellen (08.07.2008). „Schwerwiegender DNS-Fehler könnte das Internet lahmlegen“ . Network World . Archiviert vom Original am 13.02.2009 . Abgerufen am 14. Juni 2021 .
Externe Links
- Charakterisierung verschiedener TCP-NATs in der Wayback Machine (archiviert am 11.01.2006) – ein Dokument, das die verschiedenen NAT-Typen beschreibt.
- Anatomie: Ein Blick ins Innere von Netzwerkadressübersetzern – Band 7, Ausgabe 3, September 2004
- Jeff Tyson, HowStuffWorks: Wie Netzwerkadressübersetzung funktioniert
- Häufig gestellte Fragen zur Netzwerkadressübersetzung (NAT) – Cisco-Systeme



