NAT und PAT: eine vollständige Erklärung

Netzwerkadressübersetzung (NAT) ist der Prozess der Änderung von IP-Adressinformationen in IP-Paket-Headern während des Transits durch ein Verkehrsroutinggerät.

Es gibt zwei verschiedene Arten von NAT:

  • NAT
    • Statisches NAT: Die einfachste Art von NAT bietet eine Eins-zu-Eins-Übersetzung von IP-Adressen. Sie wird oft auch als Eins-zu-Eins-NAT bezeichnet. Bei dieser Art von NAT müssen nur die IP-Adressen, die IP-Header-Prüfsumme und alle Prüfsummen auf höherer Ebene, die die IP-Adresse enthalten, geändert werden. Der Rest des Pakets kann unangetastet bleiben (zumindest für grundlegende TCP/UDP-Funktionen, einige Protokolle auf höherer Ebene müssen möglicherweise weiter übersetzt werden). Einfache NATs können verwendet werden, wenn zwei IP-Netze mit inkompatibler Adressierung miteinander verbunden werden sollen. Bei statischem NAT sind die Übersetzungen in der NAT-Übersetzungstabelle vorhanden, sobald Sie statische NAT-Befehle konfigurieren, und sie bleiben in der Übersetzungstabelle, bis Sie die statischen NAT-Befehle löschen.
    • Dynamisches NAT: Dynamisches NAT hat einige Ähnlichkeiten und Unterschiede zu statischem NAT. Wie bei statischem NAT erstellt der NAT-Router eine Eins-zu-Eins-Zuordnung zwischen einer internen lokalen und einer internen globalen Adresse und ändert die IP-Adressen in den Paketen, wenn diese das interne Netzwerk verlassen oder in dieses eintreten. Allerdings erfolgt die Zuordnung einer internen lokalen Adresse zu einer internen globalen Adresse dynamisch. Dynamisches NAT richtet einen Pool möglicher globaler interner Adressen ein und legt Kriterien fest, um zu bestimmen, welche lokalen internen IP-Adressen mit NAT übersetzt werden sollen. Der dynamische Eintrag bleibt so lange in der Tabelle, wie gelegentlich Verkehr fließt. Bei dynamischem NAT werden die Übersetzungen erst dann in die NAT-Tabelle aufgenommen, wenn der Router Verkehr empfängt, der eine Übersetzung erfordert. Dynamische Übersetzungen haben eine Timeout-Periode, nach der sie aus der Übersetzungstabelle gelöscht werden.
  • PAT
    • Statisches PAT: Statische PAT-Übersetzungen ermöglichen die Übersetzung eines bestimmten UDP- oder TCP-Ports auf einer globalen Adresse in einen bestimmten Port auf einer lokalen Adresse. Statisches PAT ist dasselbe wie statisches NAT, mit dem Unterschied, dass Sie das Protokoll (TCP oder UDP) und den Port für die realen und gemappten Adressen angeben können. Mit statischem PAT können Sie dieselbe gemappte Adresse in vielen verschiedenen statischen Anweisungen identifizieren, vorausgesetzt, der Port ist für jede Anweisung unterschiedlich. Sie können nicht dieselbe gemappte Adresse für mehrere statische NAT-Anweisungen verwenden. Bei statischem PAT sind Übersetzungen in der NAT-Übersetzungstabelle vorhanden, sobald Sie statische PAT-Befehle konfigurieren, und sie bleiben in der Übersetzungstabelle, bis Sie die statischen PAT-Befehle löschen.
    • NAT Overload oder PAT: Es ist üblich, einen gesamten IP-Adressraum, der normalerweise aus privaten IP-Adressen besteht, hinter einer einzelnen IP-Adresse (oder in einigen Fällen einer kleinen Gruppe von IP-Adressen) in einem anderen (normalerweise öffentlichen) Adressraum zu verstecken. Diese Art von NAT wird als PAT in overload bezeichnet. Der dynamische Eintrag bleibt so lange in der Tabelle, wie gelegentlich Verkehr fließt. Bei PAT in overload sind die Übersetzungen erst dann in der NAT-Tabelle vorhanden, wenn der Router Verkehr empfängt, der eine Übersetzung erfordert. Übersetzungen haben eine Timeout-Periode, nach der sie aus der Übersetzungstabelle gelöscht werden.

