Netzwerkadressübersetzung - Network address translation

Netzwerkadressübersetzung zwischen einem privaten Netzwerk und dem Internet

Network Address Translation ( NAT ) ist eine Methode zum Abbilden eines IP- Adressraums in einen anderen durch Ändern der Netzwerkadressinformationen im IP-Header von Paketen, während diese über ein Traffic- Routing-Gerät übertragen werden . Die Technik wurde ursprünglich verwendet, um die Notwendigkeit zu vermeiden, jedem Host eine neue Adresse zuzuweisen, wenn ein Netzwerk verschoben oder der vorgeschaltete Internetdienstanbieter ersetzt wurde, aber den Adressraum des Netzwerks nicht routen konnte. Es ist zu einem beliebten und unverzichtbaren Werkzeug geworden, um den globalen Adressraum angesichts der Erschöpfung der IPv4-Adressen zu erhalten . Eine über das Internet routbare IP-Adresse eines NAT-Gateways kann für ein ganzes privates Netzwerk verwendet werden .

Da die Netzwerkadressübersetzung die IP-Adressinformationen in Paketen modifiziert, können NAT-Implementierungen in ihrem spezifischen Verhalten in verschiedenen Adressierungsfällen und ihrer Auswirkung auf den Netzwerkverkehr variieren. Die Besonderheiten des NAT-Verhaltens werden von Herstellern von Geräten mit NAT-Implementierungen nicht allgemein dokumentiert.

Basis-NAT

Die einfachste Art von NAT bietet eine Eins-zu-Eins-Übersetzung von IP-Adressen. RFC 2663 bezeichnet diese Art von NAT als Basis-NAT ; es wird auch als Eins-zu-Eins-NAT bezeichnet . Bei diesem NAT-Typ 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 inkompatibler Adressierung miteinander zu verbinden.

Eins-zu-viele-NAT

Netzwerkadressenzuordnung

Die Mehrheit der Netzwerkadressübersetzer ordnet mehrere private Hosts einer öffentlich zugänglichen IP-Adresse zu. In einer typischen Konfiguration verwendet ein lokales Netzwerk eines der designierten privaten IP-Adress-Subnetze (RFC 1918). Ein Router in diesem Netzwerk hat eine private Adresse dieses Adressraums. Der Router ist außerdem über eine öffentliche Adresse mit dem Internet verbunden, die normalerweise von einem Internetdienstanbieter zugewiesen wird . Wenn der Verkehr vom lokalen Netzwerk zum Internet geleitet wird, wird die Quelladresse in jedem Paket im Handumdrehen von einer privaten Adresse in die öffentliche Adresse übersetzt. Der Router verfolgt grundlegende Daten zu jeder aktiven Verbindung (insbesondere die Zieladresse und den Port ). Wenn eine Antwort an den Router zurückkehrt, verwendet dieser die während der ausgehenden Phase gespeicherten Verbindungsverfolgungsdaten, um die private Adresse im internen Netzwerk zu bestimmen, an die die Antwort weitergeleitet werden soll.

Alle IP-Pakete haben eine Quell-IP-Adresse und eine Ziel-IP-Adresse. Typischerweise wird die Quelladresse von Paketen, die vom privaten Netzwerk zum öffentlichen Netzwerk gelangen, geändert, während die Zieladresse von Paketen, die vom öffentlichen Netzwerk zurück zum privaten Netzwerk gelangen, geändert wird. Um Mehrdeutigkeiten bei der Übersetzung von Antworten zu vermeiden, sind weitere Modifikationen an den Paketen erforderlich. Der Großteil des Internetverkehrs verwendet 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 (innerhalb des IP-Headers ) und Portnummer (innerhalb des Transport Layer-Headers ) auf dem zurückgegebenen Paket eindeutig dem entsprechenden privaten Netzwerkziel zugeordnet werden kann. RFC 2663 verwendet für diese Art von NAT den Begriff Network Address and Port Translation (NAPT). Andere Namen sind Port Address Translation (PAT), IP-Masquerading , NAT Overload und Many-to-One-NAT . Dies ist die gebräuchlichste Art von NAT und ist im allgemeinen Gebrauch mit dem Begriff "NAT" synonym geworden.

Dieses Verfahren ermöglicht die Kommunikation durch den Router nur dann, wenn die Konversation aus dem privaten Netzwerk stammt, da die anfängliche Ursprungsübertragung die erforderlichen Informationen in den Übersetzungstabellen erstellt. Ein Webbrowser im maskierten Netzwerk kann beispielsweise eine Website außerhalb durchsuchen, aber ein Webbrowser außerhalb kann keine Website durchsuchen, die innerhalb des maskierten Netzwerks gehostet wird. Protokolle, die nicht auf TCP und UDP basieren, erfordern andere Übersetzungstechniken.

