Network Address Translation (NAT) is an addressing method that remaps IP address spaces by rewriting packet headers as traffic passes through routers or firewalls, enabling many hosts with private addresses to share a small number of public addresses and conserving scarce IPv4 space. NAT operates by maintaining a translation table that maps internal connections to external addresses and ports, with Port Address Translation (PAT) being the most common form, allowing thousands of internal hosts to share a single public address. While NAT became widespread due to IPv4's limited 4.3 billion addresses and delayed address exhaustion, it introduces operational challenges including state management complexities, loss of source attribution in logging, potential protocol failures for embedded addresses, and security considerations that require stateful firewalls rather than relying on NAT alone.
So funktioniert NAT
Ein NAT-Gerät befindet sich zwischen zwei Adressbereichen, in der Regel einem privaten internen Netzwerk und dem öffentlichen Internet. Es verwaltet eine Übersetzungstabelle, die interne Verbindungen externen Adressen und Ports zuordnet.
- Eingehendes Paket: Ein interner Host sendet ein Paket an ein externes Ziel. Das Paket erreicht das NAT-Gerät mit der privaten Quelladresse und dem Quellport des Hosts.
- Übersetzungseintrag erstellt: Das Gerät wählt eine öffentliche Adresse und bei der Port-Adress-Übersetzung einen Quellport aus. Es speichert die Zuordnung zwischen der internen Adresse und dem Port sowie der externen Adresse und dem Port in seiner Übersetzungstabelle.
- Header-Umschreibung: Das Gerät ersetzt die Quelladresse und den Port im Paket-Header und berechnet die Prüfsummen neu. Anschließend leitet es das Paket an den Empfänger weiter.
- Übersetzte Antwort: Der externe Server antwortet an die öffentliche Adresse und den Port. Das Gerät sucht den Eintrag, stellt das ursprüngliche interne Ziel wieder her und leitet das Paket an den Host weiter.
- Eintrag läuft ab: Wenn die Verbindung geschlossen wird oder länger als ein Timeout inaktiv bleibt, entfernt das Gerät den Tabelleneintrag und kann den Port möglicherweise wiederverwenden.
Die Port-Adressübersetzung, auch als NAT-Overload bezeichnet, ist die gängigste Form und ermöglicht es Tausenden von internen Hosts, sich eine öffentliche Adresse zu teilen. Statisches NAT ordnet eine interne Adresse einer externen Adresse zu, was für den eingehenden Zugriff auf Server geeignet ist. Unaufgeforderter eingehender Datenverkehr hat keinen Tabelleneintrag und wird daher verworfen, sofern keine statische Zuordnung oder Portweiterleitung vorliegt. Einige Protokolle betten Adressen in ihre Nutzdaten ein und benötigen einen Helfer auf Anwendungsebene, um durch NAT hindurch zu funktionieren.
Häufige NAT-Probleme
Eine einzelne öffentliche Adresse verfügt über einen begrenzten Pool an Quellports, sodass ein stark ausgelasteter Client oder Proxy diese alle belegen kann. Neue Verbindungen schlagen dann zeitweise fehl oder stocken, häufig während Spitzenauslastungen, während bestehende Sitzungen weiterhin funktionieren.
Protokolle, die IP-Adressen oder Ports in der Nutzlast transportieren, können fehlschlagen, wenn nur die Header umgeschrieben werden. Einige Sprach-, Video- und Dateiübertragungssitzungen stellen zwar eine Verbindung her, übertragen jedoch keine Medien oder Daten, es sei denn, das NAT-Gerät verfügt über einen Helfer auf Anwendungsebene oder die Endpunkte nutzen Traversal-Techniken.
In Protokollen, die ins Internet gerichtet sind, wird nur die übersetzte Adresse angezeigt, sodass viele Nutzer als ein einziger erscheinen. Ermittler können ein Ereignis nur dann auf einen Host zurückverfolgen, wenn Übersetzungsprotokolle mit Zeitstempeln und Ports geführt und miteinander abgeglichen werden.
Interne Clients, die einen Server über dessen öffentliche Adresse erreichen, können Fehler melden, wenn das NAT-Gerät den Datenverkehr nicht wieder ins interne Netzwerk zurückleiten kann. Zu den Symptomen gehören Dienste, die vom Internet aus funktionieren, im internen Netzwerk jedoch eine Zeitüberschreitung verursachen. Eine gängige Abhilfe ist Split-Horizon-DNS.
Die Zusammenführung von Netzwerken, die beide denselben privaten Adressbereich nutzen – häufig nach einer Übernahme –, führt zu Routing-Konflikten. Teams fügen Double-NAT oder eine Übersetzung zwischen den Bereichen hinzu, was die Fehlerbehebung und die DNS-Einträge verkompliziert.