NAT, NAT-Router und PAT

aus HaBo WiKi, der freien Wissensdatenbank von http://www.hackerboard.de
(Weitergeleitet von NAT)
Wechseln zu: Navigation, Suche

NAT (Network Adress Translation) ist ein technisches Verfahren, welches eine IP-Adresse eines Netzwerkpakets durch eine andere ersetzt, während das Paket das NAT-Gerät passiert. Auf diese Weise ist es möglich, einen Teilnehmer aus seinem eigenen Netzwerk heraus mit einem weiteren Netzwerk zu verbinden, ohne dass dazu die (interne) IP-Adresse des Teilnehmers mit dem Adressbereich des anderen (externen) Netzes kompatibel sein muss. Auf dem Weg eines Netzwerkpakets zum externen Netz kann NAT, auch „basic NAT“ und „static NAT“ genannt, lediglich eine einzige interne IP-Adresse in eine gültige externe IP-Adresse umwandeln. Umgekehrt können Pakete, die an die externe IP-Adresse des NAT-Gerätes adressiert sind, auch nur an einen einzigen internen Teilnehmer durchgereicht werden. Man spricht deshalb von einer 1:1 Übersetzung.

PAT (Port and Address Translation) erweitert das NAT-Konzept um eine dynamische Portumsetzung, wodurch ein komplettes privates Netz über eine einzige öffentliche IP-Adresse mit dem externen Netz (z.B. Internet) verbunden werden kann. Man spricht von einer n:1 Übersetzung. Im Unterschied zum ursprünglichen statischen NAT wird dieses Verfahren je nach Implementierung auch „NAPT“, „dynamic NAT“, „IP-“ oder „NAT-Masquerading“ bzw. „hiding NAT“ genannt.

Unhandlich lange Begriffe wie ‚NAT-Masquerading’ werden im Volksmund gerne auf ‚NAT’ verkürzt, was mitunter zu Missverständnissen führt. Hinzu kommen verallgemeinernde Begriffe der Hersteller, wie NAT-Router, die zum Teil zwar NAT realisieren, gegenwärtig aber meist das PAT-Konzept auf einem Router umsetzen. Allgemein lässt sich feststellen, dass heute meist PAT gemeint ist, wenn man von NAT spricht.

Im Folgenden versucht der Artikel auf eine leicht verständliche Weise zu erklären, wie NAT und PAT funktioniert. Es wird auch erklärt, worin sich diese Art der Adressumsetzung von der eines Proxys unterschiedet und wo es Überschneidungen zwischen NAT und einen circuit level Proxy gibt.

Inhaltsverzeichnis


Leicht erklärt (der Weg zu NAT bzw. PAT)

Die Herausforderung mit den inkompatiblen Adressen

Wenn man seinen eignen Rechner aus dem privaten Netzwerk auch für das Internet zugänglich machen möchte, gilt es zunächst folgendes Problem zu lösen: Die IP-Adressen nebst Subnetzmaske sind auf die Bedürfnisse in dem privaten Netzwerk ausgelegt und deshalb nicht für eine direkte Verbindung mit dem Internet gedacht und geeignet. So ist der Betreiber des privaten Netzwerks der alleinige Gebieter über die Infrastruktur in seinem Netz. Er legt die Zuordnung der Adressen fest und muss selber dafür Sorge tragen, dass es hier keine Konflikte gibt. Das Internet ist jedoch ein vollkommen anderes Netz, mit anderen Regeln und unter fremder Verwaltung. Eine direkte Integration des kompletten privaten Netzwerks in das Internet ist nicht möglich, solange die Infrastrukturen und Adressen nicht zueinander kompatibel sind.

Der Multi-Homing-Host

Eine mögliche Lösung dafür bietet der Einbau einer zweiten Netzwerkkarte in den Computer, der mit dem Internet verbunden werden soll. Diese wird dann z.B. an ein DSL-Modem angeschlossen. Über das Modem holt sich die Karte von dem Internetprovider eine freie Internet-Adresse, damit Pakete aus dem Internet korrekt an den Rechner adressiert werden können.

