NAT - Network Address Translation
NAT ist ein Verfahren, dass in Routern eingesetzt wird, die lokale Netzwerke mit dem Internet verbinden. Während im lokalen Netzwerk jede Station eine private IP-Adresse hat, steht für das Internet oft nur eine öffentliche IP-Adresse zur Verfügung. Private IP-Adressen dürfen mehrfach verwendet werden und besitzen in öffentlichen Netzen keine Gültigkeit. Damit trotzdem alle Computer mit privater IP- Adresse Zugang zum Internet bekommen können, muss der Internet-Zugangs-Router in allen ausgehenden Datenpaketen die IP-Adressen der Stationen durch seine eigene, öffentliche IP-Adresse ersetzen. Damit die eingehenden Datenpakete dem richtigen Ziel zugeordnet werden, speichert der Router die aktuellen Verbindungen in einer Tabelle. Dieses Verfahren nennt man NAT (Network Address Translation).
Warum NAT?
Die ersten IP-Netze waren anfangs eigenständige Netz ohne Verbindung nach außen. Deshalb wurden die Stationen häufig mit IP-Adressen aus den privaten Adressräumen versehen. Doch irgendwann entstand der Bedarf, E-Mails über die Grenzen von Unternehmensnetzen auszutauschen und auch auf das World Wide Web (WWW) zuzugreifen. Weil die Stationen ohne eigene öffentliche IP-Adresse keine Verbindung außerhalb des Netzwerks herstellen konnten, wurde mit NAT ein Verfahren eingeführt, dass es jeder Station möglich machte mit Rechnern außerhalb des lokalen Netzwerks zu kommunizieren.
Weil der Adressraum des Protokolls IPv4 zu verschwenderisch verteilt wurde, reichen die IP-Adressen nicht für jeden Computer aus. NAT ist also auch ein Ausweg, um die Adressknappheit von IPv4 kurzfristig aufzulösen. Langfristig muss jedoch ein Internet-Protokoll mit einem größeren Adressraum her. IPv6 ist ein solches Protokoll.
SNAT - Source Network Address Translation
Das klassische Szenario für einen NAT-Router ist ein gewöhnlicher Internet-Anschluss. Zum Beispiel über DSL oder Kabelmodem. Der eingesetzte Router dient als Zugang zum Internet und als Standard-Gateway für das lokale Netzwerk. In der Regel wollen über den Router mehr Geräte ins Internet, als öffentliche IP-Adressen zur Verfügung stehen. In der Regel nur eine einzige.
Beispielsweise bekommt der Router des lokalen Netzwerks die öffentliche IP-Adresse 222.0.0.1 für seinen WAN-Port vom Internet Service Provider (ISP) zugewiesen. Innerhalb des lokalen Netzwerks hat der Router die IP-Adresse 192.168.0.1, die für den LAN-Port gilt. Mit der öffentlichen IP-Adresse tritt der Router als Stellvertreter für alle Stationen seines lokalen Netzwerks (LAN) auf. Weil nur eine öffentliche IP-Adresse vom Internet-Provider zugeteilt wurde, bekommen die Stationen im LAN private IP-Adressen aus speziell dafür reservierten Adressbereichen zugewiesen. Das bedeutet aber auch, dass diese Adressen nur innerhalb des privaten Netzwerks gültig sind. Private IP-Adressen werden in öffentlichen Netzen nicht geroutet. Das bedeutet, dass Stationen mit privaten IP-Adressen keine Verbindung ins Internet bekommen. Damit das trotzdem funktioniert, wurde NAT entwickelt.
Wenn nun ein Datenpaket mit einer Ziel-Adresse außerhalb des lokalen Netzwerks adressiert ist, dann ersetzt der NAT-Router die Quell-Adresse durch seine öffentliche IP-Adresse. Die Portnummer (TCP oder UDP) wird durch eine andere Portnummer 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 Portnummern. Wenn also Pakete mit einer bestimmten Portnummer zurück kommen, dann ersetzt NAT die Ziel-Adresse durch die richtige Adresse und Portnummer.
In der Tabelle hat jeder Eintrag auch eine Zeit Markierung. Nach einer bestimmten Zeit der Inaktivität wird der betreffende Eintrag gelöscht. Auf diese Weise wird sichergestellt, dass kein Ports offen bleiben.
Weil dieses Verfahren die Absender-Adresse (Source) jedes ausgehenden Datenpaketes ändert, nennt man dieses Verfahren Source NAT (SNAT). SNAT bezeichnet man in der Regel einfach als NAT.
Ablauf von NAT
- Der Client schickt sein Datenpaket an sein Standard-Gateway (NAT-Router).
- Der NAT-Router tauscht IP-Adresse und Portnummer aus und speichert beides mit der getauschten Portnummer in der NAT-Tabelle.
- Dann leitet er das Datenpaket ins Internet weiter.
- Der Empfänger (Server) des Datenpakets schickt seine Antwort zurück.
- Der NAT-Router stellt nun anhand der Portnummer fest, für welche IP-Adresse das Paket im lokalen Netz gedacht ist.
- Dann tauscht er IP-Adresse und Portnummer aus und leitet es ins lokale Netz weiter, wo es der Client entgegennimmt.
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 eine Station 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 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 diese Station 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 (unter 1024) sperren. Gut vor konfigurierte 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
Die Einträge in der NAT-Tabelle sind nur für eine kurze Zeit gültig. Für Anwendungen, die nur sehr unregelmäßig Daten austauschen, bedeutet das, dass ständig die Verbindung abgebrochen wird. Das hat zur Folge, dass diese Anwendungen unter Umständen in einer NAT-Umgebung nicht funktionieren können.
Ein anderes Problem entsteht bei einer hohen Anzahl ausgehender Verbindungen. Dann können NAT-Tabellen schon mal überlaufen. Das bedeutet, dass einzelne Verbindungen aus der NAT-Tabelle fliegen und demzufolge Verbindungen abbrechen. Für manche Anwendungen besteht ein hohes Risiko der Fehladressierung wegen fehlender Adresszuordnungen.
Für viele Protokolle wurden Umgehungsmechanismen für NAT entwickelt. Das hat zu einer Verkomplizierung von Internet-Anwendungen und -Diensten und auch Sicherheitslücken geführt.
NAT als Sicherheitsfeature?
NAT wird besonders in Produkt-nahen Beschreibungen als Sicherheitsmerkmal beschrieben. Dahinter steckt ein Mechanismus, der als Nebenprodukt verhindert, dass Stationen hinter dem NAT-Router von außerhalb direkt ansprechbar sind. Von außen initiierte Verbindungsversuche werden verworfen und bekommen keinen Zugang zum lokalen Netzwerk. Hacker, die zyklisch alle TCP-Ports einer IP-Adresse nach offenen Ports absuchen (Port-Scan) bekommen keine Antwort vom Router.
Man kann sagen, NAT wirkt wie eine rudimentäre Firewall, die alle unberechtigten Zugriffe von außen blockt. Es handelt sich dabei um eine gewollte Schutzfunktion vor unaufgefordertem und unsicherem Datenverkehr. Doch eher zufällig erweist sich NAT als Sicherheitsmerkmal für lokale Netzwerke. NAT ersetzt keinen Paketfilter und schon gar keine vollwertige Firewall. NAT als Sicherheitsmerkmal zu bezeichnen ist irreführend und fahrlässig. Trotzdem wird dem Laien NAT immer wieder gerne als Sicherheitsfeature verkauft. Doch das ist falsch.
NAT und IPv6
Durch IPv6 wird NAT praktisch überflüssig. Der Wegfall von NAT verbessert den Betrieb von Netzwerken erheblich. Fehler, die NAT verursacht fallen dann einfach weg. Außerdem lassen sich Fehler schneller finden und beheben.
Ohne NAT werden Protokolle, wie STUN überflüssig. Das freut besonders Entwickler, weil jedes Protokoll, dass nicht implementiert werden muss, erst gar keine Sicherheitslücken aufreißen kann. Doch ohne NAT wird in Zukunft eine gut konfigurierte Firewall wichtiger werden


