[Linux] Detaillierte Erläuterung des Netzwerkdiagnose-Traceroute-Befehls

Inhaltsverzeichnis

1. Überblick über Traceroute

1.1 Einführung in den Traceroute-Befehl

1.2 Befehlsformat

1.3 Prinzip

1.4 Befehlsfunktionen

2. Verwenden Sie Beispiele

Beispiel 1: Die Verwendung von Traceroute ist einfach und wird am häufigsten verwendet

Beispiel 2: Einstellung der Hop-Anzahl

Beispiel 3: Legen Sie die Anzahl der Erkennungspakete fest

Beispiel 4: IP-Adresse anzeigen, ohne den Hostnamen zu überprüfen

Beispiel 5: Umgehen der normalen Routing-Tabelle und direktes Senden an den mit dem Netzwerk verbundenen Host

Beispiel 6: Der vom Erkennungspaket verwendete grundlegende UDP-Port ist auf 6888 eingestellt


Verwenden Sie Befehle oder Tools für die Netzwerkdiagnose:

[Linux] Detaillierte Erläuterung des Netzwerkdiagnose-Ping command_linux ping-CSDN-Blogs

[Netzwerk] Paketerfassungstool Wireshark herunterladen, installieren und Tutorial zur grundlegenden Verwendung – CSDN-Blog

[Netzwerk] Netzwerkschicht-ICMP-Protokoll-CSDN-Blog


1. Überblick über Traceroute


1.1 Einführung in den Traceroute-Befehl


Traceroute verfolgt weitergeleitete Pakete von einem IP-Netzwerk zu einem bestimmten Host. Es nutzt das Time-to-Live-Feld (TTL) des IP-Protokolls aus und versucht, von jedem Gateway auf dem Pfad zum Host eine ICMP-TIME_EXCEEDED-Antwort auszulösen. Die standardmäßige Paketgröße, die es sendet, beträgt 60 Byte (IPv4, CentOS7.X).

Durch Traceroute können wir den Weg ermitteln, den Informationen von Ihrem Computer zum Host am anderen Ende des Internets nehmen. Natürlich kann der Weg, den ein Datenpaket vom gleichen Startpunkt (Quelle) zum gleichen Ziel (Ziel) nimmt, jedes Mal unterschiedlich sein, aber im Grunde ist der Weg, den man nimmt, meistens derselbe. Im Linux-System nennen wir es Traceroute, in MS Windows heißt es Tracert. Traceroute misst, wie lange es dauert, kleine Pakete an das Zielgerät zu senden, bis sie zurückkommen. Jedes Gerät auf einem Pfad wird standardmäßig dreimal von Traceroute getestet. Die Ausgabeergebnisse umfassen die Zeit (ms) jedes Tests sowie den Namen des Geräts (falls vorhanden) und seine IP-Adresse.

In den meisten Fällen führen wir die Befehlszeile direkt auf dem Linux-Hostsystem aus:

traceroute hostname

Auf Windows-Systemen wird der Tracert-Befehl ausgeführt:

tracert hostname

1.2 Befehlsformat


Offizielle Übersetzung:

Traceroute verfolgt weitergeleitete Pakete von einem IP-Netzwerk zu einem bestimmten Host. Es nutzt das TTL-Feld (Time to Live) des IP-Protokolls aus und versucht, von jedem Gateway auf dem Weg zum Host eine ICMP TIME_EXCEEDED-Antwort auszulösen.

Der einzige erforderliche Parameter für Traceroute ist der Name oder die IP-Adresse des Zielhosts. Die optionale packet_length ist die Gesamtgröße des Erkennungspakets (IPv4-Standard ist 60 Byte, IPv6-Standard ist 80 Byte).

