Network Address Translation (NAT)

RRAS bietet Network Address Translation (NAT), bei der eine IP-Adresse auf mehreren anderen IP-Adressen abgebildet werden kann. Dieses wird z.B. bei der Verbindung eines privaten Netzes (Intranet) mit dem Internet genutzt.
NAT funktioniert so, daß die Kombinationen interne IP-Adresse / Sendeport auf einem Port des NAT-Rechners abgebildet werden, der dann eine Verbindung mit dem entfernten Host aufnimmt. Ein NAT-Rechner wird auch als transparenter Proxy bezeichnet.

NAT-Funktionsweise

Alle Anfragen vom LAN ins Internet laufen über das private Interface des NAT-Servers, denn das befindet sich ja ebenfalls im Subnetz des LAN. Der Rechner merkt sich die (lokale) IP-Adresse sowie den Quellport des anfragenden Rechners und schickt die Anfrage weiter ins Internet.

Dazu verwendet er aber nicht die ursprüngliche Adresse, sondern die öffentliche Adresse des öffentlichen Interface: Die Anfrage wird also von der einen Schnittstelle auf die andere Schnittstelle geroutet. Dabei wird die IP-Adresse von der lokalen in eine öffentliche übersetzt und ein neuer Quellport vergeben.

Kommt die Antwort auf die Anfrage zurück, landet diese Antwort logischerweise wieder auf dem öffentlichen Interface. Der NAT-Rechner sucht anhand der Antwort die ursprüngliche Anfrage aus seinen Tabellen heraus und setzt das Paket entsprechend wieder so auf die lokale IP-Adresse um, dass der Client das Paket als Antwort auf seine ursprüngliche Anfrage interpretieren kann. Somit funktioniert dieser Mechanismus auch, wenn mehrere Rechner gleichzeitig auf denselben Server im Internet zugreifen.

Dieser Mechanismus führt also dazu, dass die Workstations im LAN einen gemeinsamen Internet-Zugang verwenden können, obwohl insgesamt nur eine öffentliche IP-Adresse zur Verfügung steht.

Adressen in internen Netzwerken haben üblicherweise ungültige Adressen, d.h. wenn der Empfänger einer Anfrage an den Absender eine Antwort zurücksendet, kommt diese nicht an.
Dies ist der Punkt wo NAT ins Spiel kommt, dabei wird in einer Anfrage von einem internen Rechner die Absendeadresse so geändert, dass der Empfänger eine Nachricht zurücksenden kann. Bei den Antworten wird wiederum die Empfängeradresse geändert, so dass der interne Rechner die Nachricht empfangen kann.
Damit die Kommunikation zwischen Server und ihrem Rechner funktioniert, merkt sich der Router eine Zuordnungstabelle. Ein typischer Ablauf sieht dann so aus:

  1. Der interne Rechner (192.168.0.52:1000) stellt eine Anfrage an den Server 212.227.118.91:80
    Absender IP Absender Port Empfänger IP Empfänger Port
    192.168.0.52 1000 212.227.118.91 80
  2. Der Router leitet die Anfrage weiter, ändert aber die Absenderadresse von 192.168.0.52 (= interne Rechneradresse) in 80.132.224.200 (=Adresse des Routers im Internet)
    Absender IP Absender Port Empfänger IP Empfänger Port
    80.132.224.200 12345 212.227.118.91 80
  3. Der Empfänger-Server (212.227.118.91:80) schickt eine Antwort:
    Absender IP Absender Port Empfänger IP Empfänger Port
    212.227.118.91 80 80.132.224.200 12345
  4. Der Router empfängt die Antwort, ändert die Empfängeradresse und leitet die Antwort in das interne Netz weiter
    Absender IP Absender Port Empfänger IP Empfänger Port
    212.227.118.91 80 192.168.0.52 1000
