Einleitung
Dieses Dokument beschreibt, wie eine statische Route zur Null-Schnittstelle Routing-Schleifen verhindern kann.
Voraussetzungen
Anforderungen
Es sind keine besonderen Voraussetzungen erforderlich, um den Inhalt dieses Dokuments nachzuvollziehen.
Verwendete Komponenten
Die Informationen in diesem Dokument basieren auf den Software- und Hardwareversionen:
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
Hintergrundinformationen
Die Null-Schnittstelle wird normalerweise verwendet, um Routing-Schleifen zu verhindern. Das Enhanced Interior Gateway Routing Protocol (EIGRP) erstellt beispielsweise immer eine Route zur Null0-Schnittstelle, wenn eine Gruppe von Routen zusammengefasst wird. Wenn ein Routing-Protokoll zusammengefasst wird, bedeutet dies, dass der Router Datenverkehr für jede IP-Adresse in dieser Zusammenfassung empfangen kann.
Da nicht alle IP-Adressen immer verwendet werden, besteht das Risiko, dass Pakete in Looping-Fällen verwendet werden, wenn auf dem Router, der den Datenverkehr für die Zusammenfassung empfängt, Standardrouten verwendet werden.
Befehlssyntax
Eine statische Route zu Null0 ist eine normale statische Route, mit der Ausnahme, dass sie auf die Null0-Schnittstelle verweist, die eine virtuelle Cisco IOS-Schnittstelle ist.
Weitere Informationen finden Sie im Abschnitt ip route des Kapitels: Die IP Routing Protocol-Independent Commands A bis R enthalten weitere Informationen zum Befehl ip route.
Im nächsten Abschnitt wird ein Beispiel für die Verwendung des Befehls ip route zum Erstellen einer statischen Route nach Null0 dargestellt.
Beispiel
Ein gängiges Szenario, in dem Sie Null0 eine statische Route hinzufügen müssen, ist das eines Zugriffsservers, der viele Clients hat, die sich einwählen. Dieses Szenario bewirkt, dass Hostrouten in der Routingtabelle des Zugriffsservers installiert werden.
Um die Erreichbarkeit dieser Clients zu gewährleisten, ohne das gesamte Netzwerk mit Hostrouten zu überfluten, haben andere Router im Netzwerk in der Regel eine zusammengefasste Route, die auf den Zugriffsserver verweist. Bei dieser Art von Konfiguration muss der Zugriffsserver dieselbe zusammengefasste Route haben, die auf die Null0-Schnittstelle des Zugriffsservers verweist. Andernfalls können Routingschleifen auftreten, wenn externe Hosts versuchen, IP-Adressen zu erreichen, die derzeit nicht einem gewählten Client zugewiesen sind, aber Teil der zusammengefassten Route sind. da der Zugriffsserver die Pakete über die Standardroute des Zugriffsservers zurück in das Core-Netzwerk bounce, da der Zugriffsserver keine spezifische Hostroute für das Ziel hat.
Betrachten Sie dieses Beispiel:
Netzwerktopologie
Ein kleiner ISP (ISP-R1) gibt einem Benutzer den Netzwerkblock 192.168.0.0/16. In diesem Beispiel unterteilt der Benutzer 192.168.0.0/16 in /24-Netzwerke und verwendet derzeit nur 192.168.1.0/24 und 192.168.2.0/24. Auf dem Router ISP-R1 konfiguriert der ISP eine statische Route für 192.168.0.0/16 zum Benutzerrouter (Kunde-R2). Der ISP stellt dann eine Verbindung zu einem Backbone-ISP her, der durch den Router BB-R3 repräsentiert wird. Der Router BB-R3 sendet eine Standardroute an den ISP-R1 und empfängt das Netzwerk 192.168.0.0/16 über BGP von dem ISP-R1.
Die Erreichbarkeit vom Internet (Backbone-ISP-Router BB-R3) bis zum Benutzer-Router cust-R2 ist nun gewährleistet, da cust-R2 über eine Standardroute verfügt, die so konfiguriert ist, dass sie auf ISP-R1 verweist.
Wenn Pakete jedoch für Netzwerkblöcke bestimmt sind, die außerhalb des Bereichs 192.168.0.0/16 nicht verwendet werden, verwendet der Kunde-R2-Router die Standardroute zu ISP-R1, um diese Pakete weiterzuleiten.
Die Pakete werden dann zwischen ISP-R1 und cust-R2 hin und her geschleift, bis der TTL abläuft. Dies kann sich erheblich auf die CPU- und Verbindungsauslastung des Routers auswirken.
Ein Beispiel dafür, woher dieser Datenverkehr zu nicht verwendeten IP-Adressen kommen kann, sind Denial-of-Service-Angriffe, das Scannen von IP-Blöcken, um anfällige Hosts zu finden, usw.
Relevante Konfigurationen:
Kunde-R2 |
version 12.3
!
hostname cust-R2
!
ip subnet-zero
!
interface Loopback0
ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
ip address 192.168.1.1 255.255.255.0
!
interface Ethernet1/0
ip address 192.168.2.1 255.255.255.0
!
interface Serial2/0
ip address 10.0.0.2 255.255.255.252
!--- This interface leads to ISP-R1.
!
ip classless
ip route 0.0.0.0 0.0.0.0 10.0.0.1
!--- Default route going to ISP-R1.
!
end
|
ISP-R1 |
version 12.3
!
hostname ISP-R1
!
ip subnet-zero
!
interface Loopback0
ip address 10.1.1.1 255.255.255.255
!
interface Serial0/0
ip address 10.0.0.1 255.255.255.252
!--- Interface to cust-R2.
!
interface Serial1/0
ip unnumbered Loopback0
!--- Interface going to BB-R3.
!
router bgp 65501
no synchronization
network 192.168.0.0 mask 255.255.0.0
!--- ISP-R1 injects 192.168.0.0/16 into BGP to !--- advertise it to BB-R3.
neighbor 10.3.3.3 remote-as 65503
neighbor 10.3.3.3 ebgp-multihop 255
no auto-summary
!
ip classless
ip route 10.3.3.3 255.255.255.255 Serial1/0
ip route 192.168.0.0 255.255.0.0 Serial0/0
!--- The first route is necessary for the eBGP !--- session to BB-R3 to come up.
!--- The route to 192.168.0.0/16 points towards cust-R2.
!
!
end
|
BB-R3 |
version 12.3
!
hostname BB-R3
!
ip subnet-zero
!
!
interface Loopback0
ip address 10.3.3.3 255.255.255.255
!
interface Serial2/0
ip unnumbered Loopback0
!--- This interface goes to ISP-R1.
!
router bgp 65503
no synchronization
bgp log-neighbor-changes
neighbor 10.1.1.1 remote-as 65501
neighbor 10.1.1.1 ebgp-multihop 255
neighbor 10.1.1.1 default-originate
!--- BB-R3 injects a default route into BGP and !--- sends it to ISP-R1.
no auto-summary
!
ip classless
ip route 10.1.1.1 255.255.255.255 Serial2/0
!--- This route points to ISP-R1 and is !--- used to establish the eBGP peering.
!
end
|
Paketfluss
Anmerkung: Einige Debug-Befehle wurden auf den Routern aktiviert, um den Paketfluss besser zu veranschaulichen, insbesondere debug ip packet und debug ip icmp. Aktivieren Sie diese Befehle nicht in einer Produktionsumgebung, es sei denn, Sie kennen die Konsequenzen genau.
BB-R3#ping ip 192.168.20.1 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:
*Oct 6 09:36:45.355: IP: tableid=0, s=10.3.3.3 (local), d=192.168.20.1 (Serial2/0), routed via FIB
*Oct 6 09:36:45.355: IP: s=10.3.3.3 (local), d=192.168.20.1 (Serial2/0), len 100, sending.
Success rate is 0 percent (0/1)
BB-R3#
*Oct 6 09:36:50.943: ICMP: time exceeded rcvd from 10.0.0.1
BB-R3 sendet eine einzelne ICMP-Anforderung an eine IP-Adresse innerhalb des Blocks 192.168.0.0/16, der auf cust-R2 nicht verwendet wird.
Der BB-R3 empfängt eine ICMP-Zeit, die von ISP-R1 überschritten wurde.
Auf ISP-R1:
18:50:22: IP: tableid=0, s=10.3.3.3 (Serial1/0), d=192.168.20.1 (Serial0/0), routed via RIB
18:50:22: IP: s=10.3.3.3 (Serial1/0), d=192.168.20.1 (Serial0/0), g=192.168.20.1, len 100, forward
18:50:22: IP: tableid=0, s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), routed via RIB
18:50:22: IP: s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), g=192.168.20.1, len 100, forward
18:50:22: IP: tableid=0, s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), routed via RIB
18:50:22: IP: s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), g=192.168.20.1, len 100, forward
18:50:22: IP: tableid=0, s=10.3.3.3 (Serial0/0), d=192.168.20.1 (Serial0/0), routed via RIB
Das erste Paket wird auf seriell1/0 auf ISP-R1 von BB-R3 empfangen und wie erwartet an cust-R2 auf seriell0/0 weitergeleitet.
Dasselbe Paket erreicht ISP-R1 über serial0/0 und wird aufgrund der folgenden Route sofort über dieselbe Schnittstelle an cust-R2 gesendet:
ISP-R1#show ip route 192.168.20.1
Routing entry for 192.168.0.0/16, supernet
Known via "static", distance 1, metric 0 (connected)
Advertised by bgp 65501
Routing Descriptor Blocks:
* directly connected, via Serial0/0
Route metric is 0, traffic share count is 1
Was passiert mit Kunde-R2, das diesen Datenverkehr an ISP-R1 zurücksendet?
Bei Kunde-R2:
*Oct 6 09:41:43.495: IP: s=10.3.3.3 (Serial2/0), d=192.168.20.1 (Serial2/0), g=10.0.0.1, len 100, forward
*Oct 6 09:41:43.515: IP: tableid=0, s=10.3.3.3 (Serial2/0), d=192.168.20.1 (Serial2/0), routed via RIB
*Oct 6 09:41:43.515: IP: s=10.3.3.3 (Serial2/0), d=192.168.20.1 (Serial2/0), g=10.0.0.1, len 100, forward
*Oct 6 09:41:43.555: IP: tableid=0, s=10.3.3.3 (Serial2/0), d=192.168.20.1 (Serial2/0), routed via RIB
Sie können sehen, dass cust-R2 diese Pakete aufgrund der folgenden Route an ISP-R1 zurücksendet:
cust-R2#show ip route 192.168.20.1 longer-prefixes
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 10.0.0.1 to network 0.0.0.0
cust-R2#
Router cust-R2 hat keine Route zu 192.168.20.1, da dieses Netzwerk im Benutzernetzwerk nicht verwendet wird. Die beste Route zu 192.168.20.1 ist daher die Standardroute, die auf ISP-R1 verweist. Das Ergebnis ist, dass die Pakete zwischen ISP-R1 und cust-R2 schleifen, bis die TTL läuft ab.
Wenn die ICMP-Anforderung an eine IP-Adresse in einem Netzwerk gegangen wäre, das gerade verwendet wird, würde dieses Ergebnis nicht auftreten.
Wenn die ICMP-Anforderung beispielsweise für 192.168.1.x galt, die direkt mit cust-R2 verbunden ist, wäre keine Schleife aufgetreten:
cust-R2#show ip route 192.168.1.1
Routing entry for 192.168.1.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
* directly connected, via Ethernet0/0
Route metric is 0, traffic share count is 1
Die Lösung für dieses Problem besteht darin, eine statische Route zu Null0 für 192.168.0.0/16 auf cust-R2 zu konfigurieren.
cust-R2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
cust-R2(config)#ip route 192.168.0.0 255.255.0.0 Null0
cust-R2(config)#end
cust-R2#
*Oct 6 09:53:18.015: %SYS-5-CONFIG_I: Configured from console by console
cust-R2#show ip route 192.168.20.1
Routing entry for 192.168.0.0/16, supernet
Known via "static", distance 1, metric 0 (connected)
Routing Descriptor Blocks:
* directly connected, via Null0
Route metric is 0, traffic share count is 1
Wenn Sie nun die ICMP-Anforderung von BB-R3 erneut an 192.168.20.1 senden, sendet cust-R2 diesen Datenverkehr an Null0, wodurch ein ICMP generiert wird, bei dem keine Erreichbarkeit mehr möglich ist.
BB-R3#ping ip 192.168.20.1 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:
U
Success rate is 0 percent (0/1)
BB-R3#
*Oct 6 09:54:33.051: ICMP: dst (10.3.3.3) host unreachable rcv from 10.0.0.2
Es kann Situationen geben, in denen die Verwendung einer zusammengefassten statischen Route zu Null0 nicht möglich ist. Wenn im vorherigen Beispiel:
-
Block 192.168.1.0/24 ist mit einem anderen Router verbunden, der sich über ISDN in cust-R2 einwählt
-
ISP-R1 weist 192.168.0.0/16 nicht zu, sondern nur 192.168.1.0/24
-
Eine Trennung der ISDN-Verbindung erfolgt
Anmerkung: Dies führt dazu, dass übertragene Pakete oder Anwendungen, die versuchen, diesen Block von IP-Adressen zu erreichen, dieselbe Routing-Schleife erzeugen, die zuvor beschrieben wurde.
Anmerkung: Um diesen Routing-Loop zu beheben, müssen Sie den Befehl ip route 192.168.1.0 255.255.0 Null0 200 verwenden, um eine schwebende statische Route zu Null0 für 192.168.1.0/24 zu konfigurieren. Der Befehl 200 entspricht der administrativen Distanz. Weitere Informationen finden Sie unter Administrative Distanz beschreiben.
Anmerkung: Da Sie eine größere administrative Distanz verwenden als jedes Routing-Protokoll, installiert cust-R2 eine variable statische Route, wenn die Route zu 192.168.1.0/24 über die ISDN-Verbindung inaktiv wird. Pakete werden dann an Null0 gesendet, bis die ISDN-Verbindung aktiv wird.
Zugehörige Informationen