Weblog

Network Address Translation (NAT)

27.04.2025 4 Min. Lesezeit

Die Technologie Network Address Translation (NAT) ist ein fundamentaler Bestandteil moderner Netzwerkinfrastrukturen. Sie wurde ursprünglich entwickelt, um das Problem der knappen IPv4-Adressen zu lösen, hat sich aber darüber hinaus zu einem vielseitigen Werkzeug für Sicherheits-, Routing- und Virtualisierungszwecke entwickelt. In diesem Beitrag erläutere ich NAT in all seinen Ausprägungen - SNAT, DNAT und Static NAT - mit technischem Tiefgang, historischem Kontext und praktischen Konfigurationsbeispielen für Junos, Cisco IOS und iptables.

Historischer Kontext und Motivation

IPv4 wurde in den 1980er Jahren entwickelt und bietet einen Adressraum von etwa 4,3 Milliarden Adressen. Mit dem explosionsartigen Wachstum des Internets in den 1990er Jahren wurde schnell klar, dass dieser Adressraum nicht ausreichen würde. Gleichzeitig war es nicht praktikabel, jedem Endgerät eine öffentliche IP-Adresse zuzuweisen.

1994 wurde NAT in RFC 1631 spezifiziert. Die Idee: Private IP-Adressen (RFC 1918) können innerhalb eines Netzwerks verwendet werden, während nur eine oder wenige öffentliche IP-Adressen für die Kommunikation mit dem Internet benötigt werden. NAT übersetzt dabei die Adressen und Ports zwischen internem und externem Netzwerk.

Grundprinzip von NAT

NAT verändert IP-Header-Felder (und ggf. Portnummern) von IP-Paketen, während sie ein NAT-Gateway passieren. Es gibt drei Hauptformen:

  1. SNAT (Source NAT) - Quelladresse wird verändert
  2. DNAT (Destination NAT) - Zieladresse wird verändert
  3. Static NAT - feste 1:1-Zuordnung zwischen interner und externer Adresse

SNAT - Source NAT

Beschreibung

SNAT wird verwendet, wenn ein internes Gerät mit einer privaten IP-Adresse nach außen kommuniziert (z. B. ins Internet). Die Quelladresse wird durch eine öffentliche IP ersetzt, damit die Antwortpakete korrekt zurückgeleitet werden können.

Typisches Einsatzszenario

  • Internetzugang für interne Clients
  • Maskierung interner Netzstruktur

Beispiel: iptables

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source 203.0.113.1

Beispiel: Cisco IOS

ip nat inside source list 1 interface GigabitEthernet0/1 overload
access-list 1 permit 192.168.0.0 0.0.0.255

Beispiel: Junos

set security nat source rule-set rs1 from zone trust
set security nat source rule-set rs1 to zone untrust

set security nat source rule-set rs1 rule r1 match source-address 192.168.0.0/24

set security nat source rule-set rs1 rule r1 then source-nat interface

Die Junos Beispiele beziehen sich alle auf die SRX Firewall-Familie. Mittels einer MultiService-Erweiterung können auch MX-Router für NAT eingesetzt werden.


DNAT - Destination NAT

Beschreibung

DNAT wird verwendet, wenn ein externer Client ein internes Gerät erreichen soll. Die Zieladresse im Paket wird durch eine interne Adresse ersetzt - z. B. bei Portweiterleitungen.

Typisches Einsatzszenario

  • Zugriff auf internen Webserver von außen
  • Portweiterleitung für Dienste wie SSH, HTTP, VoIP

Beispiel: iptables

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100:80

Beispiel: Cisco IOS

ip nat inside destination list 1 interface GigabitEthernet0/1

access-list 1 permit 203.0.113.10

ip nat inside destination static tcp 203.0.113.10 80 192.168.0.100 80

Beispiel: Junos

set security nat destination pool webserver address 192.168.0.100/32
set security nat destination rule-set rs1 from zone untrust

set security nat destination rule-set rs1 rule r1 match destination-address 203.0.113.10/32

set security nat destination rule-set rs1 rule r1 match destination-port 80

set security nat destination rule-set rs1 rule r1 then destination-nat pool webserver

Static NAT (1:1 NAT)

Beschreibung

Static NAT ordnet eine interne IP-Adresse dauerhaft einer öffentlichen IP-Adresse zu. Es wird keine Portübersetzung durchgeführt - jede Verbindung wird 1:1 abgebildet.

Typisches Einsatzszenario

  • Server mit fester öffentlicher IP
  • VPN-Gateways, VoIP-Systeme

Beispiel: iptables

iptables -t nat -A PREROUTING -d 203.0.113.10 -j DNAT --to-destination 192.168.0.10
iptables -t nat -A POSTROUTING -s 192.168.0.10 -j SNAT --to-source 203.0.113.10

Im Falle von iptables entspricht ein Static NAT Eintrag der Kombination von DNAT und SNAT.

Beispiel: Cisco IOS

ip nat inside source static 192.168.0.10 203.0.113.10

Beispiel: Junos

set security nat static rule-set rs1 from zone untrust
set security nat static rule-set rs1 rule r1 match destination-address 203.0.113.10/32

set security nat static rule-set rs1 rule r1 then static-nat prefix 192.168.0.10/32

Bedeutung von NAT im IPv4-Zeitalter

NAT war (und ist) eine zentrale Technologie zur Adresskonservierung. Ohne NAT wäre der IPv4-Adressraum schon lange vor der Einführung von IPv6 erschöpft gewesen. NAT ermöglicht:

  • Adressübersetzung zwischen privaten und öffentlichen Netzen
  • Sicherheitsgewinn durch Maskierung interner Strukturen
  • Mehrmandantenfähigkeit in Rechenzentren
  • Virtualisierung und Containerisierung (z. B. Docker NAT)

Einschränkungen und Herausforderungen

  • Protokollinkompatibilität: Einige Protokolle (z. B. SIP, FTP, IPsec) funktionieren schlecht oder nur mit NAT-Traversal.
  • Verlust von End-to-End-Konnektivität: NAT bricht das ursprüngliche Internetmodell.
  • Komplexität bei Debugging und Logging
  • Skalierungsprobleme bei großen NAT-Tables

Fazit

NAT ist eine technisch elegante, aber nicht perfekte Lösung für ein strukturelles Problem: die Knappheit von IPv4-Adressen. In modernen Netzwerken ist NAT allgegenwärtig - sei es im Heimrouter, im Rechenzentrum oder in Cloud-Umgebungen. Mit dem Übergang zu IPv6, das NAT überflüssig machen soll, verliert es langfristig an Bedeutung - doch bis dahin bleibt es ein unverzichtbares Werkzeug für Netzwerktechniker.

Zusätzliche Hinweise

Stateful Firewall: In beiden Systemen (Junos und iptables) sollte NAT mit einer zustandsbehafteten Firewall kombiniert werden.

Reverse Path Filtering (RPF): Bei asymmetrischem Routing kann RPF Pakete verwerfen - unbedingt prüfen.

Hairpin NAT: Für interne Clients, die über die öffentliche IP auf interne Server zugreifen - erfordert spezielle Konfiguration.

Themen Technikzeug
Schlagworte Cisco Juniper NAT SRX iptables
π