Die Zuordnung merkt sich der Router in einer eigenen Tabelle, z.B.:
Interne Rechner-Adresse Externe Router-Adresse Empfänger Adresse (optional)
192.168.0.52:1000 80.132.224.200:12345 212.227.118.91:80 (Beispiel oben)
Dabei gibt es unterschiedliche Arten der Umsetzung, wie diese Tabelle verwendet wird:
  1. Full Cone - hier wird die Empfänger Adresse ignoriert, d.h. jedes eingehende Paket mit der Adresse 80.132.224.200:12345 wird an die interne Adresse 192.168.0.52:1000 weitergeleitet, ohne Ansicht der Absenderadresse, also auch Rechner die nicht die IP-Adresse 212.227.118.91 haben.

  2. Restricted Cone - im Gegensatz zum Full Cone muss hier erst einmal ein Paket vom internen Rechner an einen externen Rechner gesendet werden, bevor eingehende Pakete von diesem Rechner akzeptiert werden. Dabei wird nur die IP-Adresse geprüft und nicht der Port. Also bei obiger Tabelle würden alle Pakete angenommen werde, die vom Rechner 212.227.118.91 an 80.132.224.200:12345 gesendet werden und an die interne Adresse 192.168.0.52:1000 weitergeleitet.

  3. Port Restricted Cone - hier wird Full Cone weiter eingeschränkt, neben der IP-Adresse wird auch noch der Port überprüft. Also werden ausschliesslich Pakete an 192.168.0.52:1000 weitergegeben, wenn die Adresse 80.132.224.200:12345 ist und der Absender 212.227.118.91:80

    Unterschiede Cone

    1. Beim Full Cone wird die Spalte "Empfänger Adresse" ignoriert

    2. Beim Restricted Cone wird von der Spalte "Empfänger Adresse" nur die IP-Adresse ohne Port geprüft, dabei kann es sich aber um eine Liste von IP-Adressen handeln.

    3. Beim Port Restricted Cone wird von der Spalte "Empfänger Adresse" die IP-Adresse mit Port geprüft, dabei kann es sich aber um eine Liste von IP-Adressen mit Ports handeln.

  4. Symmetric - Bei Full Cone und Port Restricted Cone wird die dritte Spalte erweitert, wenn weitere Server angefragt werden. Also wenn z.B. der interne Rechner über den Port zwei Server anfragt (212.227.118.91:80 und 212.227.118.92:8080), wird die Tabelle erweitert:

    Interne Rechner-Adresse Externe Router-Adresse Empfänger Adresse
    192.168.0.52:1000 80.132.224.200:12345 212.227.118.91:80, 212.227.118.92:8080

    Beim Symmetric
    NAT werden statt dessen zwei Einträge generiert: eneriert: neriert:
     
    Interne Rechner-Adresse Externe Router-Adresse Empfänger Adresse
    192.168.0.52:1000 80.132.224.200:12345 212.227.118.91:80
    192.168.0.52:1000 80.132.224.200:67890 212.227.118.92:8080

    Die Zuordnung ist somit immer eindeutig.

Ein Beispiel für NAT

Angenommen, in einem kleinen Unternehmen wird die Netzwerkkennung 192.168.0.0 für das Intranet verwendet, und der Internetdienstanbieter hat dem Unternehmen die öffentliche Adresse w1.x1.y1.z1 zugewiesen. Bei der Netzwerkadressübersetzung (NAT) werden alle privaten Adressen in 192.168.0.0 auf die IP-Adresse w1.x1.y1.z1 gesetzt. Wenn mehrere private Adressen auf eine einzelne öffentliche Adresse gesetzt werden, verwendet dynamisch ausgewählte TCP- und UDP-Ports, um die Hosts im Intranet voneinander zu unterscheiden.

Die folgende Abbildung zeigt ein Beispiel, in dem NAT verwendet wird, um Verbindungen zwischen einem Intranet und dem Internet transparent herzustellen.

