Port Address Translation

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Port Address Translation (PAT) oder Network Address Port Translation (NAPT) ist eine Technik, die in Computernetzwerken verwendet wird. Sie ist eine spezielle Form von Source NAT (1-zu-n-NAT). Dabei werden im Gegensatz zu NAT nicht nur die IP-Adressen, sondern auch Port-Nummern umgeschrieben. PAT wird benötigt, wenn sich z. B. mehrere Rechner aus einem LAN (mit privaten IP-Adressen) zu einem öffentlichen Webserver (z. B. via HTTP) verbinden und dabei alle Verbindungen zu einer öffentlichen IP-Adresse maskiert (Masquerading) werden müssen. Sollte zufällig von mehreren Rechnern der gleiche Source-Port (aus der Range der dynamischen Ports) gewählt worden sein, käme es zu einem Konflikt bei der Zustellung der Antwortpakete an den richtigen Rechner aus dem LAN. Um dieses Problem zu lösen, wird bei Bedarf der Source-Port auf der WAN-Seite um eins erhöht, damit der Webserver seine Antwort eindeutig zurücksenden kann.

Angenommen für das lokale Netz 192.168.0.0/24 steht die öffentliche WAN-IP-Adresse 203.0.113.2 zur Verfügung, so könnte folgendes passieren:

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:50000 198.51.100.1:80 203.0.113.2:50000 198.51.100.1:80
192.168.0.3:50000 198.51.100.1:80 203.0.113.2:50001 198.51.100.1:80
192.168.0.5:50002 198.51.100.1:80 203.0.113.2:50002 198.51.100.1:80

Die LAN-IP-Adressen werden durch die (einzige) öffentliche IP-Adresse ersetzt. Die Quell-Ports der LAN-Rechner werden eindeutig auf die öffentliche WAN-IP mit Quell-Port übersetzt. Mittels einer Tabelle kann der Router die jeweiligen Verbindungen den LAN-Rechnern wieder eindeutig zuordnen:

  • 192.168.0.2:5000050000
  • 192.168.0.3:5000050001
  • 192.168.0.5:5000250002

Wie im Beispiel ersichtlich, wird dies benötigt, wenn mehrere Geräte gleichzeitig dieselbe IP mit demselben Ziel-Port aufrufen. So haben die Datenpakete alle die gleiche Ziel-IP und den gleichen Ziel-Port, jedoch unterschiedliche Quell-Ports, so dass die Antworten des Servers an dieselbe Quell-IP gesendet werden, aber jeweils mit unterschiedlichen Ziel-Ports (dem ursprünglichen Quell-Port).

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
198.51.100.1:80 192.168.0.2:50000 198.51.100.1:80 203.0.113.2:50000
198.51.100.1:80 192.168.0.3:50000 198.51.100.1:80 203.0.113.2:50001
198.51.100.1:80 192.168.0.5:50002 198.51.100.1:80 203.0.113.2:50002

Bei eingehenden Paketen kann anhand der Ziel- / Quell-Port-Nummer und der Ziel- / Quell-IP und der Tabelleneinträge (connection tracking) festgestellt werden, welcher lokaler 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.

  • P. Srisuresh, K. Egevang: RFC: 3022 – Traditional IP Network Address Translator (Traditional NAT). Januar 2001 (löst RFC 1631 ab, englisch).
  • Animiertes Beispiel (Flash; 55 kB)