Das Programm versucht, die Route zu verfolgen, die ein IP-Paket zu bestimmten Internet-Hosts nehmen wird, indem es Prüfpakete mit einer TTL (Time to Live) startet und dann auf ICMP-„Timeout“-Antworten vom Gateway wartet. Wir starten die Probe mit einem TTL von 1 und erhöhen ihn dann um 1, bis wir einen ICMP-„Port nicht erreichbar“ (oder einen TCP-Reset) erhalten, was bedeutet, dass wir den „Host“ erreichen oder das Maximum erreicht ist (Standard sind 30 Hops). . Senden Sie drei Sonden pro TTL-Einstellung (standardmäßig). Drucken Sie eine Zeile mit TTL, Gateway-Adresse und Roundtrip-Zeit für jede Sonde aus. Auf Wunsch können der Adresse zusätzliche Informationen beigefügt werden. Wenn die Sondenantworten von verschiedenen Gateways stammen, wird die Adresse jedes antwortenden Systems gedruckt. Wenn innerhalb von 5,0 Sekunden (Standard) keine Antwort erfolgt, wird für die Sonde ein „*“ (Sternchen) gedruckt.

Nach der Reisezeit können einige zusätzliche Kommentare gedruckt werden: !H, !N oder !P (Host, Netzwerk oder Protokoll nicht erreichbar), !S (Quellrouting fehlgeschlagen), !F (Fragmentierung erforderlich), !X (Verwaltung). verbietet Kommunikation), !V (Host-Prioritätsverletzung), !C (Prioritätsgültigkeitsunterbrechung) oder !<num> (ICMP-nicht erreichbarer Code <num>). Wenn fast alle Untersuchungen zu einer Art Unerreichbarkeit führen, gibt Traceroute auf und wird beendet.

1.3 Prinzip


Der vollständige Prozess des Traceroute-Programms: Zuerst sendet es ein IP-Datenpaket mit einem TTL-Feld von 1 an den Zielhost. Der erste Router, der dieses Datenpaket verarbeitet, verringert den TTL-Wert um 1, verwirft dann das Datagramm und sendet ein ICMP an Der Quellhost. Nachricht („Timeout“-Informationen, diese Nachricht enthält die IP-Adresse des Routers, sodass die Adresse des ersten Routers erhalten wird), und dann sendet Traceroute ein Datagramm mit einer TTL von 2, um die IP-Adresse von zu erhalten Der zweite Router. Dieser Vorgang wird fortgesetzt, bis das Datagramm den Zielhost erreicht.

Wie in der Abbildung dargestellt, gehören ICMP-Nachrichten in IPv4 zum IP-Unterprotokoll. Ein Wert von 1 im Feld „Protokoll“ zeigt an, dass die Nachricht ICMPv4 überträgt.

Wie in der Abbildung gezeigt, handelt es sich um das Nachrichtenformat von ICMPv4. Alle ICMP-Nachrichten beginnen mit einem 8-Bit-Typ- und Code-Feld, gefolgt von einem 16-Bit-Prüfsummenfeld, das die gesamte Nachricht abdeckt.

Die Bedeutung jedes Feldes ist wie folgt:

  • Typ : Gibt den Typ der ICMP-Nachricht an und belegt 1 Byte. Zu den gängigen Typen gehören: Echo Reply (Echo Reply: 0), Echo Request (Echo Request: 8) usw.
  • Code : Gibt den Code der ICMP-Nachricht an, der 1 Byte ausmacht. Wird zur weiteren Beschreibung von ICMP-Nachrichten verwendet und in Kombination mit dem Feld „Typ“ verwendet.
  • Prüfsumme : Prüfsumme, mit der überprüft wird, ob die ICMP-Nachricht beschädigt ist, belegt 2 Bytes.
  • Daten : Daten, variable Länge. Es können beliebige Daten sein, und die Länge wird durch den spezifischen ICMP-Nachrichtentyp und -Code bestimmt.

Traceroute basierend auf ICMP-Nachrichten wird wie folgt implementiert: Wenn Sie den Traceroute-Befehl + IP auf dem Client eingeben, initiiert der Client eine ICMP-Echoanforderungsnachricht, das erste Datenpaket, TTL = 1, sodass der erste Hop-Router Nach dem Empfang Bei der Weiterleitung wird die TTL um eins reduziert, dh TTL = 0, und dann verworfen. Anschließend gibt der First-Hop-Router eine ICMP-Timeout-Fehlermeldung zurück. Nachdem der Client sie empfangen hat, ermittelt er, ob er empfangen hat eine ICMP-Antwort. Antwortnachricht anzeigen? Wenn es nicht empfangen wurde, sendet es weiterhin Echoanforderungsnachrichten und erhöht die TTL um 1, um es zu versuchen. Wenn es den Server erreicht, sendet der Server eine ICMP-Echoantwortnachricht.

 