Einer der zusätzlichen Vorteile von One-to-Many-NAT besteht darin, dass es eine praktische Lösung für die Erschöpfung von IPv4-Adressen ist . Selbst große Netzwerke können über eine einzige öffentliche IP-Adresse mit dem Internet verbunden werden.

Methoden der Übersetzung

Die Übersetzung von Netzwerkadresse und Port kann auf verschiedene Weise implementiert werden. Einige Anwendungen, die IP-Adressinformationen verwenden, müssen möglicherweise die externe Adresse eines Netzwerkadressübersetzers ermitteln. Dies ist die Adresse, die seine Kommunikationspartner im externen Netzwerk erkennen. Darüber hinaus kann es erforderlich sein, den verwendeten Mapping-Typ zu untersuchen und zu kategorisieren, beispielsweise wenn ein direkter Kommunikationspfad zwischen zwei Clients aufgebaut werden soll, die sich beide hinter separaten NAT-Gateways befinden.

Zu diesem Zweck spezifizierte RFC 3489 im Jahr 2003 ein Protokoll namens Simple Traversal of UDP over NATs ( STUN ). Es klassifizierte NAT-Implementierungen als Full-Cone-NAT , (Adresse)-Restricted-Cone-NAT , Port-Restricted-Cone-NAT oder symmetrisches NAT , und schlug eine Methodik zum Testen eines Geräts entsprechend vor. Diese Verfahren sind jedoch inzwischen aus dem Normenstatus veraltet, da die Methoden zur korrekten Beurteilung vieler Geräte nicht ausreichen. RFC 5389 standardisierte 2008 neue Methoden und das Akronym STUN steht nun für den neuen Titel der Spezifikation: Session Traversal Utilities for NAT .

Klassifizierungen der NAT-Implementierung
Vollkonus-NAT , auch bekannt als Eins-zu-Eins-NAT
  • Sobald eine interne Adresse (iAddr:iPort) einer externen Adresse (eAddr:ePort) zugeordnet ist, werden alle Pakete von iAddr:iPort über eAddr:ePort gesendet.
  • Jeder externe Host kann Pakete an iAddr:iPort senden, indem er Pakete an eAddr:ePort sendet.
Vollkegel NAT.svg
(Adresse)-restricted-cone NAT
  • Sobald eine interne Adresse (iAddr:iPort) einer externen Adresse (eAddr:ePort) zugeordnet ist, werden alle Pakete von iAddr:iPort über eAddr:ePort gesendet.
  • Ein externer Host ( hAddr:any ) kann nur dann Pakete an iAddr:iPort senden, indem er Pakete an eAddr:ePort sendet, wenn iAddr:iPort zuvor ein Paket an hAddr: any gesendet hat . "Any" bedeutet, dass die Portnummer keine Rolle spielt.
Eingeschränkter Kegel NAT.svg
Port-beschränktes Cone-NAT Wie ein adressbeschränktes Cone-NAT, aber die Einschränkung umfasst Portnummern.
  • Sobald eine interne Adresse (iAddr:iPort) einer externen Adresse (eAddr:ePort) zugeordnet ist, werden alle Pakete von iAddr:iPort über eAddr:ePort gesendet.
  • Ein externer Host ( hAddr:hPort ) kann nur dann Pakete an iAddr:iPort senden, indem er Pakete an eAddr:ePort sendet, wenn iAddr:iPort zuvor ein Paket an hAddr:hPort gesendet hat.
Port Restricted Cone NAT.svg
Symmetrisches NAT
  • Jede Anforderung von derselben internen IP-Adresse und Port an eine bestimmte Ziel-IP-Adresse und einen spezifischen Port wird einer eindeutigen externen Quell-IP-Adresse und einem Port zugeordnet; Wenn derselbe interne Host ein Paket auch mit derselben Quelladresse und demselben Port, aber an ein anderes Ziel sendet, wird ein anderes Mapping verwendet.
  • Nur ein externer Host, der ein Paket von einem internen Host empfängt, kann ein Paket zurücksenden.
Symmetrisches NAT.svg

