NAT Overloading oder Port Address Translation (PAT) ist eine abgewandelte Form des dynamischen NAT, bei der die Anzahl der internen lokalen Adressen größer ist als die Anzahl der internen globalen Adressen. Meistens gibt es nur eine einzige interne globale IP-Adresse, die allen internen Hosts Zugang zum Internet bietet. NAT Overloading ist die einzige Variante von NAT, bei der tatsächlich IP-Adressen erhalten bleiben, und es ist auch die populärste Form von NAT.
Abbildung 10-4 Port Address Translation (PAT)
PAT erlaubt Overloading oder die Zuordnung von mehr als einer internen lokalen Adresse zur gleichen internen globalen Adresse. Das bedeutet aber auch, dass die zurückkommenden Pakete alle die gleiche Zieladresse haben, wenn sie den NAT-Router erreichen. Woher würde der Router wissen, zu welcher internen lokalen Adresse die einzelnen Rücksendepakete gehören? Um diesem Szenario zu begegnen, sind die NAT-Einträge in der Übersetzungstabelle erweiterte Einträge, die nicht nur die relevanten IP-Adressen, sondern auch die Protokolltypen und Ports erfassen. Durch die Übersetzung sowohl der IP-Adresse als auch der Portnummer eines Pakets könnten theoretisch bis zu 65535 lokale Adressen einer einzigen globalen Adresse zugeordnet werden (basierend auf der 16-Bit-Portnummer).
Dabei ist jedoch zu bedenken, dass ein einziger NAT-Eintrag etwa 160 Byte des Routerspeichers beansprucht, so dass 65535 Einträge mehr als 10 MB Speicher und auch eine große Menge an CPU-Leistung benötigen würden. In praktischen PAT-Konfigurationen werden nicht annähernd so viele Adressen gemappt, aber es ist definitiv eine theoretische Grenze.
Hier ist eine Beispielkonfiguration für NAT-Overloading oder PAT gemäß Abbildung 10-4.
R1>
R1>enable
R1#configure terminal
Eingabe von Konfigurationsbefehlen, einer pro Zeile. Beenden Sie mit CNTL/Z.
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 ?
netmask Geben Sie die Netzwerkmaske an
prefix-length Geben Sie die Präfixlänge an
R1(config)#ip nat pool MyPool 67.210.97.1 67.210.97.1 netmask 255.255.255.0
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R1(config)#ip nat inside source list 1 pool MyPool overload
R1(config)#interface FastEthernet0/0
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config-if)#ip nat inside
R1(config-if)#interface FastEthernet0/1
R1(config-if)#ip address 67.210.97.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config-if)#end
R1#
Die obige Konfiguration mag der Konfiguration für dynamisches NAT sehr ähnlich erscheinen, jedoch gibt es wichtige Unterschiede. Erstens wurde der Pool von IP-Adressen auf eine einzige IP-Adresse geschrumpft, die der Außenschnittstelle von Router R1 zugewiesen ist.
Zweitens stimmt die Zugriffsliste 1 mit dem gesamten Klasse-C-Netz 192.168.1.0/24 überein, was bedeutet, dass jede lokale Innenadresse aus diesem Netz übersetzt wird. Wenn Sie möchten, dass ein bestimmter Host aus diesem Netz nicht übersetzt wird, müssen Sie dies explizit angeben, indem Sie eine deny-Anweisung zur Zugriffsliste hinzufügen. Nehmen wir an, wir wollen die Übersetzung für einen einzelnen Host 192.168.1.2 verweigern und alle anderen Hosts zulassen:
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
Auch gibt es eine Hinzufügung des Schlüsselwortes overload mit dem Befehl ip nat inside source list 1 pool MyPool.
Beginnen wir unsere übliche Überprüfung mit dem Befehl show ip nat translations:
R1#show ip nat translations
R1#
Es gibt keine statischen Zuordnungen und daher die leere Ausgabe oben. Lassen Sie uns etwas Verkehr von internen Hosts zum Server erzeugen und geben Sie den Befehl show ip nat translations erneut aus:
Pro Inside global Inside local Outside local Outside global
icmp 67.210.91.1:18 192.168.1.2:18 173.194.67.102:18 173.194.67.102:18
icmp 67.210.91.1:19 192.168.1.3:19 173.194.67.102:19 173.194.67.102:19
icmp 67.210.91.1:20 192.168.1.4:20 173.194.67.102:20 173.194.67.102:20
Wie Sie in der obigen Ausgabe sehen können, werden alle lokalen Innenadressen in die gleiche globale Innenadresse übersetzt, was das Wesen von NAT overload oder PAT ist. Sie haben vielleicht bemerkt, dass der Router die Quellportnummern beibehalten hat, als die lokalen Adressen in globale Adressen übersetzt wurden. Dies ist das übliche Verhalten, aber wenn der Router einen neuen Übersetzungseintrag erstellt, bei dem die Quell-Portnummer bereits verwendet wird, wird auch die Portnummer in eine andere Nummer übersetzt. Das Auftreten von zwei internen Hosts, die dieselbe Quellportnummer wählen, ist nicht sehr häufig, aber es kann trotzdem passieren, besonders wenn die Anzahl der Verbindungen von innen nach außen signifikant ist.
Lassen Sie uns auch den Befehl show ip nat statistics ausführen:
Total active translations: 3 (0 statisch, 3 dynamisch; 3 erweitert)
Außere Schnittstellen:
Serial1/0
Innere Schnittstellen:
FastEthernet0/0
Treffer: 135 Fehlschläge: 15
CEF Übertragene Pakete: 150, CEF Punted Pakete: 0
Abgelaufene Übersetzungen: 12
Dynamische Mappings:
– Inside Source
access-list 1 pool MyPool refcount 3
pool MyPool: netmask 255.255.255.0
start 67.210.91.1 end 67.210.91.1
type generic, total addresses 1, allocated 1 (100%), misses 0
Queued Packets: 0
Sie sollten zwei Dinge im Auge behalten. Erstens ist NAT-Überlastung in jeder Situation nützlich, in der die Anzahl der internen Hosts größer ist als die der öffentlichen Adressen, die du hast. In vielen Fällen haben Sie nur eine einzige öffentliche IP-Adresse, die der äußeren Schnittstelle Ihres Routers zugewiesen ist. In diesem Fall würde Ihr Pool aus einer einzigen IP-Adresse bestehen, wie die obige Konfiguration zeigt. Es kann aber auch sein, dass Sie mehr als eine öffentliche IP-Adresse zur Verfügung haben, von denen eine der Internet-Schnittstelle Ihres Routers zugewiesen ist. In diesem Fall kann Ihr NAT-Pool aus mehr als einer IP-Adresse bestehen und trotzdem NAT-Überlastung nutzen, um eine größere Anzahl von internen Hosts unterzubringen, die eine Verbindung zum Internet herstellen wollen. Kurz gesagt, Sie können eine einzige überlastete öffentliche Adresse oder mehr als eine überlastete öffentliche Adresse haben.
NAT Overload oder PAT ist die am weitesten verbreitete NAT-Konfiguration aus dem offensichtlichen Grund, dass es die Variante von NAT ist, die tatsächlich globale IP-Adressen bewahrt, der Hauptgrund für die Verwendung von NAT.