1. Der Client sendet die erste ICMP-Echoanforderungsnachricht mit TTL=1 . Nachdem der First-Hop-Router sie empfangen hat, überprüft er die Zieladresse und leitet sie weiter. Vor der Weiterleitung wird die TTL um 1 verringert. Nachdem die Verringerung abgeschlossen ist , ist die TTL gleich 0. Verwerfen Sie das Paket und senden Sie eine TTL-abgelaufene ICMP-Nachricht an den Client zurück. Der Client empfängt die TTL-abgelaufene ICMP-Nachricht und erhält die erste Hop-Adresse von der Quelladresse in der Nachricht: 10.10.10.10

2. Da der Client feststellt, dass er die ICMP-Echo-Antwortnachricht nicht erhalten hat , versucht er weiterhin zu senden und die TTL wird um 1 erhöht. Nachdem der Router des ersten Hops es empfangen hat, leitet er es entsprechend der Zieladresse weiter. Bei der Weiterleitung wird die TTL um 1 verringert. Nach Abschluss der Dekrementierung ist die TTL = 1. Nach dem Empfang des Pakets überprüft der Second-Hop-Router die Zieladresse und leitet sie weiter. Vor der Weiterleitung wird die TTL um 1 dekrementiert. Nach Abschluss der Dekrementierung ist die TTL = 0, das Paket wird verworfen und eine TTL ist ICMP abgelaufen Die Nachricht wird an den Client zurückgegeben.
 

Der Client empfängt die TTL-abgelaufene ICMP-Nachricht und erhält die zweite Hop-Adresse von der Quelladresse in der Nachricht: 20.20.20.20

3. Da der Client die ICMP-Echo-Antwortnachricht immer noch nicht erhalten hat , versucht er weiterhin zu senden und die TTL wird um 1 erhöht. Nachdem der erste Hop-Router es empfangen hat, leitet er es entsprechend der Zieladresse weiter. Bei der Weiterleitung wird die TTL um 1 verringert, und nach Abschluss der Dekrementierung ist die TTL = 2. Nachdem der Router des zweiten Hops es empfangen hat, prüft er die Zieladresse und leitet sie weiter. Vor der Weiterleitung wird die TTL um 1 dekrementiert. Nach Abschluss der Dekrementierung ist die TTL = 1. Wenn die TTL nicht 0 ist, fährt der Router fort Weiterleitung. Das Datenpaket erreicht endlich den Server! Der Server überprüfte die Zieladresse und stellte fest, dass es sich um meine handelte. Daher entkapselte er sie weiter, untersuchte den IP-Datenteil (ICMP) und stellte fest, dass es sich um eine ICMP-Nachricht mit einer Echoanforderung handelte. Daher sendete er eine ICMP-Nachricht mit einer Echoanforderung Echo-Antwort an den Client.

Der Client empfängt und gibt die ICMP-Nachricht der Antwort zurück und bestätigt damit, dass das UDP-Paket den Server erfolgreich erreicht hat. Die Traceroute endet und die Quell-IP-Adresse wird aufgezeichnet: 192.168.2.1

1.4 Befehlsfunktionen


Mit dem Befehl „traceroute“ können Sie den Routing-Pfad von Netzwerkdatenpaketen verfolgen. Die Standardgröße für Datenpakete beträgt 40 Byte und kann vom Benutzer separat festgelegt werden.

Spezifisches Parameterformat: Traceroute [-dFlnrvx][-f<Überlebenswert>][-g<Gateway>...][-i<Netzwerkschnittstelle>][-m<Überlebenswert>][-p<Kommunikationsport> ][-s<Quelladresse>][-t<Diensttyp>][-w<Timeout-Sekunden>][Hostname oder IP-Adresse][Paketgröße]

Befehlsparameter:

Parameter

Definition

-D

Nutzen Sie Debugging-Funktionen auf Socket-Ebene.

-F

Legen Sie die Größe des Live-Wert-TTL des ersten Erkennungspakets fest.

-F

Teilen Sie das Paket nicht auf.

-G

Legen Sie Quell-Routing-Gateways fest, bis zu 8 können eingestellt werden.

-ich

Senden Sie Pakete über die angegebene Netzwerkschnittstelle.

-ICH

Traceroute mit ICMP ECHO

