Network Address Translation

Aus Foxwiki

Network Address Translation (NAT) - Übersetzung von IP-Adressen

Beschreibung

Netzwerkadressübersetzung
  • Sammelbegriff für Änderungen von Adressen im IP-Header von IP-Paketen (Layer-3 des OSI-Modells)
  • NAT (genauer SNAT) ermöglicht die gleichzeitige Verwendung einer öffentlichen Adresse durch mehrere Hosts
  • Üblicherweise übernimmt der Router im Netzwerk die SNAT, der die Verbindung zum Internet herstellt
  • Oft ist dieser Router das Default-Gateway eines Hosts

Vorteile

NAT hilft die Verknappung der IPv4 Adressen zu entschleunigen
  • Dies geschieht durch die Ersetzung mehrerer Adressen für mehrere Endsysteme durch eine einzige IP-Adresse
  • IP-Adressen eines Netzes können vor einem anderen Netz verborgen werden
  • Somit kann NAT zur Verbesserung der Privatsphäre eingesetzt werden
  • Dieselben IP-Adressbereiche können von mehreren abgeschlossenen privaten Netzwerken verwendet werden
  • Es kommt zu keinen Adresskollisionen, da nach außen nur die IP-Adresse des NAT-Routers sichtbar ist

Nachteile

Ein Problem an NAT ist, dass die saubere Zuordnung „1 Host mit eindeutiger IP-Adresse“ nicht eingehalten wird
  • Durch das Umschreiben von Protokollen
  • Ein Problem an NAT ist, dass die sall-Headern, was einem Man-in-the-middle-Angriff (MITM-Angriff[1]) ähnelt, haben insbesondere ältere Protokolle und Kryptografieverfahren auf Netzwerk- und Transportebene durch diesen Designbruch Probleme.
  • Ebenso leiden Netzwerkdienste, die Out-of-Band-Signalisierung (Telekommunikationssignalisierung) und Rückkanäle einsetzen, etwa IP-Telefonie-Protokolle, unter Komplikationen durch NAT-Gateways.
  • Das Ende-zu-Ende Prinzip (Direktverbindung) wird verletzt, indem der NAT-Router das IP-Paket bzw. TCP-Segment verändert, ohne dass er selbst der verschickende Host ist.

NAT-Typen

Option Beschreibung
Source-NAT Adresse des verbindungsaufbauenden Computers (Quelle) umschreiben
Destination-NAT Adresse des angesprochenen Computers (Ziel) umschreiben

Source-NAT

Anwendung aufgrund der Knappheit öffentlicher IPv4-Adressen
  • Eine spezielle Form der SNAT wird auch Masquerading bzw. Masquerade
  • Port and Address Translation (PAT) oder Network Address Port Translation (NAPT) genannt
  • Wird vor allem bei Einwahlverbindungen [2] genutzt
  • Beim Maskieren wird automatisch durch einen Algorithmus die Absender-Adresse des Pakets in die IP-Adresse des Interfaces geändert, auf dem das Paket den Router verlässt
  • Beim SNAT muss die (neue) Quell-Adresse explizit angegeben werden
  • In privaten oder möglichst preisgünstigen Netzinstallationen wird Source-NAT als eine Art Sicherheitsmerkmal und zur Trennung von internen und externen Netzen eingesetzt
  • Durch das Maskieren der Quell-IP-Adresse können die internen Rechner nicht mehr von außen direkt angesprochen werden.

Destination-NAT

Destination-NAT wird verwendet, um das Ziel eines IP-Pakets zu ändern
  • Meist findet DNAT Verwendung beim Ändern der öffentlichen IP-Adresse eines Internet-Anschlusses in die private IP-Adresse eines Servers im privaten Subnetz
  • Diese Methode ist als „Port-Forwarding“ in Verbindung mit UDP / TCP - Verbindungen bekannt
  • DNAT kann daher auch dazu genutzt werden, um mehrere, unterschiedliche Serverdienste, die auf verschiedenen Computern betrieben werden, unter einer einzigen (öffentlichen) IP-Adresse anzubieten
  • Abgrenzung von DNAT auch NAT-Traversal bzw. NAT-T