Viele NAT-Implementierungen kombinieren diese Typen, und es ist daher besser, sich auf spezifisches individuelles NAT-Verhalten zu beziehen, anstatt die Konus-/Symmetrische Terminologie zu verwenden. RFC 4787 versucht, Verwirrung zu lindern, indem eine standardisierte Terminologie für beobachtetes Verhalten eingeführt wird. Für die erste Kugel in jeder Zeile der obigen Tabelle würden die RFC charakterisieren Vollkegel-, Restricted-Cone und Port-Restricted Cone NATs als einen mit Endpunkt-unabhängigen Mapping , während es eine symmetrische NAT als mit einen charakterisieren würde Adresse- und Port-abhängige Zuordnung . Für den zweiten Aufzählungspunkt in jeder Zeile der obigen Tabelle würde RFC 4787 auch Full-Cone-NAT mit einer endpunktunabhängigen Filterung , Restricted-Cone-NAT mit einer adressenabhängigen Filterung und Port-Restricted Cone-NAT mit einer Adresse kennzeichnen und portabhängige Filterung und symmetrisches NAT als entweder eine adressabhängige Filterung oder eine adress- und portabhängige Filterung aufweisend . Andere Klassifikationen des NAT-Verhaltens, die im RFC erwähnt werden, umfassen, ob sie Ports beibehalten, wann und wie Mappings aktualisiert werden, ob externe Mappings von internen Hosts verwendet werden können (dh sein Hairpinning- Verhalten) und der Grad des Determinismus, den NATs aufweisen, wenn all diese angewendet werden Regeln. Insbesondere kombinieren die meisten NATs symmetrisches NAT für ausgehende Verbindungen mit statischer Portzuordnung , bei der eingehende Pakete, die an die externe Adresse und den Port adressiert sind, an eine bestimmte interne Adresse und einen bestimmten Port umgeleitet werden.

Art von NAT und NAT-Traversal, Rolle der Porterhaltung für TCP

Das NAT-Traversal- Problem tritt auf, wenn Peers hinter verschiedenen NATs versuchen zu kommunizieren. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, die Portweiterleitung zu verwenden . Eine andere Möglichkeit besteht darin, verschiedene NAT-Traversaltechniken zu verwenden. Die beliebteste Technik für das TCP-NAT-Traversal ist das TCP-Hole-Punching .

TCP Lochen erfordert die NAT die folgen Port Erhaltung Design für TCP. Für eine gegebene ausgehende TCP-Kommunikation werden auf beiden Seiten des NAT die gleichen Portnummern verwendet. NAT - Port - Erhaltung für abgehende TCP - Verbindungen ist von entscheidenden Bedeutung für TCP NAT - Traversal , weil unter TCP, ein Port kann nur für eine Kommunikation zu einem Zeitpunkt verwendet werden, so dass Programme binden verschiedene TCP - Sockets an kurzlebigen Ports für jede TCP - Kommunikation, Rendering NAT - Port - Vorhersage unmöglich für TCP.

Auf der anderen Seite benötigen NATs für UDP keine Porterhaltung. Tatsächlich können mehrere UDP-Kommunikationen (jede mit einem unterschiedlichen Endpunkt ) auf demselben Quellport stattfinden, und Anwendungen verwenden normalerweise denselben UDP-Socket wieder, um Pakete an verschiedene Hosts zu senden. Dies macht die Portvorhersage unkompliziert, da es sich für jedes Paket um den gleichen Quellport handelt.

Darüber hinaus ermöglicht die Porterhaltung in NAT für TCP, dass P2P-Protokolle weniger Komplexität und weniger Latenz bieten, da keine Drittpartei (wie STUN) benötigt wird, um den NAT-Port zu erkennen, da die Anwendung selbst den NAT-Port bereits kennt.

Wenn jedoch zwei interne Hosts versuchen, mit demselben externen Host über dieselbe Portnummer zu kommunizieren, versucht die NAT möglicherweise, eine andere externe IP-Adresse für die zweite Verbindung zu verwenden, oder muss möglicherweise auf die Porterhaltung verzichten und den Port neu zuordnen.

Im Jahr 2006 verwendeten etwa 70 % der Clients in P2P- Netzwerken irgendeine Form von NAT.

Implementierung

Zwei-Wege-Kommunikation aufbauen

Bei bidirektionalem NAT kann die Sitzung sowohl von innen als auch von außen aufgebaut werden.

Jedes TCP- und UDP-Paket enthält eine Quellportnummer und eine Zielportnummer. Jedes dieser Pakete ist in ein IP-Paket gekapselt, dessen IP-Header eine Quell-IP-Adresse und eine Ziel-IP-Adresse enthält. Das Triple aus IP-Adresse/Protokoll/Portnummer definiert eine Assoziation mit einem Netzwerk-Socket .

Für öffentlich zugängliche Dienste wie Web- und Mailserver ist die Portnummer wichtig. Port 80 verbindet sich beispielsweise über einen Socket mit der Webserver- Software und Port 25 mit dem SMTP- Daemon eines Mailservers . Wichtig ist auch die IP-Adresse eines öffentlichen Servers, die in ihrer globalen Eindeutigkeit einer Postadresse oder Telefonnummer ähnelt. Sowohl die IP-Adresse als auch die Portnummer müssen allen Hosts bekannt sein, die erfolgreich kommunizieren möchten.