-T

Verwenden Sie TCP SYN für Traceroute (Standardport ist 80).

-M

Legen Sie die TTL-Größe des maximalen Überlebenswerts des Erkennungspakets fest.

-N

Die Anzahl der gleichzeitig gesendeten Probe-Pakete. Das gleichzeitige Senden mehrerer Sonden kann die Geschwindigkeit von Traceroute erheblich erhöhen. Der Standardwert ist 16.

-N

Verwenden Sie direkt die IP-Adresse anstelle des Hostnamens.

-P

Legen Sie den Kommunikationsport des UDP-Übertragungsprotokolls fest.

-R

Ignorieren Sie die normale Routing-Tabelle und senden Sie das Datenpaket direkt an den Remote-Host.

-S

Legen Sie die IP-Adresse des lokalen Hosts fest, um Datenpakete zu senden.

-T

Legen Sie den TOS-Wert für die Paketerkennung fest.

-v

Zeigen Sie den Ausführungsprozess der Anweisung im Detail an.

-w

Legen Sie die Zeit fest, die auf die Rückmeldung des Remote-Hosts gewartet werden soll.

-X

Schalten Sie die Korrektheitsprüfung von Datenpaketen ein oder aus.


2. Verwenden Sie Beispiele


Beispiel 1: Die Verwendung von Traceroute ist einfach und wird am häufigsten verwendet

Befehl:

traceroute www.baidu.com 

Ausgabe:

[root@hdp105 ~]#  traceroute www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  124.89.90.205 (124.89.90.205)  4.446 ms  4.398 ms  3.707 ms
 4  123.139.0.85 (123.139.0.85)  3.225 ms 123.139.1.29 (123.139.1.29)  12.200 ms 123.139.1.177 (123.139.1.177)  2.085 ms
 5  * 221.11.0.145 (221.11.0.145)  35.491 ms *
 6  219.158.111.233 (219.158.111.233)  33.572 ms * 221.11.0.45 (221.11.0.45)  33.728 ms
 7  110.242.66.166 (110.242.66.166)  65.619 ms 110.242.66.170 (110.242.66.170)  65.541 ms *
 8  110.242.66.178 (110.242.66.178)  20.313 ms 221.194.45.134 (221.194.45.134)  20.487 ms 110.242.66.182 (110.242.66.182)  19.403 ms
 9  221.194.45.134 (221.194.45.134)  22.095 ms * 221.194.45.130 (221.194.45.130)  19.838 ms

.....
29  * * *
30  * * *

veranschaulichen:

Die Datensätze beginnen gemäß der Sequenznummer bei 1. Jeder Datensatz ist ein Hop, und jeder Hop stellt ein Gateway dar. Wir sehen, dass einige Zeilen dreimal vorhanden sind und die Einheit ms ist, was tatsächlich der Standardparameter von -q ist. Nachdem das Erkennungspaket drei Pakete an jedes Gateway gesendet hat, antwortet das Gateway und gibt die Zeit zurück. Wenn Sie Traceroute -q 4 www.58.com verwenden, bedeutet dies, dass 4 Pakete an jedes Gateway gesendet werden.

Wenn wir einen Host verfolgen, sehen wir manchmal einige Zeilen, die durch Sternchen dargestellt werden. In diesem Fall blockiert die Firewall möglicherweise die ICMP-Rückgabeinformationen, sodass wir keine relevanten Paketrückgabedaten erhalten können.

Beispiel 2: Einstellung der Hop-Anzahl

Befehl: Routing so begrenzen, dass es nach 10 Hops stoppt

traceroute -m 10 www.baidu.com

Ausgabe:

[root@hdp105 ~]# traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 10 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  124.89.90.205 (124.89.90.205)  5.417 ms  5.530 ms  5.287 ms
 4  123.139.1.29 (123.139.1.29)  1.992 ms 123.139.1.177 (123.139.1.177)  1.968 ms 123.139.2.161 (123.139.2.161)  1.945 ms
 5  * 221.11.0.1 (221.11.0.1)  2.090 ms *
 6  219.158.111.233 (219.158.111.233)  35.322 ms 221.11.0.69 (221.11.0.69)  28.003 ms *
 7  219.158.111.233 (219.158.111.233)  33.298 ms  33.255 ms *
 8  221.194.45.130 (221.194.45.130)  20.088 ms 110.242.66.170 (110.242.66.170)  20.029 ms 221.194.45.130 (221.194.45.130)  20.582 ms
 9  * * 221.194.45.134 (221.194.45.134)  21.801 ms
