Port Address Translation
Port and Address Translation (PAT) oder Network Address Port Translation (NAPT) ist eine Technik, die in Computernetzwerken verwendet wird. Sie ist eine spezielle Form von NAT (1 zu n NAT). Dabei werden im Gegensatz zu NAT nicht nur die IP-Adressen, sondern auch Port-Nummern umgeschrieben. PAT wird eingesetzt, wenn mehrere private IP-Adressen aus einem LAN zu einer öffentlichen IP-Adresse übersetzt werden sollen. Ohne den Austausch des Quell-Ports kann es zu einem Konflikt kommen, falls mehrere Rechner aus dem lokalen Netz gleichzeitig eine Verbindung zu einem Socket aufbauen und dabei den gleichen Quell-Port benutzen.
Inhaltsverzeichnis
Beispiel[Bearbeiten | Quelltext bearbeiten]
Angenommen für das lokale Netz 192.168.0.0/24
steht die öffentliche IP-Adresse 205.0.0.2
zur Verfügung.
Ausgehende Pakete (LAN → WAN)[Bearbeiten | Quelltext bearbeiten]
lokales Netz (LAN) | öffentliches Netz (WAN) | |||
Quell IP:Port | Ziel IP:Port | Router ===========> Port Translation |
Quell IP:Port | Ziel IP:Port |
---|---|---|---|---|
192.168.0.2:5000 | 170.0.0.1:80 | 205.0.0.2:6000 | 170.0.0.1:80 | |
192.168.0.3:5000 | 170.0.0.1:80 | 205.0.0.2:6001 | 170.0.0.1:80 | |
192.168.0.5:5002 | 170.0.0.1:80 | 205.0.0.2:6002 | 170.0.0.1:80 |
Die Quell-IP-Adressen werden durch die (einzige) öffentliche IP-Adresse ersetzt. Die internen Port-Nummern werden durch eindeutige öffentliche Port-Nummern ersetzt. Mittels einer Tabelle merkt sich der Router jeweils die interne Quell-IP-Adresse samt Port-Nummer und die öffentliche Port-Nummer des ausgehenden Pakets:
192.168.0.2:5000
⇔6000
192.168.0.3:5000
⇔6001
192.168.0.5:5002
⇔6002
Wie im Beispiel ersichtlich, funktioniert dies auch, wenn mehrere Geräte gleichzeitig dieselbe IP mit demselben Port aufrufen. Zwar haben die Datenpakete alle die gleiche Ziel-IP und den gleichen Ziel-Port, jedoch werden die Antworten an die Quell-IP gesendet, mit jeweils unterschiedlichen Ports. Das aufrufende Gerät (Router oder ähnliches) kann nämlich eine HTTP Anfrage über den Port 80 stellen, dabei aber selbst als eigenen Port den Port 6001 angeben. Die Antwort vom HTTP-Server erfolgt dann an den Router auf dem Port 6001 und dieser übersetzt zurück auf die passende IP und den Port des aufrufenden Geräts.
Eingehende Pakete (LAN ← WAN)[Bearbeiten | Quelltext bearbeiten]
lokales Netz (LAN) | öffentliches Netz (WAN) | |||
Quell IP:Port | Ziel IP:Port | Router <=========== Port Translation |
Quell IP:Port | Ziel IP:Port |
---|---|---|---|---|
170.0.0.1:80 | 192.168.0.2:5000 | 170.0.0.1:80 | 205.0.0.2:6000 | |
170.0.0.1:80 | 192.168.0.3:5000 | 170.0.0.1:80 | 205.0.0.2:6001 | |
170.0.0.1:80 | 192.168.0.5:5002 | 170.0.0.1:80 | 205.0.0.2:6002 |
Bei eingehenden Paketen kann anhand der Port-Nummer der Ziel-IP und des Tabelleneintrags (connection tracking) festgestellt werden, welcher Computer die Pakete angefordert hatte (hier: 192.168.0.2
, 192.168.0.3
und 192.168.0.5
). Der Router kann dadurch die Ziel-IP durch die ursprüngliche Quell-IP 192.168.0.2
, 192.168.0.3
bzw. 192.168.0.5
und die öffentliche Port-Nummer durch die ursprüngliche interne Port-Nummer austauschen.
Da hier jede IP-Adresse zu einer einzigen IP-Adresse übersetzt wird, spricht man von einer N:1-Übersetzung. Werden mehrere IP-Adressen zu weniger IP-Adressen abgebildet, dann handelt es sich um eine N:M-Übersetzung.
Siehe auch[Bearbeiten | Quelltext bearbeiten]
Weblinks[Bearbeiten | Quelltext bearbeiten]
- RFC 3022 – Traditional IP Network Address Translator (Traditional NAT)
- Animiertes Beispiel (Flash; 55 kB)