Private IP-Adressen, wie in RFC 1918 beschrieben, können nur in privaten Netzwerken verwendet werden, die nicht direkt mit dem Internet verbunden sind. Ports sind für diesen Host eindeutige Endpunkte der Kommunikation, sodass eine Verbindung über das NAT-Gerät durch die kombinierte Zuordnung von Port und IP-Adresse aufrechterhalten wird. Eine private Adresse im Inneren des NAT wird auf eine externe öffentliche Adresse abgebildet. Port Address Translation (PAT) löst Konflikte, die entstehen, wenn mehrere Hosts dieselbe Quellportnummer verwenden, um gleichzeitig verschiedene externe Verbindungen herzustellen.

Analogie zur Rufnummernerweiterung

Ein NAT-Gerät ähnelt einem Telefonsystem in einem Büro mit einer öffentlichen Telefonnummer und mehreren Nebenstellen. Ausgehende Anrufe aus dem Büro scheinen alle von derselben Telefonnummer zu kommen. Ein eingehender Anruf ohne Angabe einer Nebenstelle kann jedoch nicht automatisch an eine Person im Büro weitergeleitet werden. In diesem Szenario ist das Büro ein privates LAN, die Haupttelefonnummer ist die öffentliche IP-Adresse und die einzelnen Nebenstellen sind eindeutige Portnummern.

Übersetzungsprozess

Bei NAT enthält alle an externe Hosts gesendete Kommunikation tatsächlich die externe IP-Adresse und Portinformationen des NAT-Geräts anstelle von internen Host-IP-Adressen oder Portnummern. NAT übersetzt nur IP-Adressen und Ports seiner internen Hosts und verbirgt den wahren 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 Paketheader durch die externe IP-Adresse des NAT-Geräts. PAT kann der Verbindung dann eine Portnummer aus einem Pool verfügbarer Ports zuweisen, indem diese Portnummer in das Quellportfeld eingefügt wird. Das Paket wird dann an das externe Netzwerk weitergeleitet. Das NAT-Gerät nimmt dann einen Eintrag in eine Übersetzungstabelle vor, die die interne IP-Adresse, den ursprünglichen Quellport und den übersetzten Quellport enthält. Nachfolgende Pakete von 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, baut eine Verbindung zu dem im geänderten Paket angegebenen Port und der IP-Adresse auf, ohne zu bemerken, dass die angegebene Adresse übersetzt wird.

Beim Empfang eines Pakets vom externen Netzwerk durchsucht das NAT-Gerät die Übersetzungstabelle basierend auf dem Zielport im Paketheader. Wenn eine Übereinstimmung gefunden wird, werden die Ziel-IP-Adresse und Portnummer durch die in der Tabelle gefundenen Werte ersetzt und das Paket wird an das interne Netzwerk weitergeleitet. Andernfalls, wenn die Zielportnummer des eingehenden Pakets nicht in der Übersetzungstabelle gefunden wird, wird das Paket verworfen oder zurückgewiesen, weil das PAT-Gerät nicht weiß, wohin es es senden soll.

Sichtbarkeit des Betriebs

Der NAT-Betrieb ist in der Regel sowohl für die internen als auch für die externen Hosts transparent. Das NAT-Gerät kann als Standard-Gateway für den internen Host fungieren, der normalerweise die wahre IP-Adresse und den TCP- oder UDP-Port des externen Hosts kennt. Der externe Host kennt jedoch nur die öffentliche IP-Adresse des NAT-Geräts und den bestimmten Port, der für die Kommunikation im Namen eines bestimmten internen Hosts verwendet wird.

Anwendungen

Routing
Die Netzwerkadressübersetzung kann verwendet werden, um die Überlappung von IP-Adressen zu verringern. Adressüberschneidungen treten auf, wenn Hosts in verschiedenen Netzwerken mit demselben IP-Adressraum versuchen, denselben Zielhost zu erreichen. Dies ist meistens eine Fehlkonfiguration und kann aus der Zusammenführung zweier Netzwerke oder Subnetze resultieren, insbesondere wenn die private Netzwerkadressierung nach RFC 1918 verwendet wird . Der Zielhost erlebt Datenverkehr, der anscheinend aus demselben Netzwerk ankommt, und zwischengeschaltete Router haben keine Möglichkeit zu bestimmen, wohin der Antwortverkehr gesendet werden soll. Die Lösung besteht entweder in einer Neunummerierung, um Überschneidungen zu vermeiden, oder in einer Netzwerkadressübersetzung.
Lastverteilung
In Client-Server- Anwendungen leiten Load Balancer Clientanforderungen an eine Gruppe von Servercomputern weiter, um die Arbeitslast jedes Servers zu verwalten. Die Netzwerkadressübersetzung kann verwendet werden, um eine repräsentative IP-Adresse des Serverclusters bestimmten Hosts zuzuordnen, die die Anforderung bedienen.