Der Rechner ist nun ein Multi-Homing-Host, welcher zwei IP-Adressen verwaltet und in zwei Netzwerken zuhause ist. Über die zweite Netzwerkkarte kann er direkt auf das Internet zugreifen und dort auch Dienste bereitstellen (er kann selbst als Internetserver fungieren). Über die andere Netzwerkkarte ist der Rechner wie gewohnt aus dem internen Netz erreichbar.

Bildlich vergleichen lässt sich dieser Computer mit einem Haus, welches sich zwischen zwei Straßen befindet und auf beiden Straßenseiten eine Eingangstür hat. Das Haus selbst hat somit zwei Adressen: Eine in Straße 1 und eine weitere in Straße 2, wodurch es von beiden Straßen aus direkt erreicht werden kann.

NAT

Ein Manko des Multi-Homing-Host ist es, dass sich der Internetanschluss in unmittelbarer Nähe des Rechners befinden muss, der mit dem Internet verbunden wird. Stellt der Rechner Internetdienste bereit, so ist es sehr aufwendig, bei einem Ausfall des Rechners ersatzweise einen anderen Rechner einzubinden, wenn sich dieser in einem anderen Raum befindet.

Das NAT-Konzept sollte helfen, dieses Manko zu überwinden: Statt den Rechner über eine zweite Netzwerkkarte direkt an das Internet anzuschließen, wird stellvertretend für ihn ein spezielles NAT-Gerät mit dem Internet und dem privaten Netzwerk verbunden.

Auf das vorherige Beispiel bezogen, kann man das NAT-Gerät als Durchgangsgebäude verstehen, welches auf beiden Straßenseiten eine Tür hat. Dieses Durchgangsgebäude funktioniert wie ein automatisiertes Postfach, welches alle dort eingehenden Pakete aus Straße 2 an den im Postfach festgelegten Empfänger aus Straße 1 durchreicht. Dafür ändert das NAT-Gerät die Adresse der Pakete dahingehend, dass nun als Adressat der interne Computer zu erkennen ist, ehe er die Pakete in das interne Netz weiterreicht (man spricht von „Destination NAT“ / DNAT).

Schickt hingegen der Computer ein Paket durch das NAT-Gerät hindurch in das Internet, so versieht das NAT-Gerät das Paket automatisch mit seiner eigenen Absenderadresse, damit die Antwortpakete auch wieder an das NAT-Gerät adressiert werden (hier spricht man von „Source NAT“ / SNAT). Auf diese Weise wird die Absenderadresse des Rechners auf dem Weg zum Internet in eine öffentliche (internetkompatible) Adresse übersetzt.

PAT

Das PAT-Konzept erweitert das NAT-Konzept um eine dynamische Portumsetzung, mit dem Ziel, über ein einziges PAT-Gerät mehreren Rechnern des internen (privaten) Netzwerks gleichzeitig den Zugang zum Internet zu ermöglichen.

Für eine vereinfachte Analogie scheint es zunächst nützlich zu sein, sich die Kommunikationspartner ebenfalls als adressierbare Gebäude vorzustellen: An den Hauseingängen existieren Briefkästen mit Namensschildern. Auf dem internen Computer und dem Internetserver steht das Namensschild (der Port) für die Anwendung, die das Paket erhalten soll. Auf dem internen Computer startet also eine Anwendung, die eine Netzwerkanfrage an den Internetserver:PortX stellt und ihm gleichzeitig mitteilt, dass die Antwort bitte zurück zum PC_aus_dem_internen_Netz:PortY (dem Rückgabeport der Anwendung) zu schicken ist, damit die Anwendung die Antwort auch erhält.

Bei der ausgehenden Verbindung übersetzt das PAT-Gerät genau wie bei NAT die Absenderadresse in seine eigene Adresse. Zusätzlich aber weist es der Verbindung einen anderen Rückgabeport zu und trägt die ursprünglichen Daten in eine Tabelle ein. Die neue Absenderadresse für die Verbindung PC_aus_dem_internen_Netz:PortY lautet nun PAT-Gerät:PortA. Eine andere Verbindung erhält z.B. die Absenderadresse PAT-Gerät:PortB, etc., ehe die Netzwerkpakete in das Internet geleitet werden.