Beispiel #1: Static Source NAT

Wie wird die IP-Adresse 172.16.0.5 in die IP-Adresse 10.16.0.5 übersetzt.

Definieren Sie ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Definieren Sie ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Definieren Sie den statischen NAT-Eintrag:

ip nat inside source static 172.16.0.5 10.16.0.5

Bei statischem NAT existiert die Übersetzung in der NAT-Übersetzungstabelle, sobald Sie den statischen NAT-Befehl konfigurieren, und sie bleibt in der Übersetzungstabelle, bis Sie den statischen NAT-Befehl löschen:

Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside global--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#

Wenn der Client ein ICMP-Paket oder eine HTTP-Anfrage an den Webserver sendet, sieht die NAT-Tabelle wie folgt aus:

Ciscozine#sh ip nat translationsPro Inside global Inside local Outside local Outside globalicmp 10.16.0.5:1 172.16.0.5:1 10.0.0.100:1 10.0.0.100:1tcp 10.16.0.5:56080 172.16.0.5:56080 10.0.0.100:80 10.0.0.100:80--- 10.16.0.5 172.16.0.5 --- ---Ciscozine#

Erinnern Sie sich: Da die zugeordnete Adresse bei statischem NAT für jede aufeinanderfolgende Verbindung gleich ist und eine dauerhafte Übersetzungsregel existiert, erlaubt statisches NAT den Hosts im Zielnetz, Datenverkehr zu einem übersetzten Host zu initiieren (wenn eine Zugriffsliste existiert, die dies erlaubt).

Beispiel #2: Dynamisches Source NAT

Wie man das 172.16.0.0/28 Netzwerk in das 10.16.0.0/29 Netzwerk übersetzt.

Definieren Sie das ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Definieren Sie das ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Definieren Sie den nat pool, der für die NAT-Übersetzung verwendet wird:

Ciscozine(config)#ip nat pool dynamic-ip 10.0.16.1 10.0.16.6 prefix-length 29

Definieren Sie, welches Netzwerk übersetzt werden soll:

Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.15

Definieren Sie das dynamische Quell-NAT:

Ciscozine(config)#ip nat inside source list client-list pool dynamic-ip

Bei dynamischem NAT werden die Übersetzungen erst dann in die NAT-Tabelle aufgenommen, wenn der Router Verkehr empfängt, der eine Übersetzung erfordert.

Ciscozine#sh ip nat translationsCiscozine#

aber wenn einige Pakete mit der ACL übereinstimmen..

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globalicmp 10.0.16.1:2 172.16.0.1:2 10.0.0.100:2 10.0.0.100:2tcp 10.0.16.2:35694 172.16.0.2:35694 10.0.0.100:80 10.0.0.100:80tcp 10.0.16.1:56185 172.16.0.1:56185 10.0.0.100:80 10.0.0.100:80--- 10.0.16.1 172.16.0.1 --- ------ 10.0.16.2 172.16.0.2 --- ---Ciscozine#

Hinweis: Wenn ein neues Paket von einem anderen internen Host eintrifft und einen NAT-Eintrag benötigt, aber alle gepoolten IP-Adressen in Gebrauch sind, verwirft der Router das Paket einfach.

Dies kann überprüft werden, indem man „debug ip nat“ aktiviert.

Feb 12 19:26:09.895: NAT: translation failed (E), dropping packet s=172.16.0.5 d=10.0.0.100

Der Benutzer muss es erneut versuchen, bis ein NAT-Eintrag abläuft, woraufhin die NAT-Funktion für den nächsten Host, der ein Paket sendet, funktioniert. Im Grunde genommen muss der interne globale Adresspool so groß sein wie die maximale Anzahl gleichzeitiger Hosts, die das Internet gleichzeitig nutzen müssen – es sei denn, wir verwenden PAT.

Erinnerung: Der Hauptunterschied zwischen dynamischem NAT und einem Adressbereich für statisches NAT besteht darin, dass statisches NAT einem entfernten Host erlaubt, eine Verbindung zu einem übersetzten Host zu initiieren (wenn eine Zugriffsliste existiert, die dies erlaubt), während dynamisches NAT dies nicht tut. Bei statischem NAT benötigt man außerdem die gleiche Anzahl an gemappten Adressen wie an realen Adressen.