Verwandte Techniken

IEEE Reverse Address and Port Translation (RAPT oder RAT) ermöglicht es einem Host, dessen reale IP-Adresse sich von Zeit zu Zeit ändert, als Server über eine feste Heim-IP-Adresse erreichbar zu bleiben. Die RAPT-Implementierung von Cisco ist PAT- oder NAT-Überlastung und ordnet mehrere private IP-Adressen einer einzigen öffentlichen IP-Adresse zu. Mehrere Adressen können einer einzelnen Adresse zugeordnet werden, da jede private Adresse durch eine Portnummer verfolgt wird. PAT verwendet eindeutige Quellportnummern auf der internen globalen IP-Adresse, um zwischen Übersetzungen zu unterscheiden. PAT versucht, den ursprünglichen Quellport beizubehalten. Wenn dieser Quellport bereits verwendet wird, weist PAT die erste verfügbare Portnummer beginnend am Anfang der entsprechenden Portgruppe 0–511, 512–1023 oder 1024–65535 zu. Wenn keine weiteren Ports verfügbar sind und mehr als eine externe IP-Adresse konfiguriert ist, wechselt PAT zur nächsten IP-Adresse, um erneut zu versuchen, den ursprünglichen Quellport zuzuweisen. Dieser Vorgang wird fortgesetzt, bis die verfügbaren Ports und externen IP-Adressen aufgebraucht sind.

Das Mapping von Adresse und Port ist ein Cisco-Vorschlag, der die Adress- plus Port- Übersetzung mit dem Tunneln der IPv4-Pakete über das interne IPv6- Netzwerk eines ISP-Anbieters kombiniert . Tatsächlich ist es eine (fast) zustandslose Alternative zu Carrier-Grade-NAT und DS-Lite , die die IPv4-Adress- /Port-Übersetzungsfunktion (und damit die Aufrechterhaltung des NAT-Zustands) vollständig in die vorhandene NAT-Implementierung der Kundenanlage verlagert. Dadurch werden die NAT444- und Zustandsprobleme von Carrier-Grade-NAT vermieden und gleichzeitig ein Übergangsmechanismus für die Bereitstellung von nativem IPv6 mit sehr geringer zusätzlicher Komplexität bereitgestellt.

Probleme und Einschränkungen

Hosts hinter NAT-fähigen Routern haben keine End-to-End-Konnektivität und können nicht an einigen Internetprotokollen teilnehmen. Dienste, die die Initiierung von TCP- Verbindungen vom externen Netzwerk erfordern oder die zustandslose Protokolle verwenden, wie z. B. die, die UDP verwenden , können unterbrochen werden. Wenn der NAT-Router keine besonderen Anstrengungen unternimmt, solche Protokolle zu unterstützen, können eingehende Pakete ihr Ziel nicht erreichen. Einige Protokolle können zwischen den beteiligten Hosts ( „passive mode“ eine Instanz von NAT aufnehmen FTP , zum Beispiel), manchmal mit Hilfe eines Application-Level - Gateway (siehe unten), aber nicht , wenn beide Systeme aus dem Internet durch NAT getrennt sind. Die Verwendung von NAT verkompliziert auch Tunneling-Protokolle wie IPsec, da NAT Werte in den Headern modifiziert, die die Integritätsprüfungen von IPsec und anderen Tunneling-Protokollen stören .

Die End-to-End-Konnektivität ist ein Kernprinzip des Internets, das beispielsweise vom Internet Architecture Board unterstützt wird . Aktuelle Internet-Architekturdokumente weisen darauf hin , dass NAT eine Verletzung des End-to-End-Prinzips darstellt , NAT jedoch eine wichtige Rolle bei der sorgfältigen Gestaltung spielt. Die Verwendung von IPv6-NAT ist wesentlich besorgniserregender, und viele IPv6-Architekten glauben, dass IPv6 dazu gedacht war, NAT überflüssig zu machen.

Eine Implementierung, die nur Ports verfolgt, kann von internen Anwendungen, die mehrere gleichzeitige Verbindungen verwenden (wie eine HTTP- Anforderung für eine Webseite mit vielen eingebetteten Objekten) , schnell erschöpft werden . Dieses Problem kann gemildert werden, indem die Ziel-IP-Adresse zusätzlich zum Port verfolgt wird (wodurch ein einzelner lokaler Port mit vielen entfernten Hosts geteilt wird), auf Kosten der Implementierungskomplexität und der CPU-/Speicherressourcen des Übersetzungsgeräts.

