Network Address Translation (NAT)
Historie: Die IP-Adressen werden knapp
Jeder Rechner im Internet muss eine IP-Adresse besitzen, damit er Daten erhalten kann. Wenn also eine Schule 200 Arbeitsplatzrechner mit Internet-Zugängen ausstatten möchte, sind hierfür 200 IP-Adressen notwendig. Anfang der achtziger Jahre war noch nicht vorstellbar, dass jeder Haushalt, jede Schule, jede Firma usw. mehrere IP-Adressen benötigen könnte. Universitäten und Institutionen, die am Internet angeschlossen waren, hatten meist nur wenige Großrechner am Netz, an denen die Anwender mit direkten Terminalverbindungen arbeiteten. Deshalb benötigte man nur für jeden Großrechner nur eine IP-Adresse.
Etwa zehn Jahre später, in den Anfängen des Internet-Booms, machten sich die ersten Experten Gedanken darüber, wie die bereits zu dem Zeitpunkt stark gestiegene Nachfrage nach IP-Adressen in der Zukunft aussehen würde. Selbst nach optimistischen Hochrechnungen würde der gesamte IP-Adressraum in der damaligen Entwicklung in wenigen Jahren aufgebraucht sein.
Die Idee, die einige Experten unabhängig voneinander hatten, wurde im Mai 1994 durch sogenannte Network Address Translator realisiert.
Network Adress Translator (NAT)
Dieser Adressübersetzer wird als zusätzliches Modul in einem Internet-Router integriert. Initiiert ein Rechner im lokalen Netzwerk eine Verbindung zu einem Rechner im Internet, so werden die Datenpakete mit der Anfrage zunächst zum Router des Netzwerks übertragen. Dieser Router nimmt die Adressübersetzung der Absenderadresse vor, tauscht also die Adresse des internen Rechners gegen seine eigene im Internet gültige IP-Adresse aus und überträgt dann die Anfrage in das Internet. Der Router stellt sich somit gegenüber dem Internet als Absender der Anfrage dar.
Lokales Netz (LAN) | Öffentliches Netz (Internet) | |||
Quelle | Ziel | Quelle | Ziel | |
192.168.2.1:8212 | 15.232.122.1:80 | NAT | 202.1.2.22:9761 | 15.232.122:80 |
192.168.2.1:8810 | 16.23.110.3:80 | → | 202.1.2.22:9762 | 16.23.110.3:80 |
192.168.2.16:211 | 15.232.122.1:80 | 202.1.2.22:9763 | 15.232.122.1:80 |
Gleichzeitig wird jede Adressübersetzung in einer NAT-Übersetzungstabelle gespeichert, um die Antwort aus dem Internet verarbeiten zu können. Jede Anfrage ins Internet bekommt dabei einen speziellen Port (z.B. in der Tabelle oben: z. B. 9761) zugewiesen. Daher kann der NAT-Router bei der Antwort aus dem Internet anhand der Portnummer wissen, an welchen lokalen Rechner er die Daten weiterreichen muss. Er tauscht die Empfängeradresse der Datenpakete gegen die IP-Adresse des lokalen Rechners aus und gibt die Daten dann ins lokale Netzwerk weiter. Der lokale Rechner erhält diese Datenpakete und kann sie verarbeiten.
Im Gegensatz zu einem lokalen Netz, das hinter einem normalen Router an das Internet angebunden wird, kann ein Netz, das hinter einem NAT-fähigen Router steht, theoretisch mit einem beliebigen IP-Adressbereich konfiguriert sein, da mit NAT eine strikte Trennung zwischen dem Internet und dem lokalen Netzwerk erfolgt. Der IP-Bereich des lokalen Netzwerks darf aber nicht im Internet für andere Geräte verwendet werden. Daher wurden IP-Bereiche (z. B. 192.168.x.x und 10.x.x.x) reserviert. Diese können nun von vielen lokalen Netzwerken hinter NAT-fähigen Routern verwendet werden, ohne dass es zu Kollisionen kommt. Daher findet man in den meisten Home-Netzwerken die Adressen mit 192.168 am Anfang und in den Schulen oft 10.x.x.x Netze.
Internet-Dienste mit NAT nach außen anbieten

Konzeptionell funktioniert NAT hervorragend für Datenübertragungen, die vom lokalen Netzwerk initiiert und in der dynamischen NAT-Übersetzungstabelle im Router verwaltet werden. Wie kann man jedoch einen Dienst, der auf einem Rechner im lokalen Netzwerk läuft, im Internet zur Verfügung stellen, so dass Verbindungen vom Internet aus initiiert werden können? Ein Beispiel hierfür wäre ein Mailserver, der vom Internet aus erreichbar sein muss, damit E-Mails empfangen werden können. Oder man möchte einen privaten Webserver oder Gameserver betreiben.
Für diese Zwecke gibt es neben der dynamischen NAT-Übersetzungstabelle noch eine statische Port-Übersetzungstabelle. In dieser Tabelle können statische Port-Umleitungen eingetragen werden. In so einer Umleitung kann ein bestimmter Port auf dem Router freigeschaltet und auf einen Rechner im lokalen Netzwerk umgeleitet werden. Im Bild wird beispielsweise der TCP-Port 80 (der Standard-Port für einen Webserver, HTTP) auf einem NAT-Router geöffnet und zu einem lokalen Rechner mit der IP-Adresse 192.168.178.26 umgeleitet.