Beispiel #3: Statisches PAT

Wie kann man zwei verschiedene Dienste im Internet zugänglich machen:

  1. Der Webserver (172.16.0.5) lauscht auf tcp port 80; dieser Server antwortet auf die öffentliche Adresse 88.88.88.88:80 aus dem Internet (außen).
  2. Der SSH-Server (172.16.0.6) lauscht auf tcp port 22; dieser Server antwortet auf die öffentliche Adresse 88.88.88.88:666 aus dem Internet (außen).

Definieren Sie ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Definieren Sie ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Definieren Sie das statische PAT:

Der Webserver antwortet auf tcp port 80 auf der ‚äußeren‘ Schnittstelle.

ip nat inside source static tcp 172.17.0.5 80 88.88.88.88 80

Der SSH-Server antwortet auf dem tcp-Port 666 auf der „äußeren“ Schnittstelle; in diesem Fall wird der echte Port (22 tcp) in den tcp-Port 666 übersetzt, wenn eine Anfrage aus dem Internet kommt.

ip nat inside source static tcp 172.17.0.6 22 88.88.88.88 666

Wie bei statischem NAT ist die statische PAT-Übersetzung in der NAT-Übersetzungstabelle vorhanden, sobald Sie den statischen PAT-Befehl konfigurieren, und sie bleibt in der Übersetzungstabelle, bis Sie den statischen PAT-Befehl löschen.

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#

Wenn ein Internet-Client eine HTTP-Anfrage oder eine SSH-Verbindung (auf tcp port 666) sendet, wird die nat-Tabelle:

Ciscozine#sh ip nat translations Pro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:80 172.16.0.5:80 56.56.56.56:54686 56.56.56.56:54686tcp 88.88.88.88:80 172.16.0.5:80 --- ---tcp 88.88.88.88:666 172.16.0.6:22 56.56.56.56:33704 56.56.56.56:33704tcp 88.88.88.88:666 172.16.0.6:22 --- ---Ciscozine#

Beispiel #4: PAT – NAT-Überlastung

Wie man eine Internet-Verbindung teilt.

Definieren Sie das ip nat inside:

Ciscozine(config)#interface fa0/0Ciscozine(config-if)#ip nat inside

Definieren Sie das ip nat outside:

Ciscozine(config)#interface fa0/1Ciscozine(config-if)#ip nat outside

Definieren Sie, welches Netzwerk übersetzt wird:

Ciscozine(config)#ip access-list standard client-listCiscozine(config-std-nacl)#permit 172.16.0.0 0.0.0.255

Definieren Sie den NAT Overload:

Ciscozine(config)#ip nat inside source list client-list interface fastethernet0/1 overload

Wie bei dynamischem NAT existieren Übersetzungen nicht in der NAT-Tabelle, bis der Router Verkehr empfängt, der eine Übersetzung erfordert:

Ciscozine#sh ip nat translationsCiscozine#

aber wenn einige Pakete der ACL entsprechen.

Ciscozine#show ip nat translationsPro Inside global Inside local Outside local Outside globaltcp 88.88.88.88:7921 172.16.0.2:7921 95.100.96.233:443 95.100.96.233:443tcp 88.88.88.88:8651 172.16.0.5:8651 173.194.44.18:80 173.194.44.18:80tcp 88.88.88.88:8652 172.16.0.111:8652 173.194.44.18:443 173.194.44.18:443tcp 88.88.88.88:8653 172.16.0.223:8653 173.194.70.84:443 173.194.70.84:443udp 88.88.88.88:64116 172.16.0.222:64116 8.8.8.8:53 8.8.8.8:53udp 88.88.88.88:64756 172.16.0.223:64756 8.8.4.4:53 8.8.4.4:53Ciscozine#

Gibt es noch andere Arten von NAT/PAT?

Die Antwort ist JA! Eine Art von NAT/PAT, die weit verbreitet ist, ist ip nat outside source; dieser Befehl erlaubt es, die Quelladresse eines Pakets zu übersetzen, das an der „äußeren“ Schnittstelle eingeht und die „innere“ Schnittstelle verlässt.