Da die Antwortpakete je nach Verbindung nun auf dem PAT-Gerät:PortA bzw. PortB, etc. eintreffen, kann das Gerät anhand seiner Tabelle schnell die ursprünglichen Adressdaten ermitteln und die Adresse in den Netzwerkpaketen entsprechend ändern, ehe sie in das interne Netz geleitet werden. So erreichen die Antwortpakete die richtigen Rechner auf deren korrekten Rückgabeports (PAT-Gerät:PortA geht an PC_aus_dem_internen_Netz:PortY, etc.).

Durch die dynamische Portumsetzung ist es möglich, ein komplettes privates Netz über eine einzige offizielle IP-Adresse mit dem Internet zu verbinden. Aufgrund seiner Arbeitsweise macht PAT aber noch mehr als das: Da durch PAT lediglich einzelne Ports bei einer internen Verbindungsanforderung dynamisch mit einem internen Rechner verbunden werden, wird hier eine Filterung der Pakete realisiert. Eine Anfrage aus dem Internet an „PAT-Gerät:PortXYZ“ blockiert das PAT-Gerät, solange keine Port-Forwarding-Regel darauf existiert. Denn je nach Implementierung sind selbst die dynamisch geöffneten Ports nur von der Adresse aus ansprechbar, an die die Verbindung gerichtet ist, wobei alle anderen Ports gesperrt bleiben (wo sollten sie auch hinzeigen?).

Vermutlich aufgrund der richtigen Erkenntnis, dass das ursprüngliche statische NAT kein Sicherheitsfeature darstellt, hält sich im Internet hartnäckig das Gerücht, dass NAT generell kein Sicherheitsfeature ist. Das ist bei PAT - also bei „dynamic NAT“, „NAT-Masquerading“ bzw. „hiding NAT“ - allerdings nicht richtig. Da die Ports nach dynamischen Regeln blockiert werden, realisiert PAT sogar eine Filterung, bei der keine Trojanerports mehr von Hand gesperrt werden müssen. Wie ein solches Gerät eine gefilterte Trennung zwischen dem internen (privaten) und dem externen (Internet) Netz realisiert, wird im Artikel zur Firewall genauer erklärt. Daran angelehnt erklärt der Artikel zum DSL-Router, ob es sich bei diesen speziellen PAT-Geräten um eine Firewall handelt und worin die Schwachstellen dieser Geräte liegen.

Technische Details

NAT

Die Kommunikation beim „Source NAT“ / SNAT:

[interner Rechner: Netzwerkpaket an AdresseDesInternetservers:PortY senden
(Absender=AdresseDesInternenRechners:PortX)]-- internes Netz -->[NAT-Gerät: Verändern der Absenderadresse in 
AdresseDesNAT-Gerätes:PortX (die Zieladresse bleibt unverändert) & weiterleiten ins Internet]-- Internet  
-->[Internetserver: das Paket erreicht das Programm, welches an PortY lauscht; eine mögliche Antwort 
schickt er zurück zum Absender – also zum NAT-Gerät:PortX]

Die Kommunikation beim „Destionation NAT“ / DNAT:

[Internetserver: Netzwerkpaket an AdresseDesNAT-Gerätes:PortX senden  
(Absender=AdresseDesInternetservers:PortY)]-- Internet -->[NAT-Gerät: Verändern der Adresse in 
AdresseDesInternenRechners:PortX (Absender bleibt unverändert) & weiterleiten ins interne Netz]-- internes 
Netz -->[interner Rechner: das Paket erreicht das Programm, welches an PortX lauscht; als Absender wird der 
Internetserver erkannt]

NAT operiert auf der OSI-Schicht 3 (Vermittlungschicht: Adress-Ebene IP, ICMP).

Warum (static-) NAT kein Sicherheitsfeature darstellt

Bei einem Multi-Homing-Host ist eine mögliche Attacke aus dem Internet direkt und ungefiltert an den daran angeschlossenen Netzwerkadapter des Rechners gerichtet. Wird der Rechner erfolgreich eingenommen, so ist nun ein ungehinderter Zugriff auf das interne (private) Netzwerk möglich.