Wenn ein privater Anwender unter der Adresse 192.168.0.10 einen Webbrowser verwendet, um eine Verbindung mit dem Webserver unter der Adresse w2.x2.y2.z2 herzustellen, wird ein IP-Paket mit den folgenden Informationen erstellt:

  • IP-Zieladresse: w2.x2.y2.z2
  • IP-Quelladresse: 192.168.0.10
  • Zielport: TCP-Port 80
  • Quellport: TCP-Port 5000

Dieses IP-Paket wird dem NAT-Protokoll übergeben, das die Adressen des ausgehenden Pakets wie folgt ändert:

  • IP-Zieladresse: w2.x2.y2.z2
  • IP-Quelladresse: w1.x1.y1.z1
  • Zielport: TCP-Port 80
  • Quellport: TCP-Port 1025

Das NAT-Protokoll zeichnet die Zuordnung von {192.168.0.10, TCP 1025} zu {w1.x1.y1.z1, TCP 5000} in einer Tabelle auf.
Das so übersetzte IP-Paket wird über das Internet gesendet. Die Antwort wird zurückgesendet und vom NAT-Protokoll empfangen. Beim Empfang enthält das Paket die folgenden Informationen zur öffentlichen Adresse:

  • IP-Zieladresse: w1.x1.y1.z1
  • IP-Quelladresse: w2.x2.y2.z2
  • Zielport: TCP-Port 1025
  • Quellport: TCP-Port 80

Das NAT-Protokoll schlägt in der Übersetzungstabelle nach, setzt die öffentlichen Adressen wieder auf die privaten Adressen um und übermittelt das Datenpaket an den Computer unter der Adresse 192.168.0.10. Das übermittelte Datenpaket enthält die folgenden Adressinformationen:

  • IP-Zieladresse: 192.168.0.10
  • IP-Quelladresse: w2.x2.y2.z2
  • Zielport: TCP-Port 5000
  • Quellport: TCP-Port 80

Bei Datenpaketen, die vom NAT-Protokoll ausgehen, wird die IP-Quelladresse (eine private Adresse) auf die vom ISP zugewiesene Adresse (eine öffentliche Adresse) gesetzt, und die TCP- bzw. UDP-Portnummern werden auf andere TCP- bzw. UDP-Portnummern umgesetzt.

Bei Datenpaketen, die vom NAT-Protokoll empfangen werden, wird die IP-Zieladresse (eine öffentliche Adresse) auf die ursprüngliche Adresse im Intranet (eine private Adresse) gesetzt, und die TCP- bzw. UDP-Portnummern werden auf die ursprünglichen TCP- bzw. UDP-Portnummern zurückgesetzt.

  • Pakete, die die IP-Adresse nur im IP-Header enthalten, werden von NAT ordnungsgemäß übersetzt. Pakete, die die IP-Adresse im IP-Aufkommen enthalten, werden von NAT möglicherweise nicht ordnungsgemäß übersetzt.

 

Kann NAT eine Firewall ersetzen?

Diese Frage wird sehr häufig gestellt und in gewisser Hinsicht kann sie auch bejaht werden. Tatsächlich ist ein Rechner in einem lokalen Netzwerk, die hinter einem Router mit NAT stehen, von außen nicht erreichbar, wenn auf dem NAT-Router kein Port von außen nach innen zu diesem Rechner durchgeleitet wird. Durch NAT ist deshalb von außen auch nur sehr schwer feststellbar, ob im lokalen Netzwerk des Router mehrere Rechner stehen und wie viele genau.

Diese pauschale Nichterreichbarkeit für Zugriffe von außen ist jedoch keine klassische Firewall-Funktionalität und sollte nicht überschätzt werden. Eine Firewall bietet auch einen adäquaten Schutz für Zugriffe von innen nach außen und besitzt, je nach Ausstattung, auch erweiterte Möglichkeiten für Reglementierungen bestimmter Datenströme, die NAT allein nicht bietet.