Da die internen Adressen alle hinter einer öffentlich zugänglichen Adresse verborgen sind, ist es für externe Hosts unmöglich, eine Verbindung zu einem bestimmten internen Host zu initiieren, ohne eine spezielle Konfiguration der Firewall zum Weiterleiten von Verbindungen an einen bestimmten Port. Anwendungen wie VOIP , Videokonferenzen und andere Peer-to-Peer-Anwendungen müssen NAT-Traversal- Techniken verwenden, um zu funktionieren.

Fragmentierung und Prüfsummen

Reines NAT, das nur auf IP arbeitet, kann Protokolle, die sich vollständig mit IP-Informationen befassen, wie ICMP , korrekt analysieren oder nicht , je nachdem, ob die Nutzlast von einem Host innerhalb oder außerhalb der Übersetzung interpretiert wird . Sobald der Protokollstapel durchlaufen wird, werden die Protokolle selbst bei Basisprotokollen wie TCP und UDP unterbrochen , es sei denn, NAT ergreift Maßnahmen außerhalb der Netzwerkschicht.

IP-Pakete haben in jedem Paket-Header eine Prüfsumme, die eine Fehlererkennung nur für den Header ermöglicht. IP-Datagramme können fragmentiert werden, und es ist für eine NAT erforderlich, diese Fragmente wieder zusammenzusetzen, um eine korrekte Neuberechnung von Prüfsummen auf höherer Ebene und eine korrekte Verfolgung, welche Pakete zu welcher Verbindung gehören, zu ermöglichen.

Die wichtigsten Protokolle der Transportschicht, TCP und UDP, haben eine Prüfsumme, die alle von ihnen übertragenen Daten abdeckt, sowie den TCP- oder UDP-Header sowie einen Pseudo-Header , der die Quell- und Ziel-IP-Adressen des Pakets enthält, das das TCP enthält oder UDP-Header. Damit ein Ursprungs-NAT TCP oder UDP erfolgreich passieren kann, muss es die TCP- oder UDP-Header-Prüfsumme basierend auf den übersetzten IP-Adressen, nicht den ursprünglichen, neu berechnen und diese Prüfsumme in den TCP- oder UDP-Header des ersten Pakets des fragmentierten Satzes einfügen von Paketen. Das empfangende NAT muss die IP-Prüfsumme für jedes Paket, das es an den Zielhost weiterleitet, neu berechnen und auch den TCP- oder UDP-Header unter Verwendung der neu übersetzten Adressen und des Pseudo-Headers erkennen und neu berechnen. Dies ist kein vollständig gelöstes Problem. Eine Lösung besteht darin, dass die empfangende NAT das gesamte Segment neu zusammensetzt und dann eine über alle Pakete berechnete Prüfsumme neu berechnet.

Der Ursprungs-Host kann eine Pfad-MTU-Erkennung durchführen , um die Paketgröße zu bestimmen, die ohne Fragmentierung übertragen werden kann, und dann das Nicht-Fragmentieren- (DF)-Bit in das entsprechende Paket-Header-Feld setzen. Dies ist natürlich nur eine Einweglösung, da der antwortende Host Pakete beliebiger Größe senden kann, die vor dem Erreichen des NAT fragmentiert werden können.

DNAT

Ziel-Netzwerkadressübersetzung (DNAT) ist eine Technik zum transparenten Ändern der Ziel- IP-Adresse eines Endrouten- Pakets und zum Durchführen der inversen Funktion für alle Antworten. Jeder Router, der sich zwischen zwei Endpunkten befindet, kann diese Transformation des Pakets durchführen.

DNAT wird häufig verwendet, um einen Dienst, der sich in einem privaten Netzwerk befindet, auf einer öffentlich zugänglichen IP-Adresse zu veröffentlichen. Diese Verwendung von DNAT wird auch als Portweiterleitung oder DMZ bezeichnet, wenn sie auf einem gesamten Server verwendet wird, der dem WAN ausgesetzt ist, was einer nicht verteidigten militärischen demilitarisierten Zone (DMZ) entspricht.

SNAT

Die Bedeutung des Begriffs SNAT variiert je nach Anbieter. Viele Anbieter haben proprietäre Definitionen für SNAT :

  • Quell-NAT ist die gemeinsame Erweiterung, als Gegenstück zu Ziel-NAT ( DNAT )
  • Stateful NAT wird von Cisco Systems verwendet
  • statisches NAT wird von WatchGuard verwendet
  • Secure NAT wird von F5 Networks und von Microsoft (in Bezug auf den ISA Server ) verwendet.

