Zum Hauptinhalt springen

11. NAT

PrÀsentation

Network Address Translation​

NAT (Network Address Translation) ist ein Verfahren, dass in IP-Routern eingesetzt wird, die lokale Netzwerke mit dem Internet verbinden. Weil Internet-ZugĂ€nge in der Regel nur ĂŒber eine einzige öffentliche und damit routbare IPv4-Adresse verfĂŒgen, mĂŒssen sich alle anderen Hosts im lokalen Netzwerk mit privaten IPv4-Adressen begnĂŒgen. Private IP-Adressen dĂŒrfen zwar mehrfach verwendet werden, aber besitzen in öffentlichen Netzen keine GĂŒltigkeit. Hosts mit einer privaten IPv4-Adresse können somit nicht mit Hosts ausserhalb des lokalen Netzwerks kommunizieren.

Damit trotzdem alle Computer mit privater IPv4-Adresse Zugang zum Internet bekommen können, muss der Internet-Zugangs-Router in allen ausgehenden Datenpaketen die private IPv4-Adresse der lokalen Hosts durch seine eigene, öffentliche IPv4-Adresse ersetzen. Damit die eingehenden Datenpakete dem lokalen Host zugeordnet werden können, speichert der Router zusÀtzliche die Port-Nummern der TCP-Verbindungen in einer sogenannten NAT-Tabelle.

In Verbindung mit den privaten IPv4-Adressen wird NAT eingesetzt, damit ĂŒber die Netzgrenzen hinweg Daten ausgetauscht, E-Mails verschickt und empfangen, sowie auf das World Wide Web (WWW) zugegriffen werden können. NAT ist allerdings nur eine Notlösung, um die Adressknappheit von IPv4 zu umgehen. Um die damit einhergehenden Probleme zu lösen muss langfristig auf ein Internet-Protokoll mit einem grösseren Adressraum umgestellt werden. IPv6 ist ein solches Protokoll.

Warum NAT?​

Die ersten IPv4-Netze waren anfangs eigenstĂ€ndige Netz ohne Verbindung nach aussen. Hier begnĂŒgte man sich mit IPv4-Adressen aus den privaten Adressbereichen. Parallel dazu kam es bereits Ende der 1990er Jahre zu EngpĂ€ssen bei öffentlichen IPv4-Adressen. Die steigende Anzahl der EinwahlzugĂ€nge ĂŒber das Telefonnetz mussten mit IPv4-Adressen versorgt werden. Bis heute bekommt ein Internet-Anschluss nur eine IPv4-Adresse fĂŒr ein GerĂ€t. Damals war es undenkbar, dass an einem Internet-Anschluss ein ganzes Heimnetzwerk betrieben wird. Wenn ein Haushalt einen PC per Modem an das Telefonnetz angeschlossen und sich ins Internet eingewĂ€hlt hat, dann war das schon etwas besonderes.

Heute betreibt jeder Haushalt mit Internet-Zugang sein eigenes lokales Netzwerk, in dem jedes EndgerÀt eine IPv4-Adresse braucht. In solchen FÀllen bekommen die GerÀte IPv4-Adressen aus den privaten AdressrÀumen 10.0.0.0/8, 192.168.0.0/16 oder 172.16.0.0/12 zugeteilt, um die wenigen öffentlichen IPv4-Adressen einzusparen.

Allerdings sind private IPv4-Adressen nicht routbar. Das heisst, sie sind aus dem Internet nicht erreichbar und es kann keine direkte Verbindung zu GerĂ€ten hinter einem NAT aufgebaut werden. Die Andere Richtung, aus dem privaten Netzwerk ins öffentliche Netzwerk, ist jedoch dank einem Austausch der privaten IP-Adresse mit der öffentlichen IP-Adresse des NAT's möglich. Diese Zuordnung wird in der NAT-Tabelle gespeichert, so dass beim Erhalt der Antwort die Öffentliche Adresse wieder durch die Private ausgetauscht werden kann.

Funktionsweise NAT​

Innerhalb des lokalen Netzwerks hat der Router die IP-Adresse 192.168.0.1, die fĂŒr den LAN-Port gilt und ĂŒber die der Router im LAN direkt erreichbar und konfiguriert ist. Gleichzeitig handelt es sich dabei um die Adresse des Standard-Gateways und zum Beispiel des lokalen DNS-Servers. Der Router ist also das Standard-Gateway ĂŒber das alle Verbindung laufen. Mit seiner öffentlichen IP-Adresse tritt der Router als Stellvertreter fĂŒr alle Stationen seines lokalen Netzwerks (LAN) auf.

Wenn ein Datenpaket mit einer Ziel-Adresse ausserhalb des lokalen Netzwerks adressiert ist, dann ersetzt der Router die Quell-Adresse durch seine öffentliche IP-Adresse. Die Port-Nummer (TCP oder UDP) wird durch eine andere Port-Nummer ersetzt. Um spĂ€ter die Antwortpakete der richtigen Station zuordnen zu können fĂŒhrt der Router eine Tabelle mit den geĂ€nderten Quell-Adressen und den dazugehörigen Port-Nummern. Wenn also Pakete mit einer bestimmten Port-Nummer zurĂŒckkommen, dann ersetzt NAT die Ziel-Adresse durch die richtige Adresse und Port-Nummer.