10  * * *
[root@hdp105 ~]# 

Beispiel 3: Legen Sie die Anzahl der Erkennungspakete fest

Befehl: Begrenzen Sie die Route auf 10 Hops und senden Sie 4 Probe-Pakete an jeden Hop.

[root@hdp105 ~]# traceroute -q 4 -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.3), 10 hops max, 60 byte packets
 1  * * * *
 2  * * * *
 3  124.89.90.205 (124.89.90.205)  3.536 ms  3.507 ms  2.734 ms  3.425 ms
 4  * * * 123.139.2.37 (123.139.2.37)  2.599 ms
 5  221.11.0.1 (221.11.0.1)  2.756 ms  2.727 ms  5.096 ms  7.570 ms
 6  * 221.11.0.169 (221.11.0.169)  22.440 ms 221.11.0.69 (221.11.0.69)  27.588 ms *
 7  * 110.242.66.186 (110.242.66.186)  25.913 ms 219.158.111.233 (219.158.111.233)  21.579 ms 110.242.66.178 (110.242.66.178)  20.378 ms
 8  221.194.45.130 (221.194.45.130)  23.732 ms 110.242.66.162 (110.242.66.162)  20.793 ms 221.194.45.130 (221.194.45.130)  20.476 ms  23.077 ms
 9  221.194.45.134 (221.194.45.134)  24.247 ms * * *
10  * * * *
[root@hdp105 ~]# 

Wie in der folgenden Abbildung dargestellt, können Sie die Zeit sehen, die zum Senden von 4 Testpaketen und zum Ausgeben von 4 Paketen benötigt wird.

Beispiel 4: IP-Adresse anzeigen, ohne den Hostnamen zu überprüfen

Befehl:

traceroute -n -m 10 www.baidu.com

Ausgabe:

Beispiel 5: Umgehen der normalen Routing-Tabelle und direktes Senden an den mit dem Netzwerk verbundenen Host

Befehl:

traceroute -r www.baidu.com

Ausgabe:

Beispiel 6: Der vom Erkennungspaket verwendete grundlegende UDP-Port ist auf 6888 eingestellt

Befehl:

traceroute -p 6888 www.baidu.com

Ausgabe:

[root@hdp105 ~]# traceroute -p 6888 -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 10 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  124.89.90.205 (124.89.90.205)  2.079 ms  2.502 ms  2.440 ms
 4  123.139.0.85 (123.139.0.85)  2.280 ms 123.139.2.161 (123.139.2.161)  1.945 ms 123.139.1.29 (123.139.1.29)  2.212 ms
 5  * 221.11.0.53 (221.11.0.53)  27.007 ms *
 6  221.11.0.97 (221.11.0.97)  22.444 ms * *
 7  110.242.66.170 (110.242.66.170)  20.305 ms * *
 8  110.242.66.174 (110.242.66.174)  20.119 ms 221.194.45.130 (221.194.45.130)  19.840 ms 221.194.45.134 (221.194.45.134)  21.036 ms
 9  * 221.194.45.130 (221.194.45.130)  20.001 ms *
10  * * *
[root@hdp105 ~]# 

Referenzartikel:

[Linux] Detaillierte Erläuterung des Netzwerkdiagnose-Ping command_linux ping-CSDN-Blogs

Traceroute-Befehl, ausführliche Erläuterung des Linux-Traceroute-Befehls: Anzeigen des Pfads zwischen Datenpaketen und Hosts - Linux-Befehlssuchmaschine

Linux-Befehl: Traceroute-Befehl (Routenverfolgung) – CSDN-Blog

Ursprünglicher Link: Linux-Netzwerkbefehl – ​​ausführliche Erklärung des Befehls „traceroute_traceroute“ – CSDN-Blog

Dynamische Illustration | 9 Minuten, um das Prinzip und die Implementierung von Traceroute (Routenverfolgung) klar zu verstehen

Ich denke du magst

Origin blog.csdn.net/qq_35995514/article/details/135594855
Empfohlen
Rangfolge