Microsofts Secure Network Address Translation (SNAT) ist Teil von Microsofts Internet Security and Acceleration Server und ist eine Erweiterung des in Microsoft Windows Server integrierten NAT-Treibers . Es bietet Verbindungsverfolgung und -filterung für die zusätzlichen Netzwerkverbindungen, die für die Protokolle FTP , ICMP , H.323 und PPTP benötigt werden , sowie die Möglichkeit, einen transparenten HTTP- Proxy-Server zu konfigurieren .

Dynamische Netzwerkadressübersetzung

Wie dynamisches NAT funktioniert.

Dynamisches NAT ist ebenso wie statisches NAT in kleineren Netzwerken nicht üblich, aber in größeren Unternehmen mit komplexen Netzwerken zu finden. Der Unterschied zwischen dynamischem NAT und statischem NAT besteht darin, dass statisches NAT eine Eins-zu-eins-Zuordnung von internen zu öffentlichen statischen IP-Adressen bereitstellt, dynamisches NAT normalerweise eine Gruppe verfügbarer öffentlicher IP-Adressen verwendet.

NAT-Haarnadeln

NAT-Hairpinning , auch bekannt als NAT-Loopback oder NAT-Reflektion , ist eine Funktion vieler Consumer-Router, die den Zugriff auf einen Dienst über die öffentliche IP-Adresse aus dem lokalen Netzwerk ermöglicht. Dadurch entfällt die Notwendigkeit, für Hosts innerhalb des Netzwerks eine separate Domänennamenauflösung zu verwenden, als für das öffentliche Netzwerk für eine Website.

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
  • Adresse des Servers: 192.168.1.2
  • Adresse eines lokalen Computers: 192.168.1.100

Wenn ein Paket von einem Computer unter 192.168.1.100 an die öffentliche Adresse gesendet wird , wird das Paket normalerweise an das Standard-Gateway (den Router) weitergeleitet, es sei denn, in den Routing- Tabellen des Computers ist eine explizite Route festgelegt . Ein Router mit der NAT-Loopback-Funktion erkennt, dass 203.0.113.1 die Adresse seiner WAN-Schnittstelle ist, und behandelt das Paket, als ob es von dieser Schnittstelle käme. Es bestimmt das Ziel für dieses Paket basierend auf DNAT-Regeln (Portweiterleitung) für das Ziel. Wenn die Daten an Port 80 gesendet wurden und eine DNAT-Regel für Port 80 an 192.168.1.2 gerichtet ist , empfängt der Host an dieser Adresse das Paket.

Wenn keine anwendbare DNAT-Regel verfügbar ist, verwirft der Router das Paket. Eine ICMP Destination Unreachable- Antwort kann gesendet werden. Wenn DNAT-Regeln vorhanden waren, ist die Adressübersetzung weiterhin wirksam; der Router schreibt weiterhin die Quell-IP-Adresse in das Paket. Der lokale Computer ( 192.168.1.100 ) sendet das Paket als von 192.168.1.100 kommend , aber der Server ( 192.168.1.2 ) empfängt es als von 203.0.113.1 kommend . Wenn der Server antwortet, ist der Vorgang identisch wie bei einem externen Absender. Somit ist eine bidirektionale Kommunikation zwischen Hosts innerhalb des LAN-Netzwerks über die öffentliche IP-Adresse möglich.

NAT in IPv6

Die Netzwerkadressübersetzung wird in IPv6 nicht häufig verwendet , da eines der Designziele von IPv6 darin besteht, die End-to-End-Netzwerkkonnektivität wiederherzustellen. NAT-Loopback wird normalerweise nicht benötigt. Obwohl es immer noch möglich ist, macht der große Adressraum von IPv6 die Notwendigkeit überflüssig, Adressen zu sparen, und jedem Gerät kann eine eindeutige global routbare Adresse zugewiesen werden. Allerdings kann die Verwendung eindeutiger lokaler Adressen in Kombination mit der Netzwerkpräfixübersetzung ähnliche Ergebnisse erzielen.

Von NAT . betroffene Anwendungen

Einige Protokolle der Anwendungsschicht (wie FTP und SIP ) senden explizite Netzwerkadressen in ihren Anwendungsdaten. FTP im aktiven Modus verwendet beispielsweise getrennte Verbindungen für den Kontrollverkehr (Befehle) und für den Datenverkehr (Dateiinhalt). Beim Anfordern einer Dateiübertragung identifiziert der anfragende Host die entsprechende Datenverbindung anhand seiner Netzwerkschicht- und Transportschichtadressen . Liegt der anfragende Host hinter einer einfachen NAT-Firewall, macht die Übersetzung der IP-Adresse und/oder TCP-Portnummer die vom Server empfangenen Informationen ungültig. Das Session Initiation Protocol (SIP) steuert viele Voice over IP (VoIP)-Anrufe und leidet unter dem gleichen Problem. SIP und SDP können mehrere Ports verwenden, um eine Verbindung aufzubauen und Sprachstreams über RTP zu übertragen . IP-Adressen und Portnummern sind in den Nutzdaten verschlüsselt und müssen vor dem Durchlaufen von NATs bekannt sein. Ohne spezielle Techniken wie STUN ist das NAT-Verhalten unvorhersehbar und die Kommunikation kann fehlschlagen.