Bei dem NAT-Verfahren richtet sich die mögliche Attacke zwar an die Adresse des NAT-Gerätes, welches allerdings sämtliche Anfragen 1:1 ungefiltert an den internen Rechner weiterleitet. Daher ändert NAT an diesem Zustand nichts; der externe Zugriff auf sämtliche Netzwerkdienste des internen Rechners wird durch NAT nicht eingeschränkt, weshalb er auf deren Ports angreifbar bleibt. NAT ist also kein Sicherheitsfeature. Allerdings gibt es Firewalls, die auf ein NAT-Gerät aufsetzen und dadurch eine Filterung realisieren.

Während es bei einem Multi-Homing-Host möglich ist, benötigte Netzwerkdienste lediglich an den Netzwerkadapter des internen Netzes zu binden (wodurch sie aus dem externen Netz heraus nicht erreichbar sind), unterstützt das reine statische NAT-Verfahren (ohne Paketfilter) eine solche Möglichkeit nicht.

PAT

Um mehrere Rechner über ein einziges PAT-Gerät mit den Internet zu verbinden, müssen die am Gerät eingehenden Pakete den jeweiligen Internetsitzungen zugeordnet werden können. Aus dem internen Netz heraus stellt dies kein Problem dar, da alle Netzwerkpakete eine eindeutige Absenderadresse aufweisen. Verwenden aber zwei interne Rechner denselben Rückgabeport und haben denselben Internetserver als Ziel, so ist eine eindeutige Zuordnung der Sitzung nicht mehr möglich, wenn die Pakete aus dem Internet heraus das Gerät erreichen (die Pakete sind an denselben Port des Gerätes adressiert und weisen dieselbe Absenderadresse – den Internetserver – auf, weshalb sie nicht mehr auseinander gehalten werden können).

Dieses Problem wird gelöst, indem allen aus dem internen Netz angeforderten Internetsitzungen dynamisch ein anderer Port des PAT-Gerätes zugewiesen wird. PAT übersetzt im Unterschied zu NAT also nicht nur die IP-Adresse des Absenders, sondern auch den Port, ehe die Pakete in das Internet geleitet werden.

[interner Rechner1: Netzwerkpaket an AdresseDesInternetservers:PortY senden (Absender=AdresseDesInternenRechners1:PortX)]-- internes Netz -->[PAT-Gerät: Verändern der Absenderadresse in AdresseDesPAT-Gerätes:PortA (die Zieladresse bleibt unverändert) & weiterleiten ins Internet]-- Internet -->[Internetserver: das Paket erreicht das Programm, welches an PortY lauscht; eine mögliche Antwort schickt er zurück zum Absender – also zum PAT-Gerät:PortA]
[interner Rechner2: Netzwerkpaket an AdresseDesInternetservers:PortY senden (Absender=AdresseDesInternenRechners2:PortX)]-- internes Netz -->[PAT-Gerät: Verändern der Absenderadresse in AdresseDesPAT-Gerätes:PortB (die Zieladresse bleibt unverändert) & weiterleiten ins Internet]-- Internet -->[Internetserver: das Paket erreicht das Programm, welches an PortY lauscht; eine mögliche Antwort schickt er zurück zum Absender – also zum PAT-Gerät:PortB]

Auf diese Weise können bereits anhand der verwendeten externen Ports des PAT-Gerätes die zur Sitzung gehörenden Rechner aus dem internen Netz zugeordnet werden (in diesem Beispiel ist der externe PortA=InternerRechner1:PortX; externer PortB=InternerRechner2:PortX). PAT wandelt nun die Adresse und den Port wieder zurück in seine ursprünglichen Werte und reicht die Netzwerkpakete so an den internen Rechner weiter:

[Internetserver: Netzwerkpaket an AdresseDesPAT-Gerätes:PortA senden (Absender=AdresseDesInternetservers:PortY)]-- Internet -->[PAT-Gerät: Verändern der Adresse in AdresseDesInternenRechners1:PortX (Absender bleibt unverändert) & weiterleiten ins interne Netz]-- internes Netz -->[interner Rechner1: das Paket erreicht das Programm, welches an PortX lauscht; als Absender wird der Internetserver erkannt]
[Internetserver: Netzwerkpaket an AdresseDesPAT-Gerätes:PortB senden (Absender=AdresseDesInternetservers:PortY)]-- Internet -->[PAT-Gerät: Verändern der Adresse in AdresseDesInternenRechners2:PortX (Absender bleibt unverändert) & weiterleiten ins interne Netz]-- internes Netz -->[interner Rechner2: das Paket erreicht das Programm, welches an PortX lauscht; als Absender wird der Internetserver erkannt]