In einfachen Worten, wenn Sie das erste Beispiel #1

Der Befehl:

ip nat outside source static 10.0.0.100 192.168.0.100

übersetzt die 10.0.0.100 in die 192.168.0.100 , also muss der Client die 192.168.0.100 anrufen, um das Server-Web zu kontaktieren und nicht die 10.0.0.100.

Ein weiterer spezieller Typ von nat ist das ip nat inside destination, das verwendet wird, wenn mehrere interne Geräte identische Server mit gespiegeltem Inhalt sind, die von außen als ein einziger Server für den Lastausgleich erscheinen.

Sie definieren einen Adresspool, der die Adressen der realen Hosts enthält und mit „type rotary“ endet, so dass die Server im Round-Robin-Verfahren verfügbar sind. Die Zugriffsliste lässt nun die IP-Adresse des virtuellen Hosts zu, d. h. das, was die Außenwelt für die Host-Adresse hält. Der virtuelle Host ist also 123.123.123.132, die echten Hosts sind 172.16.0.2 bis 10.

Teilkonfiguration

interface FastEthernet0/0ip address 172.16.0.0 255.255.255.0ip nat inside!interface FastEthernet0/1ip address 88.88.88.88 255.255.255.252ip nat outside!ip nat pool real-ip-server 172.16.0.2 172.16.0.10 prefix-length 24 type rotaryip nat inside destination list 1 pool real-ip-server!ip route 0.0.0.0 0.0.0.0 FastEthernet0/1!access-list 1 permit 123.123.123.123

Diese Übersetzung ist nicht bidirektional. Sie müssen ein statisches Eins-zu-Eins-NAT verwenden, um dies zu erreichen. Eine „ip nat inside source static“-Funktionalität kann mit der obigen Konfiguration erreicht werden, indem eine einzelne Adresse im NAT-Pool verwendet wird, aber das würde nur für den Verkehr von außen nach innen funktionieren.

Wo gilt nat inside/outside?

Typischerweise wird „ip nat inside“ auf den Schnittstellen in Ihrer lokalen Umgebung konfiguriert, die nicht ins Internet geroutet werden können (typischerweise ein privater Bereich von IP-Adressen) und „ip nat outside“ auf der Schnittstelle, die mit dem Internet verbunden ist.

Wann führt der Router NAT aus?

Inside to Outside:

  1. Wenn IPSec dann Eingangszugriffsliste prüfen
  2. Entschlüsselung – für CET (Cisco Encryption Technology) oder IPSec
  3. Eingangszugriffsliste prüfen
  4. Eingangsratenbegrenzungen prüfen
  5. Eingangsabrechnung
  6. Umleitung zum Web-Cache
  7. Routing von Richtlinien
  8. Routing
  9. NAT von innen nach außen (lokale zu globale Übersetzung)
  10. Krypto (Karte prüfen und für Verschlüsselung markieren)
  11. Ausgangszugriffsliste prüfen
  12. Inspektion (Context-based Access Control (CBAC))
  13. TCP intercept
  14. encryption
  15. Queueing

Outside to Inside:

  1. Wenn IPSec, dann Eingangszugriffsliste prüfen
  2. Entschlüsselung – für CET oder IPSec
  3. Eingangszugriffsliste prüfen
  4. Eingangsratenbegrenzungen prüfen
  5. Eingangsabrechnung
  6. Umleitung zum Web-Cache
  7. NAT von außen nach innen (globale zu lokale Übersetzung)
  8. policy routing
  9. routing
  10. crypto (check map and mark for encryption)
  11. check output access list
  12. inspect CBAC
  13. TCP intercept
  14. encryption
  15. Queueing

Einige nützliche Befehle:

  • Um einige Statistiken über NAT zu sehen: show ip nat statistics
  • Um eine vollständige Liste der statischen/dynamischen NAT/PAT-Einträge zu sehen: show ip nat translations
  • Um einen dynamischen NAT-Eintrag zu löschen: clear ip na translation *
  • Um NAT zu debuggen: debug ip nat

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.