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.
Beispiel
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)
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:5001 | 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:5001 ⇔ 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)
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:5001 | 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
Weblinks
- RFC 3022 – Traditional IP Network Address Translator (Traditional NAT)
- Animiertes Beispiel (Flash; 55 kB)