ICMP-Funktionen
Verwenden Sie die Funktionen des Internet Control Message Protocol (ICMP), um Netzwerkprobleme zu diagnostizieren und die Geräteverfügbarkeit zu überprüfen.
Protokollumleitungsmeldungen
ICMP-Umleitung, auch Protokollumleitung genannt, ist ein Mechanismus, der von Switches und Routern verwendet wird, um Routing-Informationen an Hosts zu übermitteln. Geräte verwenden Protokollumleitungsmeldungen, um die Hosts über dieselbe Datenverbindung über die beste verfügbare Route für ein bestimmtes Ziel zu benachrichtigen.
Grundlegendes zu Protokollumleitungsmeldungen
Protokollumleitungsmeldungen informieren einen Host, seine Routing-Informationen zu aktualisieren und Pakete auf einer alternativen Route zu senden. Nehmen wir an, ein Host versucht, ein Datenpaket über einen Switch S1 zu senden, und S1 sendet das Datenpaket an einen anderen Switch, S2. Nehmen wir außerdem an, dass ein direkter Pfad vom Host zu S2 verfügbar ist (das heißt, der Host und S2 befinden sich im selben Ethernet-Segment). S1 sendet dann eine Protokollumleitungsnachricht, um den Host darüber zu informieren, dass die beste Route für das Ziel die direkte Route zu S2 ist. Der Host sollte dann Pakete direkt an S2 senden, anstatt sie über S1 zu senden. S2 sendet weiterhin das ursprüngliche Paket, das es von S1 erhalten hat, an das beabsichtigte Ziel.
Weitere Informationen zur Protokollumleitung finden Sie unter RFC-1122 und RFC-4861 .
-
Switches senden keine Protokollumleitungsmeldungen, wenn das Datenpaket Routing-Informationen enthält.
-
Alle Switches der EX-Serie unterstützen das Senden von Protokollumleitungsmeldungen für IPv4- und IPv6-Datenverkehr.
Deaktivieren von Protokollumleitungsmeldungen
Standardmäßig senden Geräte Protokollumleitungsmeldungen für IPv4- und IPv6-Datenverkehr. Aus Sicherheitsgründen können Sie das Senden von Protokollumleitungsmeldungen deaktivieren.
Um Protokollumleitungsmeldungen für das gesamte Gerät zu deaktivieren, fügen Sie die no-redirects
oder no-redirects-ipv6
Anweisung auf Hierarchieebene [edit system]
ein.
-
Für IPv4-Datenverkehr:
[edit system] user@host# set no-redirects
-
Für IPv6-Datenverkehr:
[edit system] user@host# set no-redirects-ipv6
Um das Senden von Umleitungsnachrichten auf dem Gerät erneut zu ermöglichen, löschen Sie die no-redirects
Anweisung (für IPv4-Datenverkehr) oder die no-redirects-ipv6
Anweisung (für IPv6-Datenverkehr) aus der Konfiguration.
Um Protokollumleitungsmeldungen auf Schnittstellenbasis zu deaktivieren, fügen Sie die no-redirects
Anweisung auf [edit interfaces interface-name unit logical-unit-number family family]
Hierarchieebene ein.
-
Für IPv4-Datenverkehr:
[edit interfaces interface-name unit logical-unit-number] user@host# set family inet no-redirects
-
Für IPv6-Datenverkehr:
[edit interfaces interface-name unit logical-unit-number] user@host# set family inet6 no-redirects
Pings
Pings verwenden ICMP. Ein erfolgreicher Ping ist, wenn ein Gerät eine ICMP-Echoanfrage an ein Ziel sendet und das Ziel mit einer ICMP-Echoantwort antwortet. Es kann jedoch vorkommen, dass Ihr Gerät nicht auf Ping-Anforderungen reagiert.
- Deaktivieren der Routing-Engine Response auf Multicast-Ping-Pakete
- Deaktivieren der Meldung von IP-Adressen und Zeitstempeln in Ping-Antworten
Deaktivieren der Routing-Engine Response auf Multicast-Ping-Pakete
Standardmäßig reagiert die Routing-Engine auf ICMP-Echoanfragen, die an Multicast-Gruppenadressen gesendet werden. Indem Sie die Routing-Engine so konfigurieren, dass Multicast-Ping-Pakete ignoriert werden, können Sie verhindern, dass unbefugte Personen die Liste der Provider-Edge-Geräte (PE) im Netzwerk entdecken.
Um zu deaktivieren, dass die Routing-Engine auf diese ICMP-Echoanfragen reagiert, fügen Sie die no-multicast-echo
Anweisung auf [edit system]
Hierarchieebene ein:
[edit system] user@host# set no-multicast-echo
Deaktivieren der Meldung von IP-Adressen und Zeitstempeln in Ping-Antworten
Wenn Sie den ping
Befehl mit der record-route
Option ausstellen, zeigt die Routing-Engine standardmäßig den Pfad der ICMP-Echoanforderungspakete und die Zeitstempel in den ICMP-Echoantworten an. Indem Sie die no-ping-record-route
Optionen konfigurieren no-ping-timestamp
, können Sie verhindern, dass unbefugte Personen Informationen über das Provider-Edge-Gerät (PE) und seine Loopback-Adresse entdecken.
Sie können die Routing-Engine so konfigurieren, dass die Einstellung der record-route
Option im IP-Header der Ping-Anforderungspakete deaktiviert wird. Die Deaktivierung der record-route
Option verhindert, dass die Routing-Engine den Pfad der ICMP-Echo-Anforderungspakete in der Antwort aufzeichnet und anzeigt.
Um die Routing-Engine so zu konfigurieren, dass die Einstellung der record route
Option deaktiviert wird, fügen Sie die no-ping-record-route
Anweisung auf Hierarchieebene [edit system]
ein:
[edit system] user@host# set no-ping-record-route
Um die Meldung von Zeitstempeln in den ICMP-Echoantworten zu deaktivieren, fügen Sie die no-ping-time-stamp
Option auf [edit system]
Hierarchieebene ein:
[edit system] user@host# set no-ping-time-stamp
Quell-Quench-Nachrichten
Wenn ein Gerät zu viele oder unerwünschte Datagramme empfängt, kann es eine Quell-Abschrecknachricht an das Ursprungsgerät senden. Die Quell-Abschreckmeldung signalisiert dem Ursprungsgerät, um den Datenverkehr zu reduzieren, den es sendet.
Standardmäßig reagiert das Gerät auf ICMP-Quelllöschmeldungen. Um ICMP-Quelllöschnachrichten zu ignorieren, fügen Sie die no-source-quench
Anweisung auf Hierarchieebene [edit system internet-options]
ein:
[edit system internet-options] no-source-quench;
Verwenden Sie die source-quench
Anweisung, um ICMP-Quelllöschnachrichten nicht mehr zu ignorieren:
[edit system internet-options] source-quench;
Ablauf der TTL (Time-to-Live)
Der Time-to-Live -Wert (TTL) in einem Paket-Header bestimmt, wie lange das Paket durch das Netzwerk reist. Die TTL-Werte werden mit jedem Gerät (oder Hop) des Pakets reduziert. Wenn ein Gerät ein Paket mit dem TTL-Wert 0 empfängt, verwirft es das Paket. Die TTL-Ablaufnachricht wird über ICMP gesendet.
Sie können Ihr Gerät so konfigurieren, dass eine IPv4-Adresse als Quelladresse für ICMP Time-to-Live (TTL)-Ablauffehlermeldungen verwendet wird. Das bedeutet, dass Sie die Loopback-Adresse als Antwort auf ICMP-Fehlerpakete als Quelladresse konfigurieren können. Dies ist nützlich, wenn Sie die Geräteadresse nicht für Traceroutezwecke verwenden können, da Sie in Ihrem Netzwerk doppelte IPv4-Adressen haben.
Die Quelladresse muss eine IPv4-Adresse sein. Um die Quelladresse anzugeben, verwenden Sie die ttl-expired-source-address source-address
Option auf [edit system icmp (System)]
Hierarchieebene:
[edit system icmp] user@host# set ttl-expired-source-address source-address
Diese Konfiguration gilt nur für ICMP-TTL-Ablaufmeldungen. Andere ICMP-Fehlermeldungen verwenden weiterhin die Adresse der Eingangsschnittstelle als Quelladresse.
Geschwindigkeitsbegrenzung des ICMP-Datenverkehrs
Um die Geschwindigkeit zu begrenzen, mit der ICMPv4- oder ICMPv6-Nachrichten von der Routing-Engine generiert und an die Routing-Engine gesendet werden können, fügen Sie die entsprechende Rate Limiting Statement auf Der [edit system internet-options]
Hierarchieebene ein.
-
Für IPv4:
[edit system internet-options] icmpv4-rate-limit bucket-size bucket-size packet-rate packet-rate
-
Für IPv6:
[edit system internet-options] icmpv6-rate-limit bucket-size bucket-size packet-rate packet-rate
ICMP-Fehlermeldungen zur Geschwindigkeitsbegrenzung
Standardmäßig werden ICMP-Fehlermeldungen für nicht TTL abgelaufene IPv4- und IPv6-Pakete mit einer Rate von 1 Paket pro Sekunde (pps) generiert. Sie können diese Rate an einen Wert anpassen, den Sie entscheiden, der ausreichend Informationen für Ihr Netzwerk bietet, ohne dass das Netzwerk überlastt wird.
Bei mit TTL abgelaufenen IPv4- oder IPv6-Paketen ist die Rate für ICMP-Fehlermeldungen nicht konfigurierbar. Es ist mit 500 pps fest.
- Warum sollten ICMPv4- und ICMPv6-Fehlermeldungen begrenzt werden?
- So bewerten Sie die Begrenzung von ICMPv4- und ICMPv6-Fehlermeldungen
Warum sollten ICMPv4- und ICMPv6-Fehlermeldungen begrenzt werden?
Ein Beispiel für die Anpassung des Ratenlimits ist ein Datencenter, das Webservices bereitstellt. Nehmen wir an, dieses Datencenter hat viele Server im Netzwerk, die Jumbo-Frames mit einer MTU von 9100 Bytes verwenden, wenn diese über das Internet mit Hosts kommunizieren. Diese anderen Hosts erfordern eine MTU von 1500 Bytes. Wenn die maximale Segmentgröße (MSS) nicht auf beiden Seiten der Verbindung erzwungen wird, antwortet ein Server möglicherweise mit einem Paket, das zu groß ist, um über das Internet übertragen zu werden, ohne fragmentiert zu werden, wenn es den Edge-Router im Datencenter erreicht.
Da bei TCP/IP-Implementierungen häufig die Path MTU Discovery standardmäßig aktiviert ist und das dont-fragment
Bit auf 1 festgelegt ist, wird ein Transitgerät ein zu großes Paket löschen, anstatt es zu fragmentieren. Das Gerät gibt eine ICMP-Fehlermeldung zurück, die darauf hinweist, dass das Ziel nicht erreichbar war, weil das Paket zu groß war. Die Meldung enthält auch die MTU, die benötigt wird, wenn der Fehler aufgetreten ist. Der sendenden Host sollte das sendenden MSS für diese Verbindung anpassen und die Daten erneut in kleinere Paketgrößen senden, um das Fragmentierungsproblem zu vermeiden.
Bei hohen Core-Schnittstellengeschwindigkeiten reicht die Standardgeschwindigkeit von 1 pps für die Fehlermeldungen möglicherweise nicht aus, um alle Hosts zu benachrichtigen, wenn es viele Hosts im Netzwerk gibt, die diesen Service benötigen. Die Folge ist, dass ausgehende Pakete unbemerkt unterbrochen werden. Diese Aktion kann zusätzliche Neuübertragungen oder Back-off-Verhaltensweisen auslösen, je nachdem, wie viele Anforderungen der Datencenter-Edge-Router auf jeder core-gerichteten Schnittstelle verarbeitet.
In diesem Fall können Sie die Geschwindigkeitsgrenze erhöhen, um ein höheres Volumen an übergroßen Paketen zu ermöglichen, die sendenden Hosts zu erreichen. (Das Hinzufügen weiterer Core-orientierte Schnittstellen kann auch zur Lösung des Problems beitragen.)
So bewerten Sie die Begrenzung von ICMPv4- und ICMPv6-Fehlermeldungen
Obwohl Sie die Geschwindigkeitsbegrenzung auf Hierarchieebene [edit chassis]
konfigurieren, handelt es sich nicht um eine gehäuseweite Grenze. Stattdessen gilt die Geschwindigkeitsbeschränkung pro Schnittstellenfamilie. Das bedeutet beispielsweise, dass mehrere konfigurierte physische Schnittstellen family inet
gleichzeitig ICMP-Fehlermeldungen in der konfigurierten Geschwindigkeit generieren können.
Diese Geschwindigkeitsbeschränkung gilt nur für Datenverkehr, der 10 Sekunden oder länger dauert. Das Geschwindigkeitslimit wird nicht auf Datenverkehr mit einer kürzeren Dauer angewendet, z. B. 5 Sekunden oder 9 Sekunden.
-
Verwenden Sie die Anweisung, um die
icmp
Geschwindigkeitsbegrenzung für ICMPv4 zu konfigurieren:[edit chassis] user@host# set icmp rate-limit rate-limit
Ab Junos OS Version 19.1R1 erhöhte sich die maximale Rate von 50 pps auf 1000 pps.
-
Verwenden Sie die Anweisung, um die
icmp6
Geschwindigkeitsbegrenzung für ICMPv6 zu konfigurieren:[edit chassis] user@host# set icmp6 rate-limit rate-limit
Sie müssen auch berücksichtigen, dass der Geschwindigkeitsgrenzwert mit Ihrer DDoS-Schutzkonfiguration interagieren kann. Der Standardbandbandwert für ausnahmegeeitete Pakete, die die MTU überschreiten, ist 250 pps. Der DDoS-Schutz markiert einen Verstoß, wenn die Anzahl der Pakete diesen Wert übersteigt. Wenn Sie die Geschwindigkeitsgrenze höher als den aktuellen Bandbreitenwert mtu-exceeded
festlegen, müssen Sie den Bandbreitenwert so konfigurieren, dass er dem Geschwindigkeitslimit entspricht.
Nehmen wir beispielsweise an, Sie legen die ICMP-Geschwindigkeitsgrenze auf 300 pps fest:
user@host# set chassis icmp rate-limit 300
Sie müssen den DDoS-Schutz mtu-exceeded bandwidth
so konfigurieren, dass er diesem Wert entspricht.
user@host# set system ddos-protection protocols exceptions mtu-exceeded bandwidth 300
ICMP-Erweiterungsoption für selektive Fehlermeldungen
Ein IP-Gerät verwendet das ICMP-Protokoll, um Probleme mit der Netzwerkkommunikation zu diagnostizieren, insbesondere um festzustellen, ob ein Datagramm rechtzeitig am vorgesehenen Ziel eintrifft. Wenn ein Datagramm nicht am vorgesehenen Ziel ankommt, meldet ICMP eine entsprechende Fehlermeldung an das ursprungsfähige IP-Gerät.
Wenn Netzwerkprobleme die IP-Paketbereitstellung verhindern, erzeugen Netzwerkgeräte ICMP, um Fehlermeldungen an die Quell-IP-Adresse zu generieren. ICMPv4 und ICMPv6 bieten eine Erweiterungsoption für selektive Fehlermeldungen.
Vorteile der ICMP-Erweiterung
ICMP-Erweiterung hilft bei der Identifizierung der Schnittstelle und anderer Informationen wie folgt:
-
ICMPv4- und ICMPv6-Nachrichten konnten die Schnittstelle eines Datagramms nicht identifizieren, die auf einer nicht nummerierten Schnittstelle nicht verarbeitet werden kann.
-
ICMP-Nachrichten werden erstellt, indem die Quelladresse einer eingehenden Schnittstelle ermittelt und Pakete an das Ursprungsgerät gesendet werden. das Ursprungsgerät kann jedoch nicht wissen, wo die ICMP-Nachricht stammt.
Mit der ICMP-Erweiterung können Sie das Netzwerkgerät identifizieren, das auf die ICMP-Nachricht reagiert, die die folgenden Informationen enthält:
-
Ein Datagramm, das über eine IP-Schnittstelle empfangen wird.
-
Ein Datagramm erreichte die Sub-IP-Komponente einer IP-Schnittstelle.
-
Die IP-Schnittstelle, über die das Datagramm weitergeleitet wird.
-
Next-Hop-IP-Adresse, an die sie weitergeleitet worden wäre.
Wir haben RFC5837 implementiert, um zusätzliche Felder anzufügen, um ICMP-Nachrichten (IPv4 und IPv6) für nummerierte und nicht nummerierte aggregierte Ethernet-Schnittstellen auszuwählen:
- ICMPv4-Zeit überschritten
- ICMPv4-Ziel nicht erreichbar
- ICMPv6-Zeit überschritten
- ICMPv6-Ziel nicht erreichbar
Die ICMPv6-Erweiterung wird nur für nummerierte Schnittstellen unterstützt.
So aktivieren Sie die ICMP-Erweiterung
So aktivieren Sie die ICMPv4-Erweiterung:
[edit chassis] user@host# set system allow-icmp4-extension
Um die ICMPv4-Erweiterung zu deaktivieren, löschen Sie die Konfiguration:
[edit chassis] user@host# delete system allow-icmp4-extension
So aktivieren Sie die ICMPv6-Erweiterung:
[edit chassis] user@host# set system allow-icmp6-extension
Um die ICMPv6-Erweiterung zu deaktivieren, löschen Sie die Konfiguration:
[edit chassis] user@host# delete system allow-icmp6-extension