In der NAT-Tabelle hat jeder Eintrag auch eine Zeitmarkierung. Nach einer bestimmten Zeit der InaktivitÀt wird der betreffende Eintrag gelöscht. Auf diese Weise wird sichergestellt, dass keine Ports offen bleiben. Weil dieses Verfahren die Absender-Adresse (Source) jedes ausgehenden Datenpakets Àndert, nennt man dieses Verfahren Source NAT (SNAT). SNAT bezeichnet man in der Regel einfach als NAT.

Ablauf​

WAN

Wide Area Network

LAN

Local Area Network

  1. Der Client schickt seine Datenpakete mit der IP-Adresse 192.168.0.2 und dem TCP-Port 10101 an sein Standard-Gateway, bei dem es sich um einen NAT-Router handelt.

  2. Der NAT-Router tauscht IP-Adresse (LAN-Adresse) und TCP-Port (LAN-Port) aus und speichert beides mit der getauschten Port-Nummer (WAN-Port) in der NAT-Tabelle.

  3. Der Router leitet das Datenpaket mit der WAN-Adresse 220.0.0.1 und der neuen TCP-Port 20202 ins Internet weiter.

  4. Der EmpfĂ€nger (Server) verarbeitet das Datenpaket und schickt seine Antwort zurĂŒck.

  5. Der NAT-Router stellt nun anhand der Port-Nummer 20202 (WAN-Port) fest, fĂŒr welche IP-Adresse (LAN-Adresse) das Paket im lokalen Netz gedacht ist.

  6. Er tauscht die IP-Adresse und die Port-Nummer wieder aus und leitet das Datenpaket ins lokale Netz weiter, wo es der Client entgegennimmt.

⭐ D-NAT & Port-Forwarding

DNAT - Destination Network Address Translation (Port-Forwarding)​

NAT setzt dynamisch eine öffentliche IP-Adresse auf mehrere private IP-Adressen um. Jede ausgehende Verbindung wird mit IP-Adresse und Portnummer festgehalten. Anhand der Portnummer kann NAT eingehende Datenpakete einer lokalen Station zuordnen. Diese Zuordnung ist allerdings nur fĂŒr kurze Zeit gĂŒltig. Das bedeutet, dass Verbindungen nur aus dem lokalen Netzwerk ins öffentliche Netz aufgebaut werden können, nicht umgekehrt. Wenn man doch einen Host innerhalb des lokalen Netzwerks dauerhaft aus dem öffentlichen Netz erreichbar machen will, dann ist das nur ĂŒber einen Umweg möglich. Das Verfahren nennt sich Destination NAT (DNAT), allgemein als Port-Forwarding oder auch Port-Weiterleitung bekannt. Dabei wird in der Router-Konfiguration ein TCP-Port fest einer IP-Adresse zugeordnet. Daraufhin leitet der Router alle auf diesem Port eingehenden Datenpakete an diesen Host weiter. Vorsicht ist beim Freischalten von TCP-Ports (Port-Forwarding) geboten. Wer keine Server-Dienste im Internet zur VerfĂŒgung stellt, sollte alle TCP-Ports des Routers (von 0 bis 1.023) sperren. Gut vorkonfigurierte Router haben das schon automatisch eingestellt. Wer auf Port-Forwarding nicht verzichten kann, sollte aus SicherheitsgrĂŒnden eine demilitarisierte Zone (DMZ) einrichten und so den Datenverkehr aus dem Internet aus dem lokalen Netzwerk heraus halten.

Probleme durch NAT​

Ein Problem ist, dass die Anwendungen und Anwendungsprotokolle nichts davon wissen, wenn sie auf einem Host laufen, der nur eine private IPv4-Adresse hat. Solange Protokolle und Anwendungen nach dem Client-Server-Prinzip arbeiten stellt das noch kein Problem dar. Wenn jedoch eine Anwendung dem Ende-zu-Ende-Prinzip folgt, dann bedarf es Hilfskonstruktionen, damit Hosts mit privater IPv4-Adresse erreichbar sind. FĂŒr viele Protokolle existieren Umgehungsmechanismen fĂŒr NAT, die jedoch die KomplexitĂ€t und FehleranfĂ€lligkeit steigern und viele Systeme und Anwendungen von deren VerfĂŒgbarkeit abhĂ€ngig machen. Dadurch werden viele Internet-Anwendungen und -Dienste komplizierter, was insgesamt auch zu mehr SicherheitslĂŒcken fĂŒhrt.

Beispiel VoIP​