Kategorisierung

RFC 3489, der das Protokoll STUN zur Traversierung von NAT-Gateways beschreibt, ordnet diese in vier verschiedene Klassen ein.

Diese prototypischen Grundszenarien bilden in modernen NAT-Systemen allerdings oft nur Anhaltspunkte zur Klassifizierung punktuellen Verhaltens der Gateways.

  • Diese benutzen teilweise Mischformen der klassischen Ansätze zur Adressumsetzung.
  • Oder sie wechseln dynamisch zwischen zwei oder mehreren Verhaltensmustern.
  • RFC 3489 ist durch RFC 5389 ersetzt worden, der diese Kategorisierung nicht mehr versucht.

Full Cone NAT

  • Im Full Cone NAT-Szenario setzt ein Gateway interne Adressen und Ports nach einem statischen Muster in eine externe Adresse und deren Ports um.
  • Externe Hosts bauen über die externen Adressen des NAT-Gateways Verbindungen zu internen Hosts auf.
  • Full Cone NAT ist auch unter der Bezeichnung EnS port forwarding bekannt.

Restricted Cone NAT

  • Im Restricted Cone NAT-Szenario erlaubt das Gateway die Kontaktaufnahme eines externen mit einem internen Host.
  • Dem Verbindungsversuch muss eine Kontaktaufnahme des internen Hosts mit dem externen Host vorausgehen.
  • Es wird dabei der gleiche Zielport verwendet.

Port Restricted Cone NAT

  • Im Port Restricted Cone NAT-Szenario erlaubt das Gateway die Kontaktaufnahme eines externen mit einem internen Host.
  • Dem Verbindungsversuch muss eine Kontaktaufnahme des internen Hosts mit dem externen Host vorausgehen.
  • Es wird dabei der gleiche Zielport und der gleiche Quellport verwendet.

Symmetric-NAT

  • Im Symmetric-NAT-Szenario wird jede einzelne Verbindung mit einem unterschiedlichen Quellport ausgeführt.
  • Die Beschränkungen sind wie bei Restricted Cone NAT-Szenario.
  • Jeder Verbindung wird ein eigener Quellport zugewiesen.
  • Eine Initiierung von Verbindungen durch externe Hosts nach Intern ist nicht möglich.

Funktionsweise

NAT-Router, NAT-Session und NAT-Table

Grundfunktion
Ein moderner Router mit NAT-Funktion ist zustandsbehaftet (stateful).
  • Beim stateful firewalling werden für jede seitens eines Clients angefragte Verbindung die zugehörigen Verbindungsinformationen (unter anderem IP-Adressen, Protokoll / Ports und Timeouts) in einer Session-Table gespeichert.
  • Anhand der gespeicherten Informationen kann der NAT-Router dann das jeweilige Antwort-Datenpaket dem richtigen Client wieder zuordnen.
  • Nach Ablauf einer Session wird ihr Eintrag aus der Session-Table gelöscht.
  • Die Anzahl der Sessions, die ein NAT-Router gleichzeitig offen halten kann, ist durch seinen Arbeitsspeicher begrenzt.
  • 10.000 Sessions belegen etwa 3 MB Speicherplatz

Source NAT (SNAT)

Bei jedem Verbindungsaufbau durch einen internen Client wird die interne Quell-IP-Adresse durch die öffentliche IP-Adresse des Routers ersetzt.
  • Ist der Ursprungsport belegt wird der Quellport des internen Clients durch einen freien Port des Routers ersetzt.
  • Diese Zuordnung wird in der Session-Table (NAT-Table) des Routers gespeichert.
  • Anhand der gespeicherten Informationen kann der NAT-Router dann das jeweilige Antwort-Datenpaket dem richtigen Client wieder zuordnen.
  • Der Vorgang wird als Port Address Translation (PAT) bezeichnet.