Application Layer Gateway (ALG)-Software oder -Hardware kann diese Probleme beheben. Ein ALG-Softwaremodul, das auf einem NAT-Firewallgerät ausgeführt wird, aktualisiert alle Nutzdaten, die durch die Adressübersetzung ungültig gemacht wurden. ALGs müssen das Protokoll der höheren Schicht verstehen, das sie reparieren müssen, und daher erfordert jedes Protokoll mit diesem Problem ein separates ALG. Auf vielen Linux-Systemen gibt es beispielsweise Kernel-Module, sogenannte Connection Tracker , die dazu dienen, ALGs zu implementieren. ALG funktioniert jedoch nicht, wenn der Kontrollkanal verschlüsselt ist (zB FTPS ).

Eine andere mögliche Lösung für dieses Problem ist die Verwendung von NAT-Traversal- Techniken unter Verwendung von Protokollen wie STUN oder 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, aber die UDP-basierte Technik ist einfacher, besser verstanden und kompatibel mit Legacy-NATs. In jedem Fall muss das High-Level-Protokoll unter Berücksichtigung von NAT-Traversal entworfen werden und funktioniert nicht zuverlässig über symmetrische NATs oder andere Legacy-NATs mit schlechtem Verhalten.

Andere Möglichkeiten sind UPnP Internet Gateway Device Protocol , NAT-PMP (NAT Port Mapping Protocol) oder Port Control Protocol (PCP), aber diese erfordern, dass das NAT-Gerät dieses Protokoll implementiert.

Die meisten herkömmlichen Client-Server-Protokolle (FTP ist die größte Ausnahme) senden jedoch keine Schicht-3-Kontaktinformationen und erfordern daher keine besondere Behandlung durch NATs. Tatsächlich ist die Vermeidung von NAT-Komplikationen heute praktisch eine Anforderung beim Entwurf neuer Protokolle höherer Schichten (zB die Verwendung von SFTP anstelle von FTP).

NATs können auch Probleme verursachen, wenn IPsec- Verschlüsselung angewendet wird und in Fällen, in denen sich mehrere Geräte wie SIP- Telefone hinter einem NAT befinden. Telefone, die ihre Signalisierung mit IPsec verschlüsseln, kapseln die Portinformationen in ein verschlüsseltes Paket, was bedeutet, dass NA(P)T-Geräte nicht auf den Port zugreifen und ihn übersetzen können. In diesen Fällen kehren die NA(P)T-Geräte zum einfachen NAT-Betrieb zurück. Dies bedeutet, dass der gesamte Datenverkehr, der zum NAT zurückkehrt, einem Client zugeordnet wird, was dazu führt, dass der Dienst an mehr als einem Client "hinter" dem NAT fehlschlägt. Es gibt mehrere Lösungen für dieses Problem: Eine ist die Verwendung von TLS , das im OSI-Referenzmodell auf Ebene 4 arbeitet und daher die Portnummer nicht maskiert; eine andere besteht darin, das IPsec in UDP zu kapseln – letzteres ist die von TISPAN gewählte Lösung , um ein sicheres NAT-Traversal oder ein NAT mit "IPsec Passthru" -Unterstützung zu erreichen.

Interactive Connectivity Establishment ist eine NAT-Traversal-Technik, die nicht auf ALG-Unterstützung angewiesen ist.

Die von Dan Kaminsky am 8. Juli 2008 angekündigte Sicherheitslücke im DNS-Protokoll ist indirekt von der NAT-Portzuordnung betroffen. Um DNS-Cache-Poisoning zu vermeiden , ist es äußerst wünschenswert, die UDP-Quellportnummern ausgehender DNS-Anfragen von einem DNS-Server hinter einer Firewall, die NAT implementiert, nicht zu übersetzen. Die empfohlene Problemumgehung für die DNS-Sicherheitslücke besteht darin, dass alle Caching-DNS-Server zufällige UDP-Quellports verwenden. Wenn die NAT-Funktion die UDP-Quellports derrandomisiert, wird der DNS-Server anfällig.

Beispiele für NAT-Software

Siehe auch

Anmerkungen

Verweise

Externe Links