Während ein PAT-Gerät die Umsetzung der IP-Adresse weiterhin auf der OSI-Schicht 3 vornimmt, wird die zusätzliche Portumsetzung auf der OSI-Schicht 4 (Transportschicht: Port-Ebene TCP, UDP) realisiert.

NAT-Router

NAT-Router setzen NAT oder PAT auf einem Router um. Als Beispiel für einen üblichen NAT-Router sei der DSL-Router genannt, der das PAT-Konzept umsetzt, während er das private Netz mit dem Internet verbindet. Für das interne Netz bieten DSL-Router grundlegende Router-Funktionalitäten (oft sogar in Form eines Layer-3-Switches, der den Router beinhaltet). Dadurch ist es möglich, den DSL-Router auf den internen Geräten als „default Gateway“ zu konfigurieren, wodurch er zwischen den Subnetzen des internen Netzes genauso vermitteln kann, wie zwischen dem internen und externen Netz.

Proxy

Ohne sich dabei auf ein bestimmtes Verfahren festzulegen, umschließt im Folgenden der Begriff ‚NAT’ allgemein sowohl NAT als auch PAT.

Proxies setzen ebenfalls Adressen um, während das Netzwerkpaket den Proxy passiert. Jedoch verwenden die meisten dafür kein NAT. Vielmehr nimmt der Proxy die Anfrage der einen Seite als Kommunikationspartner entgegen und baut eine eigene Verbindung zur anderen Seite auf. Als aktive Kommunikationspartner operieren diese Proxies auf der OSI-Schicht 7 und sind in der Lage, eine weit reichende Analyse und Anpassungen der Paketinhalte vorzunehmen, ehe sie die Daten an die andere Seite übermitteln. Ein solcher Proxy terminiert somit die Verbindungen auf beiden Seiten (es handelt sich also um zwei eigenständige Verbindungen), statt die Pakete einfach wie ein NAT-Gerät weiterzuleiten.

Dagegen gibt es bei generischen Proxies durchaus Überschneidungen zu NAT: Der circuit level Proxy, die erste Form eines Proxys überhaupt, realisiert die Adressumsetzung als NAT-Gerät auf der OSI-Schicht 3. Parallel dazu bietet er eine Adressfilterung an, die ebenfalls auf der dritten OSI-Schicht angesiedelt ist, wobei er für die Filterung von Ports zudem auf der OSI-Schicht 4 operiert. Solche (Layer 3 + 4) Proxies reichen die Pakete schlicht durch, ohne die Verbindungen selbst zu terminieren. Von diesem Sonderfall einmal abgesehen, nimmt NAT jedoch eine zu vernachlässigende und daher kaum beachtete Rolle unter den Proxies ein.

NAT als ehemaliger „Proxy-Modus“ für Firewalls

Nach Aufkommen der ersten Firewalls bezeichnete man den Modus, in dem sich eine Firewall transparent (nahezu unsichtbar) zwischen beide Netzwerke legt, als „Router-Modus“. Stellte sich die Firewall hingegen für beide Kommunikationspartner sichtbar zwischen das Quell- und Zielsystem, so nannte man dies den „Proxy-Modus“, wobei man sich damit zunächst auf „circuit level Proxies“ bezog (nicht zu verwechseln mit dem wesentlich jüngeren Begriff ‚Proxyfirewall’, der sich auf eine Application Level Firewall bezieht). Demnach würden sämtliche NAT-Geräte zu den Proxies gehören, wobei es einen NAT-Router nicht geben dürfte (dies wäre ein Widerspruch in sich).

Allerdings hat sich diese Art der Unterteilung allgemein nicht durchgesetzt. Heute gehört NAT eindeutig zu den gängigen Eigenschaften eines Routers (es gibt kaum noch Router auf dem Markt, die nicht auch NAT beherrschen). Dagegen zeichnet sich ein Proxy eher durch die anfangs beschriebenen Arbeitsweise aus.

Computer Forum
Computer Forum
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge