In diesem Dokument wird ein Szenario beschrieben, in dem die Paketschleife zwischen dem NAT-Router und dem benachbarten Router an der externen Schnittstelle bei der Verwendung der dynamischen Network Address Translation (NAT) aufgrund des Datenverkehrs, der für eine nicht verwendete IP-Adresse in einem NAT-Pool bestimmt ist, und des Vorhandenseins einer Standardroute auf dem NAT-Router, der diese Pakete zurück an die Außenseite weiterleitet.
Für dieses Dokument bestehen keine speziellen Anforderungen.
Dieses Dokument ist nicht auf bestimmte Software- und Hardwareversionen beschränkt.
Die in diesem Dokument enthaltenen Informationen wurden aus Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Sie in einem Live-Netzwerk arbeiten, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen, bevor Sie es verwenden.
Die folgende Topologie wurde zur Erstellung des Beispielszenarios verwendet.
Weitere Informationen zu Dokumentkonventionen finden Sie in den Cisco Technical Tips Conventions.
In der obigen Topologie wird Router-A mit NAT konfiguriert, sodass Pakete aus dem Netzwerk 171.68.200.0/24 in einen Adressbereich übersetzt werden, der vom NAT-Pool "Testschleife" definiert ist. Die Konfiguration von Router-A lautet wie folgt (alle anderen Router werden mit statischen Routen konfiguriert, um eine Verbindung herzustellen):
hostname Router-A ! ! ip nat pool test-loop 172.16.47.161 172.16.47.165 prefix-length 28 ip nat inside source list 7 pool test-loop ! interface Loopback0 ip address 1.1.1.1 255.0.0.0 ! interface Ethernet0 ip address 135.135.1.2 255.255.255.0 shutdown ! interface Serial0 ip address 171.68.200.49 255.255.255.0 ip nat inside no ip mroute-cache no ip route-cache no fair-queue ! interface Serial1 ip address 172.16.47.146 255.255.255.240 ip nat outside no ip mroute-cache no ip route-cache ! ip classless ip route 0.0.0.0 0.0.0.0 172.16.47.145 access-list 7 permit 171.68.200.0 0.0.0.255 ! ! line con 0 exec-timeout 0 0 line aux 0 line vty 0 4 login ! end
Mithilfe von Befehlen zum Debuggen der NAT-Übersetzung und zum Debuggen von IP-Paketen wurde ein Ping vom Router auf dem internen Gerät generiert. Der Ping funktionierte, und ein Eintrag in der Übersetzungstabelle wurde erstellt. In der unten stehenden Ausgabe sehen wir, dass das Debuggen von IP-Paketen und das Debuggen von IP NAT aktiviert sind und dass es derzeit keine Einträge in der Übersetzungstabelle gibt.
Hinweis: Die Debug-Befehle generieren eine beträchtliche Menge an Ausgabe. Verwenden Sie sie nur, wenn der Datenverkehr im IP-Netzwerk gering ist, sodass andere Aktivitäten im System nicht negativ beeinflusst werden.
Router-A# show debug Generic IP: IP packet debugging is on (detailed) IP NAT debugging is on Router-A# show ip nat translations Router-A#
Der interne Router (internes Gerät) generiert ein ICMP-Paket mit der Quelladresse 171.68.200.48 und der Zieladresse 171.68.191.1 (die Adresse des externen Geräts). Die folgende Debugausgabe zeigt, dass ein IP-Paket mit der Quell-IP-Adresse 171.68.200.48 in 172.16.47.161 übersetzt wird. Das Paket wird in der Serial0-Schnittstelle bereitgestellt und ist für die Serial1-Schnittstelle bestimmt.
NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [401] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0
Die folgende Debug-Ausgabe zeigt, dass das IP-Rückgabepaket mit der Ziel-IP-Adresse 172.16.47.161 zurück in 171.68.200.48 übersetzt wird. Das Paket wird in der Serial1-Schnittstelle bereitgestellt und ist für die serielle0-Schnittstelle bestimmt.
NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [401] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0
Die Debug-Ausgabe zeigt den erfolgreichen Ping-Austausch zwischen dem internen Gerät und dem externen Gerät an:
NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [402] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [402] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0 NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [403] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [403] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0 NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [404] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [404] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0 NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [405] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [405] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=0, code=0
Mit dem Befehl show ip nat translation sehen wir einen Eintrag in der Übersetzungstabelle für das interne Gerät.
Router-A# show ip nat translations Pro Inside global Inside local Outside local Outside global --- 172.16.47.161 171.68.200.48 --- ---
Nachdem nun eine Übersetzung für das interne Gerät in der Übersetzungstabelle vorhanden ist, können wir erfolgreich Pings vom externen Gerät an die globale Adresse des internen Geräts senden, wie in der Fehlerbehebungsausgabe von Router-A unten gezeigt.
Hinweis: Das vom externen Gerät generierte Paket hat die Quelladresse 171.68.191.1 und die Zieladresse 172.16.47.161 (die interne globale Adresse in der Übersetzungstabelle).
Router-A# NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [108] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=8, code=0 NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [108] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=0, code=0 NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [109] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=8, code=0 NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [109] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=0, code=0 NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [110] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=8, code=0 NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [110] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=0, code=0 NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [111] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=8, code=0 NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [111] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=0, code=0 NAT*: s=171.68.191.1, d=172.16.47.161->171.68.200.48 [112] IP: s=171.68.191.1 (Serial1), d=171.68.200.48 (Serial0), g=171.68.200.48, len 100, forward ICMP type=8, code=0 NAT: s=171.68.200.48->172.16.47.161, d=171.68.191.1 [112] IP: s=172.16.47.161 (Serial0), d=171.68.191.1 (Serial1), g=172.16.47.145, len 100, forward ICMP type=0, code=0
Die folgende Debugausgabe veranschaulicht, was passieren kann, wenn ein externes Gerät versucht, die Kommunikation mit einer Zieladresse zu initiieren, die eine nicht verwendete IP-Adresse im Testschleifenpool ist. Mit dem Befehl clear ip nat translation wurde die Übersetzungstabelle gelöscht, und ein Ping wurde an eine nicht verwendete IP-Adresse im Testschleifenpool gesendet.
Das externe Gerät sendet ein ICMP-Paket, das für die interne globale Adresse 172.16.47.161 bestimmt ist. Die Ausgabeschnittstelle ist jedoch dieselbe wie die Eingabeschnittstelle für dieses Paket.
IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0 IP: s=171.68.191.1 (Serial1), d=172.16.47.161 (Serial1), g=172.16.47.145, len 100, forward ICMP type=8, code=0
NAT übersetzt Pakete von außen nach innen, bevor das Paket weitergeleitet wird. In diesem Fall gibt es keinen Eintrag in der Übersetzungstabelle, sodass Router-A das Paket nur weiterleiten kann. Router-A verwendet die Standardroute für die Weiterleitung der Pakete und das Senden der Pakete an die Serial1-Schnittstelle. Dies führt zu einer Schleife, durch die die serielle Leitung letztendlich deaktiviert wird.
Um eine solche Routingschleife zu vermeiden, sollten Sie niemals Pakete von externen Geräten an interne globale Adressen generieren. Da dies jedoch schwer durchzusetzen ist, können Sie eine statische Route für die internen globalen Adressen mit einem nächsten Hop von null0 in Router-A hinzufügen. Wenn ein externes Gerät Pakete sendet, die für eine interne globale Adresse bestimmt sind, ohne dass ein Eintrag in der Übersetzungstabelle vorhanden ist, leitet Router-A das Paket auf null0 weiter und vermeidet so die Schleife. Mit dem obigen Beispiel sieht die statische Route wie folgt aus:
ip route 172.16.47.160 255.255.255.252 null0.
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
10-Aug-2005 |
Erstveröffentlichung |