Bei der Internet-Telefonie (VoIP) st keine direkte Verbindung zu einem VoIP-Telefon möglich, wenn dieses in einem privaten LAN ist. Hierbei bedarf es zentraler Gateways, an denen sich die VoIP-Telefone anmelden und regelmĂ€ssig Kontakt herstellen mĂŒssen, damit das Telefon durch NAT-Router erreichbar bleibt.

Probleme gibt es auch bei FTP, Messaging und Push Notifications. Auch hier wird vorausgesetzt, dass der Client direkt erreichbar ist, was er wegen der privaten IPv4-Adresse nicht ist.

Die EintrĂ€ge in der NAT-Tabelle des Routers sind nur fĂŒr eine kurze Zeit gĂŒltig. FĂŒr eine Anwendung, die nur sehr unregelmĂ€ssig Daten austauscht, bedeutet das, dass stĂ€ndig die Verbindung abgebrochen wird und dadurch die Erreichbarkeit eingeschrĂ€nkt ist. Das hat zur Folge, dass diese Anwendung unter UmstĂ€nden in einer NAT-Umgebung nicht funktioniert. Und somit kann sich diese Anwendung im Internet nicht durchsetzen. Den die meisten Clients befinden sich typischerweise in einer NAT-Umgebung. Um dauerhaft ein Loch in den NAT-Router zu bekommen, wird mit Port-Forwarding (DNAT) gearbeitet. Das bedeutet, dass ein eingehendes Datenpaket mit einem bestimmten TCP-/UDP-Port an eine bestimmte IP-Adresse im lokalen Netzwerk geschickt wird.

Probleme mit NAT gibt es auch da, wo innerhalb des Protokolls die IPv4-Adresse des Hosts mitgeteilt wird. Wenn zum Beispiel bei verschlĂŒsselten IPv4-Paketen eine Checksumme ĂŒber die IPv4-Adresse zur IntegritĂ€tskontrolle gebildet wird. Aber durch den Einsatz von NAT werden die Adressen im IPv4-Header geĂ€ndert. Dadurch scheitern Protokoll, die darauf angewiesen sind, dass die IntegritĂ€t des IPv4-Headers erhalten bleibt. Zum Beispiel IPsec fĂŒr VPN.

Wegen den Auswirkungen durch NAT haben sich zentralistische Dienste wie Skype, YouTube und TikTok entwickelt, die die Inhalte aller Internet-Teilnehmer stellvertretend bereitstellen. Diese Dienste haben dadurch die Kontrolle ĂŒber persönliche Daten gewonnen und können auf dieser Basis ihre Ă€usserst lukrativen GeschĂ€ftsmodelle betreiben.

NAT als Sicherheitsfeature?​

NAT wird oft in Beschreibungen von GerĂ€ten als Sicherheitsmerkmal bezeichnet. Damit ist der Mechanismus gemeint, der als Nebenprodukt verhindert, dass ein Host hinter einem NAT-Router von ausserhalb direkt ansprechbar ist. Die Systeme im NAT-Netzwerk sind von aussen nicht mehr anhand ihrer IPv4-Adresse voneinander zu unterscheiden. Weil alle dieselbe öffentliche IPv4-Adresse fĂŒr ihre externen Verbindungen vom NAT-Router bekommen. Das verschafft den Nutzern einen gewissen Grad an PrivatsphĂ€re und Sicherheit.

Private IPv4-Adressen in Kombination mit NAT wirken in gewisser Weise wie eine eingebaute "Firewall". Denn von aussen initiierte Verbindungsversuche werden verworfen, wenn vorher keine ausgehende Verbindung bestanden hat. NAT wirkt wie eine rudimentĂ€re Firewall, die alle unberechtigten Zugriffe von aussen blockiert. Es handelt sich dabei um eine gewollte Schutzfunktion fĂŒr unberechtigten und unsicheren Datenverkehr.

NAT ist deshalb durchaus ein Sicherheitsmerkmal fĂŒr lokale Netzwerke. NAT ersetzt aber keinen Paketfilter und schon gar keine vollwertige Firewall. NAT verhindert nur Datenverbindungen, die nicht vom internen Netzwerk (LAN) aus initiiert wurden und somit kein vorhergehender Datenverkehr existiert hat. Die grössten Sicherheitsprobleme liegen meist auf der Anwendungsebene bzw. werden durch unsachgemĂ€sse Handhabung der Anwender ausgelöst, was man mit NAT nicht verhindern kann - mit einer „Stateful Inspection“ Firewall schon.

Aufbohren der NAT-Regeln / Firewall

Im Unterricht haben wir mit zwei Servern (einer in Deutschland, einer in Finnland) nachgestellt, wie die SchĂŒtzende Wirkung von NAT (oder auch von Firewalls) umgangen werden können. Beschreiben Sie in eigenen Worten, was gemacht wurde, um eine UDP-Verbindung mit einem Server hinter einem NAT aufzubauen.

Erstellen Sie dabei eine SituationsĂŒbersicht (entweder per Hand oder mit 👉 Excalidraw)

SSR