Network Address Translation: Unterschied zwischen den Versionen
Markierung: Ersetzt |
|||
Zeile 2: | Zeile 2: | ||
== Beschreibung == | == Beschreibung == | ||
* In Rechnernetzen der Sammelbegriff bei Ä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. | |||
=== NAT-Typen === | |||
* NAT wird in Source-NAT (SNAT; dt.: „''Quellen-NAT''“) und Destination-NAT(DNAT; dt.: „''Ziel-NAT''“) unterschieden. | |||
* Beim Source-NAT wird die Adresse des verbindungsaufbauenden Computers (Quelle) umgeschrieben. | |||
* Beim Destination-NAT wird die Adresse des angesprochenen Computers (Ziel) umgeschrieben. | |||
== Verwendung von NAT == | |||
=== Verwendung von Source-NAT === | |||
* Source-NAT findet Anwendung aufgrund der Knappheit öffentlicher IPv4-Adressen. | |||
* Eine spezielle Form der SNAT wird auch '''Masquerading''' bzw. '''Masquerade'''[https://de.wikipedia.org/wiki/Port_Address_Translation] oder | |||
* '''Port and Address Translation''' (PAT) oder '''Network Address Port Translation''' (NAPT) genannt. | |||
* Wird vor allem bei Einwahlverbindungen [http://www.hh.schule.de/ak/nt/einwahlv.htm] 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. | |||
=== Verwendung von 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(s. Abgrenzung von DNAT auch NAT-Traversal bzw. NAT-T). | |||
== Funktionsweise == | |||
=== NAT-Router, NAT-Session und NAT-Table === | |||
[[Datei:SNAT.png|frame|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. | |||
{| cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #F9F9F9; border-collapse: collapse; font-size: 95%;" | |||
|align="center" colspan="2" style="background: white;"|lokales Netz (Local Area Network/LAN) | |||
|style="background: white;"| | |||
|align="center" colspan="2" style="background: white;"|öffentliches Netz (Wide Area Network/WAN) | |||
|- | |||
! width="20%" align="center" style="border:1px #AAAAAA solid;"|Quelle | |||
! width="20%" align="center" style="border:1px #AAAAAA solid;"|Ziel | |||
! rowspan="4" align="center" style="background:white;"|Router<br />===== = =====><br />NAT | |||
! width="20%" align="center" style="border:1px #AAAAAA solid;"|Quelle | |||
! width="20%" align="center" style="border:1px #AAAAAA solid;"|Ziel | |||
|- | |||
|align="center" style="border: 1px #aaa solid;"|'''192.168.0.2:49701''' | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:80 | |||
|align="center" style="border: 1px #aaa solid;"|'''205.0.0.2:49701''' | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:80 | |||
|- | |||
|align="center" style="border: 1px #aaa solid;"|'''192.168.0.3:50387''' | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:80 | |||
|align="center" style="border: 1px #aaa solid;"|'''205.0.0.2:50387''' | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:80 | |||
|- | |||
|align="center" style="border: 1px #aaa solid;"|'''192.168.0.4:49152''' | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:23 | |||
|align="center" style="border: 1px #aaa solid;"|'''205.0.0.2:49152''' | |||
|align="center" style="border: 1px #aaa solid;"|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==== | |||
* 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''. | |||
* Dann ermittelt die Station per Address Resolution Protocol (ARP) dessen MAC-Adresse und baut ein Paket wie folgt zusammen: | |||
**Es enthält: | |||
# Als Ziel-MAC-Adresse die MAC-Adresse des ''Source-NAT-Routers''. | |||
# Die Ziel-IP-Adresse des Empfängers (hier 170.0.0.1). | |||
# Die Ziel-Portadresse für den Server. | |||
# Die MAC- und IP-Adresse des Absenders (hier 192.168.0.4). | |||
# Einen Absenderport (irgendeinen freien Port (high dynamic Port)) für die gerade anfragende Sitzung. | |||
# 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==== | |||
* Diese Zuordnung der ursprünglichen Absenderadresse und des Ports (192.168.0.4:49152) zum jetzt enthaltenen Adress-Tupel[https://de.ryte.com/wiki/Tupel](205.0.0.2:49152) wird im Router solange gespeichert, bis die Sitzung abläuft oder beendet wird. | |||
** '''Durch NAT wird das Paket auf Schicht 3 also wesentlich verändert.''' | |||
* 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. | |||
{| cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #F9F9F9; border-collapse: collapse; font-size: 95%;" | |||
|align="center" colspan="2" style="background: white;"|öffentliches Netz (WAN) | |||
|style="background: white;"| | |||
|align="center" colspan="2" style="background: white;"|lokales Netz (LAN) | |||
|- | |||
! width="20%" align="center" style="border:1px #AAAAAA solid;"|Quelle | |||
! width="20%" align="center" style="border:1px #AAAAAA solid;"|Ziel | |||
! rowspan="4" align="center" style="background:white;"| Router<br />===== = =====><br />NAT | |||
! width="20%" align="center" style="border:1px #AAAAAA solid;"|Quelle | |||
! width="20%" align="center" style="border:1px #AAAAAA solid;"|Ziel | |||
|- | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:1001 | |||
|align="center" style="border: 1px #aaa solid;"|'''171.4.2.1:80''' | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:1001 | |||
|align="center" style="border: 1px #aaa solid;"|'''192.168.0.2:80''' | |||
|- | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:1001 | |||
|align="center" style="border: 1px #aaa solid;"|'''171.4.2.1:22''' | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:1001 | |||
|align="center" style="border: 1px #aaa solid;"|'''192.168.0.3:22''' | |||
|- | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:1001 | |||
|align="center" style="border: 1px #aaa solid;"|'''171.4.2.1:81''' | |||
|align="center" style="border: 1px #aaa solid;"|170.0.0.1:1001 | |||
|align="center" style="border: 1px #aaa solid;"|'''192.168.0.3:81''' | |||
|} | |||
== Kategorisierung == | |||
RFC 3489, der das Protokoll '''STUN''' zur Traversierung von NAT-Gateways beschreibt, ordnet diese in vier verschiedene Klassen ein: | |||
===Full Cone NAT === | |||
[[Datei:Full Cone NAT.svg|500px]] | |||
* 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=== | |||
[[Datei:Restricted Cone NAT.svg|500px]] | |||
*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 === | |||
[[Datei:Port Restricted Cone NAT.svg|500px]] | |||
* 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 === | |||
[[Datei:Symmetric NAT.svg|500px]] | |||
* 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. | |||
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. | |||
== 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 Protoko | |||
* Ein Problem an NAT ist, dass die sall-Headern, was einem Man-in-the-middle-Angriff (MITM-Angriff[https://de.wikipedia.org/wiki/Man-in-the-Middle-Angriff#]) ähnelt, haben insbesondere ältere Protokolle und Verschlüsselungsverfahren auf Netzwerk- und Transportebene durch diesen Designbruch Probleme. | |||
* Ebenso leiden insbesondere 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-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)[https://www.ip-insider.de/was-ist-nat-traversal-nat-t-a-921138/]. | |||
* '''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==== | |||
* 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. | |||
* '''Es gibt keine universell anwendbarenTechniken''' | |||
* 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'''[https://de.wikipedia.org/wiki/IPsec#Encapsulating_Security_Payload_(ESP)]. | |||
* 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'''[https://de.wikipedia.org/wiki/Session_Traversal_Utilities_for_NAT], das eine hohe Bedeutung bei VoIP hat. | |||
== Installation == | == Installation == | ||
== Anwendungen == | == Anwendungen == |
Version vom 4. Dezember 2022, 12:11 Uhr
Network Address Translation, Netzwerkadressübersetzung (NAT) ist eine Technik zur Übersetzung von IP-Adressen
Beschreibung
- In Rechnernetzen der Sammelbegriff bei Ä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.
NAT-Typen
- NAT wird in Source-NAT (SNAT; dt.: „Quellen-NAT“) und Destination-NAT(DNAT; dt.: „Ziel-NAT“) unterschieden.
- Beim Source-NAT wird die Adresse des verbindungsaufbauenden Computers (Quelle) umgeschrieben.
- Beim Destination-NAT wird die Adresse des angesprochenen Computers (Ziel) umgeschrieben.
Verwendung von NAT
Verwendung von Source-NAT
- Source-NAT findet Anwendung aufgrund der Knappheit öffentlicher IPv4-Adressen.
- Eine spezielle Form der SNAT wird auch Masquerading bzw. Masquerade[1] oder
- 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.
Verwendung von 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(s. Abgrenzung von DNAT auch NAT-Traversal bzw. NAT-T).
Funktionsweise
NAT-Router, NAT-Session und NAT-Table
- 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
- 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.
- Dann ermittelt die Station per Address Resolution Protocol (ARP) dessen MAC-Adresse und baut ein Paket wie folgt zusammen:
- Es enthält:
- Als Ziel-MAC-Adresse die MAC-Adresse des Source-NAT-Routers.
- Die Ziel-IP-Adresse des Empfängers (hier 170.0.0.1).
- Die Ziel-Portadresse für den Server.
- Die MAC- und IP-Adresse des Absenders (hier 192.168.0.4).
- Einen Absenderport (irgendeinen freien Port (high dynamic Port)) für die gerade anfragende Sitzung.
- 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
- 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.
- Durch NAT wird das Paket auf Schicht 3 also wesentlich verändert.
- 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 |
Kategorisierung
RFC 3489, der das Protokoll STUN zur Traversierung von NAT-Gateways beschreibt, ordnet diese in vier verschiedene Klassen ein:
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.
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.
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 Protoko
- Ein Problem an NAT ist, dass die sall-Headern, was einem Man-in-the-middle-Angriff (MITM-Angriff[4]) ähnelt, haben insbesondere ältere Protokolle und Verschlüsselungsverfahren auf Netzwerk- und Transportebene durch diesen Designbruch Probleme.
- Ebenso leiden insbesondere 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-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)[5].
- 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
- 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.
- Es gibt keine universell anwendbarenTechniken
- 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[6].
- 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[7], das eine hohe Bedeutung bei VoIP hat.
Installation
Anwendungen
Fehlerbehebung
Syntax
Optionen
Parameter
Umgebungsvariablen
Exit-Status
Konfiguration
Dateien
Sicherheit
Dokumentation
RFC
Man-Pages
Info-Pages
Siehe auch
Links
Projekt-Homepage
Weblinks
- https://de.wikipedia.org/wiki/Port_Address_Translation
- http://www.hh.schule.de/ak/nt/einwahlv.htm
- https://de.ryte.com/wiki/Tupel
- https://de.wikipedia.org/wiki/Man-in-the-Middle-Angriff#
- https://www.ip-insider.de/was-ist-nat-traversal-nat-t-a-921138/
- https://de.wikipedia.org/wiki/IPsec#Encapsulating_Security_Payload_(ESP)
- https://de.wikipedia.org/wiki/Session_Traversal_Utilities_for_NAT
- https://de.wikipedia.org/wiki/Netzwerkadressübersetzung
Einzelnachweise
Testfragen
Testfrage 1
Antwort1
Testfrage 2
Antwort2
Testfrage 3
Antwort3
Testfrage 4
Antwort4
Testfrage 5
Antwort5