lokales Netz (Local Area Network/LAN) öffentliches Netz (Wide Area Network/WAN)
Quelle Ziel Router
===== = =====>
NAT
Quelle Ziel
192.168.0.2:49701 170.0.0.1:80 205.0.0.2:49701 170.0.0.1:80
192.168.0.3:50387 170.0.0.1:80 205.0.0.2:50387 170.0.0.1:80
192.168.0.4:49152 170.0.0.1:23 205.0.0.2:49152 170.0.0.1:23
Beispiel Source-NAT und IP-Routing
  • In diesem Beispiel nutzt das private Netz die IP-Adressen 192.168.0.0/24.
  • Zwischen diesem Netz und dem öffentlichen Internet befindet sich ein Source-NAT-Router mit der öffentlichen Adresse 205.0.0.2/32.
  • Ein Routing ist erforderlich, wenn Absender und Empfänger in verschiedenen Netzen liegen.
  • Möchte eine über einen Source-NAT-Router angebundene Station ein Paket an einen Empfänger außerhalb seines (privaten) Netzes senden, so funktioniert der Kommunikationsprozess (vereinfacht dargestellt) wie folgt:

Ermittlungen

  1. Zuerst ermittelt die Station über DNS die Ziel-IP des Servers, und über die Routing-Tabelle den für das gewünschte Ziel nächstgelegenen Router, das sei hier der Source-NAT-Router.
  2. Dann ermittelt die Station per Address Resolution Protocol (ARP) dessen MAC-Adresse und baut ein Paket wie folgt zusammen:
Es enthält
  1. Als Ziel-MAC-Adresse die MAC-Adresse des Source-NAT-Routers.
  2. Die Ziel-IP-Adresse des Empfängers (hier 170.0.0.1).
  3. Die Ziel-Portadresse für den Server.
  4. Die MAC- und IP-Adresse des Absenders (hier 192.168.0.4).
  5. Einen Absenderport (irgendeinen freien Port (high dynamic Port)) für die gerade anfragende Sitzung.
  6. Sowie andere (Nutz)Daten.

Empfang

  • Der Source-NAT-Router empfängt und verarbeitet das Paket, weil es an seine MAC-Adresse gerichtet ist.
    • Bei der Verarbeitung im Router wird das Paket in abgeänderter Form weitergeleitet.
    • Der Router ermittelt anhand der Empfänger-IP-Adresse den nächsten Router.
    • Er ermittelt per ARP dessen MAC-Adresse und baut das Paket wie folgt um:
      • Es erhält nun abweichend die MAC-Adresse des nächsten Routers.
      • Die Ziel-IP-Adresse des Empfängers (170.0.0.1), Ziel-Port
      • Die öffentliche MAC- und IP-Adresse des Source-NAT-Routers (205.0.0.2), einen gerade freien Absender-Port aus dem Reservoir des Routers (hier 49152) und die Nutzdaten, die gleich bleiben.

Verarbeitung

Durch NAT wird das Paket auf Schicht 3 wesentlich verändert
  • Diese Zuordnung der ursprünglichen Absenderadresse und des Ports (192.168.0.4:49152) zum jetzt enthaltenen Adress-Tupel[3](205.0.0.2:49152) wird im Router solange gespeichert, bis die Sitzung abläuft oder beendet wird.
  • Bei der Bearbeitung in nachfolgenden IP-Routern wird das Paket lediglich auf Schicht 2 verändert.
  • Der Router ermittelt den nächsten Router, ermittelt per ARP dessen MAC-Adresse und baut das Paket wie folgt um:
    • Es erhält nun abweichend als Ziel-MAC-Adresse die MAC-Adresse des nächsten Routers
    • Die Absender-MAC-Adresse wird gegen die eigene ausgetauscht.
    • Die IP-Adresse des Empfängers (170.0.0.1), Ziel-Port sowie die Absender-IP-Adresse des Source-NAT-Routers (205.0.0.2), dessen Absender-Port 49152 und die Nutzdaten bleiben erhalten.
  • Das bedeutet: Auf Schicht 3 wird das Paket hier nicht verändert.
  • Dieser Vorgang wiederholt sich, bis ein letzter Router die Zielstation in einem direkt angeschlossenen Netz findet.
  • Dann setzt sich das Paket wie folgt zusammen:
    • Es erhält als Absender-MAC-Adresse die des letzten Routers, als Ziel die MAC-Adresse der Zielstation, die IP-Adresse des Empfängers (170.0.0.1), Ziel-Port sowie die IP-Adresse des Absender-Source-NAT-Routers (205.0.0.2), dessen Absender-Port 49152 und natürlich Nutzdaten.

Abschluss

  • Nach erfolgreicher Verarbeitung durch den Server wird die Antwort dann wie folgt zusammengestellt:
    • MAC-Adresse des für den Rückweg zuständigen Routers (wobei Hin- und Rückroute nicht unbedingt identisch sein müssen).
    • Die IP-Adresse des anfragenden Source-NAT-Routers (205.0.0.2), die Ziel-Portadresse 49152 sowie die MAC- und IP-Adresse des Servers (170.0.0.1) und dessen Absenderport , sowie Antwort-Daten (Payload).
  • Nachdem alle Router durchlaufen wurden, wird daraus schließlich im Source-NAT-Router (205.0.0.2):
    • MAC-Adresse und IP-Adresse des anfragenden Rechners (hier 192.168.0.4), und dessen Portadresse 49152 sowie die MAC des Source-NAT-Routers und IP-Adresse des Servers (170.0.0.1) und dessen Absenderport, sowie Antwort-Daten.
  • Wird diese Sitzung beendet, wird auch Port 49152 wieder freigegeben.

Destination NAT (DNAT)

  • Bei jedem Verbindungsaufbau durch den Client wird die Ziel-IP-Adresse durch die des eigentlichen Empfängers im LAN ersetzt.
  • Außerdem wird der Zielport durch einen freien Port des Routers ersetzt, der dadurch belegt wird.
  • Diese Zuordnung wird in der NAT-Table des Routers gespeichert.
öffentliches Netz (WAN) lokales Netz (LAN)
Quelle Ziel Router
===== = =====>
NAT
Quelle Ziel
170.0.0.1:1001 171.4.2.1:80 170.0.0.1:1001 192.168.0.2:80
170.0.0.1:1001 171.4.2.1:22 170.0.0.1:1001 192.168.0.3:22
170.0.0.1:1001 171.4.2.1:81 170.0.0.1:1001 192.168.0.3:81

NAT-Traversal

  • IPsec mit NAT-Traversal, oft nur als NAT-Traversal oder NAT-T bezeichnet, ist ein Verfahren zum Beheben von Problemen mit IPsec und Network Address Translation (NAT)[4].
  • NAT-T findet Gebrauch bei IPsec-VPN, wenn IPsec (Encapsulating Security Payload) ESP-Pakete an Internet-Anschlüssen mit NATend Routern nutzt.
  • Dabei werden die ESP-Pakete in UDP/4500 Pakete gepackt.
  • Network Address Translation bricht das Gebot der Ende-zu-Ende-Konnektivität.

Techniken

Keine universell anwendbaren Technik
  • Anwendungen, die sich typischerweise von Host zu Host verbinden (z. B. bei Peer-to-Peer- und IP-Telefonie-Anwendungen oder VPN-Verbindungen) benötigen NAT-Durchdringungstechniken.
  • Viele Techniken benötigen die Hilfe eines für beide Parteien direkt öffentlich zugänglichen Servers.
  • Manche Methoden nutzen einen solchen Server nur für den Verbindungsaufbau.
  • Andere leiten allen Verkehr der Verbindung über diesen Hilfs-Server.
  • Die meisten Methoden umgehen damit oft Unternehmens-Sicherheitsrichtlinien.
  • Deswegen werden in Unternehmensnetzwerken Techniken bevorzugt, die sich ausdrücklich kooperativ mit NAT und Firewalls verhalten.
  • Sie müssen administrative Eingriffe an der NAT-Übergabestelle erlauben.

Protokolle

  • SOCKS, das älteste Protokoll zur NAT-Durchdringung, ist weit verbreitet, findet aber wenig Anwendung.
  • Bei SOCKS baut der Client eine Verbindung zum SOCKS-Gateway auf (dieser ist meistens direkt mit dem Internet verbunden).
  • Die Kommunikation wirkt für den Kommunikationspartner so, als würde sie direkt vom SOCKS-Gateway stammen.
  • Bei Heimanwendungen wird Universal Plug and Play (UPnP) genutzt, was eine dynamische Konfiguration eines port-forwardings durch den Client selbst ermöglicht.
  • Einige Router unterstützen auch ESP-pass-through[5].
  • Dabei werden die ESP-Pakete direkt an das VPN-Gateway durchgereicht und auf NAT-T wird verzichtet.
  • Ein weiteres Beispiel für ein NAT-Traversal-Protokoll ist STUN[6], das eine hohe Bedeutung bei VoIP hat.

Portweiterleitung

Portweiterleitung - Weiterleitung einer Verbindung, die über ein Rechnernetz auf einem bestimmten Port eingeht, zu einem anderen Computer

Eine Portweiterleitung (englisch port forwarding) ist die Weiterleitung einer Verbindung, die über ein Rechnernetz auf einem bestimmten Port eingeht, zu einem anderen Computer.

  • Da der entsprechende Netzwerkdienst nicht von dem weiterleitenden Computer selbst geleistet wird, ist die Bezeichnung virtueller Server irreführend.
Die eingehenden Datenpakete werden hierbei per Destination NAT und die ausgehenden Pakete per Source NAT maskiert
  • die Ziel- und Quelladressen ersetzt
  • um die Anfrage an den tatsächlichen Server und dessen Antwort an den ursprünglichen Client weiterzuleiten
  • Für Server und Client entsteht so der Anschein, die eingehenden Pakete stammten von dem Computer, der die Portweiterleitung betreibt.
Port Forwarding wird oft dazu benutzt, FTP, Web-Server oder andere Server-basierende Anwendungen hinter einem NAT-Gateway zu betreiben

Portweiterleitung durch Router

  • Ein Router, der beispielsweise mit einem privaten lokalen Netz und dem Internet verbunden ist, wartet dabei an einem bestimmten Port auf Datenpakete.
  • Wenn Pakete an diesem Port eintreffen, werden sie an einen bestimmten Computer und gegebenenfalls einen anderen Port im internen Netzwerk weitergeleitet.
  • Alle Datenpakete von diesem Computer und Port werden, wenn sie zu einer eingehenden Verbindung gehören, per Network Address Translation (NAT) so verändert, dass es im externen Netz den Anschein hat, der Router würde die Pakete versenden.
Portweiterleitung wird es Rechnern innerhalb eines LAN – welche von einem externen Netz nicht direkt erreichbar sind – somit möglich, auch außerhalb dieses Netzes, insbesondere auch im Internet als Server zu fungieren, da diese somit über einen festgelegten Port (und mittels NAT) eindeutig ansprechbar gemacht werden.
Für alle Rechner im externen Netz sieht es so aus, als ob der Router den Serverdienst anbietet.
  • Dass dem nicht so ist, lässt sich anhand von Header-Zeilen oder Paketlaufzeitanalysen erkennen.
Beispiel

Eine größere Firma besitzt ein lokales Netzwerk, wobei mehrere Server nach außen (Internet) per ADSL-Router unter einer IP-Adresse (z. B. 205.0.0.1) auftreten. Jetzt möchte ein Client aus dem externen Netz (Internet) einen Dienst (z. B. HTTP/TCP Port 80) auf einem Server der Firma nutzen.

  • Er kann jedoch nur den ADSL-Router der Firma für den Dienst (HTTP/TCP Port 80) unter der ihm bekannten IP-Adresse (205.0.0.1) ansprechen.
  • Der ADSL-Router der Firma leitet die Anfrage für den Dienst (HTTP/TCP Port 80) an den entsprechenden Server im lokalen Netzwerk weiter.
Eine Portweiterleitung wird also benötigt, wenn keine Port Address Translation (PAT) möglich ist, da die erste Anfrage von außen (z. B. Internet) kommt und mehrere Server nur unter einer IP-Adresse von außen ansprechbar sind.

Verbesserung der Sicherheit

Ein anderes Anwendungsbeispiel für eine Portweiterleitung ist die Sicherung eines Kanals für die Übertragung vertraulicher Daten.
  • Dabei wird Port A auf Rechner 1 mit Port B auf Rechner 2 verknüpft durch eine im Hintergrund aufrechterhaltene Verbindung zwischen zwei anderen Ports der beiden Rechner.
  • Dies bezeichnet man auch als Tunneling.
So kann beispielsweise eine unsichere POP3-Verbindung (Nutzername und Passwort werden in der Regel im Klartext übertragen) durch den Transport in einem SSH-Kanal abgesichert werden
Der Port 113 auf dem POP-Server wird per SSH an den Port 113 des lokalen Rechners des Anwenders weitergeleitet.
  • Das lokale E-Mail-Programm kommuniziert nun mit dem lokalen Port (localhost:113) statt mit dem Port des Servers (pop.example.org:113).
  • Der SSH-Kanal transportiert dabei die Daten verschlüsselt über die parallel bestehende SSH-Verbindung zwischen den zwei Adressen.
  • Das Abgreifen des Passworts durch einen mithörenden Dritten wird dadurch nahezu unmöglich.
  • Voraussetzung für einen SSH-Tunnel ist ein zumindest eingeschränkter SSH-Zugang auf dem Server (pop.example.org), was Privatanwendern üblicherweise nicht gestattet wird.

Port Triggering

Beim Port Triggering werden sowohl die Ports festgelegt, über die die Daten des Programms nach außen gesendet werden, als auch über welche Ports die Antworten wieder eingehen.
  • Port Triggering erweitert damit die Technik der einfachen Portweiterleitung.
  • Wenn ein Rechner über eine Anwendung, deren Ports im Port Triggering festgelegt wurden, Daten ins Internet sendet, speichert der Router die IP-Adresse dieses Rechners und leitet die eingehenden Antwortpakete, entsprechend an diese IP-Adresse weiter (zurück).
  • Die Weiterleitung erfolgt hierbei jeweils an die IP-Adresse, von welcher die Anforderung kam, ohne dass diese in der Konfiguration hinterlegt ist.
  • Allerdings ist es auch mit dieser Technik nicht möglich, auf einem Port eingehende Verbindungen gleichzeitig an mehrere Rechner weiterzuleiten.
Bei Port Forwarding ist der Port immer offen, auch wenn der Dienst nicht benutzt wird.
  • Im Gegensatz dazu erlaubt Port Triggering den eingehenden Datenverkehr erst, nachdem ein Rechner aus dem lokalen Netz einen entsprechenden Request in Richtung Internet gesendet hat, und schließt den Port nach einer gewissen Zeitspanne der Inaktivität automatisch wieder.
  • Hieraus ergeben sich zwei Vorteile:
Erhöhte Sicherheit
Die eingehenden Ports sind nicht dauerhaft geöffnet.
  • Das Forwarding braucht nicht mehr konfiguriert zu werden: Es ist nicht mehr nötig, feste interne IP-Adressen für das Forwarding der Ports anzugeben, da diese IP-Adresse durch den ausgehenden Datenverkehr auf dem Trigger-Port ermittelt werden kann.
Wird Port Triggering auf einen Port gelegt, auf dem VoIP betrieben wird, ist es möglich, dass der VoIP-Dienst nur noch erreichbar ist, wenn vorher ein ausgehender Anruf getätigt wurde.
  • Sobald der Port wieder geschlossen wird (siehe oben) ist es wieder nicht möglich, eingehende Anrufe zu empfangen.
  • Einige VoIP-Endgeräte unterstützen daher die Aufrechterhaltung der Weiterleitung durch den Versand von Pseudo-Datenpaketen.



Anhang

Siehe auch


Sicherheit

Dokumentation

RFC
Man-Page
Info-Pages

Links

Projekt
Weblinks