Der Befehl "traceroute" wird in Linux verwendet, um die Route eines Informationspakets von seiner Quelle zu seinem Zielort abzubilden. Traceroute kann beispielsweise verwendet werden, wenn Datenverluste in einem Netzwerk auftreten, die auf einen ausgefallenen Knoten hindeuten können.
Da jeder Hop im Datensatz einen neuen Server oder Router zwischen dem ursprünglichen PC und dem beabsichtigten Ziel darstellt, können Sie bei der Überprüfung der Ergebnisse eines Traceroute-Scans auch langsame Punkte identifizieren, die den Netzwerkverkehr beeinträchtigen können.
Wie es funktioniert
Wenn Sie die bestimmte Route auswerten, der der Netzwerkverkehr folgt (oder das fehlerhafte Gateway finden, durch das Ihre Pakete verworfen werden), ergeben sich mehrere Probleme bei der Problembehandlung. Traceroute verwendet das IP-Protokoll Zeit zu leben Feld, um eine ICMP TIME_EXCEEDED-Antwort von jedem Gateway entlang des Pfads zu einem Zielhost anzufordern.
Der einzige Parameter, den Sie bei der Ausführung des Befehls traceroute angeben müssen, ist der Hostname oder die IP-Adresse des Ziels.
Traceroute-Syntax und -Switches
Traceroute -dFInrvx -f first_ttl -G Tor -ich iface -m max_ttl -p Hafen -q Anfragen -s src_addr -t tos -w Wartezeit -z pausemsecs Wirt packetlen
Während der Traceroute-Befehl oben beschrieben werden muss, um in der Befehlszeile zu arbeiten, kann die Leistung oder Ausgabe des Befehls geändert werden, indem ein oder mehrere optionale Schalter angegeben werden.
- -f: Legen Sie die anfängliche Lebensdauer für das erste ausgehende Testpaket fest.
- -F: Setzen Sie das Bit "Nicht fragmentieren".
- -d: Aktivieren Sie das Debugging auf Sockelebene.
- -G: Geben Sie ein lockeres Quellrouten-Gateway an (maximal 8).
- -ich: Geben Sie eine Netzwerkschnittstelle an, um die Quell-IP-Adresse für ausgehende Testpakete zu erhalten. Dies ist normalerweise nur bei einem mehrfach vernetzten Host nützlich. (Siehe die-s Flag für eine andere Möglichkeit, dies zu tun.)
- -ICH: Verwenden Sie ICMP ECHO anstelle von UDP-Datagrammen.
- -m: Legen Sie die maximale Lebensdauer (max. Anzahl von Hops) fest, die in ausgehenden Testpaketen verwendet wird. Der Standardwert ist 30 Hops (derselbe Standardwert, der für TCP-Verbindungen verwendet wird).
- -n: Drucken Sie Hop-Adressen numerisch anstatt symbolisch und numerisch (speichert eine Namenserver-Suche nach Namen für jedes Gateway, das im Pfad gefunden wird).
- -p: Legen Sie die Basis-UDP-Portnummer fest, die in Sonden verwendet wird (Standard ist 33434). Traceroute hofft, dass auf UDP-Ports nichts überwacht wird Base zu base + nhops - 1 auf dem Zielhost (daher wird eine ICMP-Nachricht PORT_UNREACHABLE zurückgegeben, um die Routenverfolgung zu beenden). Wenn etwas an einem Port im Standardbereich empfangsbereit ist, kann mit dieser Option ein nicht verwendeter Portbereich ausgewählt werden.
- -r: Umgehen Sie die normalen Routingtabellen und senden Sie sie direkt an einen Host in einem angeschlossenen Netzwerk. Wenn sich der Host nicht in einem direkt angeschlossenen Netzwerk befindet, wird ein Fehler zurückgegeben. Diese Option kann verwendet werden, um einen lokalen Host über eine Schnittstelle zu pingen, für die keine Route vorhanden ist (z. B. nachdem die Schnittstelle abgelegt wurde) geroutet (8C)).
- -s: Verwenden Sie die folgende IP-Adresse (die normalerweise als IP-Adresse und nicht als Hostname angegeben wird) als Quelladresse in ausgehenden Testpaketen. Bei mehrfach vernetzten Hosts (mit mehr als einer IP-Adresse) kann diese Option verwendet werden, um zu erzwingen, dass die Quelladresse eine andere Adresse ist als die IP-Adresse der Schnittstelle, auf der das Testpaket gesendet wird. Wenn die IP-Adresse keine der Schnittstellenadressen dieses Geräts ist, wird ein Fehler zurückgegeben und nichts gesendet. (Siehe die-ich Flag für eine andere Möglichkeit, dies zu tun.)
- -t: Stellen Sie das ein Art der Leistung in Prüfpaketen auf den folgenden Wert (Standardwert null). Der Wert muss eine dezimale Ganzzahl im Bereich von 0 bis 255 sein. Mit dieser Option können Sie feststellen, ob unterschiedliche Diensttypen zu unterschiedlichen Pfaden führen. (Wenn Sie keine 4,4bsd ausführen, kann dies akademisch sein, da Sie mit den normalen Netzwerkdiensten wie Telnet und ftp die TOS nicht steuern können.) Nicht alle TOS-Werte sind legal oder sinnvoll - die Definitionen finden Sie in der IP-Spezifikation. Nützliche Werte sind wahrscheinlich `-t 16 '(geringe Verzögerung) und `-t 8 '(hoher Durchsatz).
- -v: Ausführliche Ausgabe Empfangene ICMP-Pakete mit Ausnahme von TIME_EXCEEDED und UNREACHABLE werden aufgelistet.
- -w: Legen Sie die Zeit (in Sekunden) fest, in der auf eine Antwort auf einen Test gewartet werden soll (Standardeinstellung 5 Sekunden).
- -x: IP-Prüfsummen umschalten Normalerweise verhindert Traceroute, dass die IP-Prüfsummen berechnet werden. In einigen Fällen kann das Betriebssystem Teile des abgehenden Pakets überschreiben, die Prüfsumme jedoch nicht neu berechnen. Daher wird in einigen Fällen standardmäßig keine Prüfsumme berechnet und verwendet-x bewirkt, dass sie berechnet werden. Beachten Sie, dass Prüfsummen normalerweise für den letzten Sprung erforderlich sind, wenn Sie ICMP-ECHO-Sonden verwenden (-ICH), so werden sie bei Verwendung von ICMP immer berechnet.
- -z: Stellen Sie die Zeit (in Millisekunden) ein, die zwischen den Sonden angehalten werden soll (Standardeinstellung 0). Einige Systeme wie Solaris und Router von Cisco beschränken die ICMP-Meldungen. Ein guter Wert für die Verwendung ist 500 (z. B. 1/2 Sekunde).
Interpretation der Ergebnisse
Traceroute umreißt den Pfad, den ein IP-Paket zu einem Internet-Host verfolgt, indem UDP-Prüfpakete mit einer kleinen TTL (time to live) gestartet werden und dann auf eine ICMP-Antwort "Time over Time" von einem Gateway gewartet wird. Wir beginnen unsere Tests mit einer TTL von eins und erhöhen sich um eins, bis wir einen ICMP-Port ("Port unerreichbar") erhalten (dh das Paket ist am Ziel angekommen) oder einen maximalen Wert für Versuche erreichen, der standardmäßig 30 Hops umfasst und mit geändert werden kann das-m Flagge.
Wenn Traceroute ausgeführt wird, sendet es bei jeder TTL-Einstellung drei Sonden und gibt an die Konsole eine Zeile aus, die die TTL, die Adresse des Gateways und die Umlaufzeit jeder Sonde anzeigt. Wenn die Testantworten von verschiedenen Gateways stammen, wird die Adresse jedes antwortenden Systems gedruckt. Wenn innerhalb eines Zeitintervalls von fünf Sekunden keine Antwort erfolgt (wird mit geändert-w flag) wird ein Sternchen für diese Sonde gedruckt.
Um zu verhindern, dass der Zielhost durch die UDP-Probe-Paketverarbeitung überfordert wird, wird der Zielport auf einen Wert festgelegt, der wahrscheinlich nicht von diesem Gerät verwendet wird. Wenn ein Netzwerk oder ein Dienst am Ziel diesen Port verwendet, ändern Sie den Wert mit-p Flagge.
Bei Verwendung und Ausgabe eines Beispiels werden ähnliche Ergebnisse wie in diesem Beispiel angezeigt:
yak 71% traceroute nis.nsf.net. traceroute nach nis.nsf.net (35.1.1.48), max. 30 Hops, 38 Byte Paket 1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32. 216.1) 39 ms 39 ms 19 ms 3 lilac-dmc.Berkel.EDU (128.32.216.1) 39 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms 5 ccn -nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms 8 ms 129.140. 70,13 (129.140.70.13) 99 ms 99 ms 80 ms 9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms 10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms 11 nic.merit.edu (35.1 .1.48) 239 ms 239 ms 239 ms
Beachten Sie, dass die zweite und dritte Zeile gleich sind. Dieses Ergebnis bezieht sich auf einen fehlerhaften Kernel auf dem Second-Hop-System - lbl-csam.arpa -, der Pakete mit einer Null-TTL weiterleitet (ein Fehler in der verteilten Version von 4.3 BSD). Sie müssen erraten, welchen Pfad die Pakete quer durch die Länder nehmen, da das NSFNet (129.140) keine Adress-zu-Name-Übersetzungen für seine NSSs bereitstellt.
Ein interessanteres Beispiel ist:
yak 72% traceroute allspice.lcs.mit.edu. traceroute nach allspice.lcs.mit.edu (18.26.0.115), 30 Hops max. 1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms 5 ccn-nerif22 Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms 6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms 7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms 8 129.140.70.13 ( 129.140.70.13) 80 ms 79 ms 99 ms 9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms 10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms 11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms 12 * * * 13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms 14 * * * 15 * * 16 * * 17 * * * 18 ALLSPICE.LCS.MIT.EDU (18.26 .0.115) 339 ms 279 ms 279 ms
Beachten Sie, dass die Gateways bei 12, 14, 15, 16 und 17 Hops entfernt entweder keine ICMP-Nachrichten mit "Zeitüberschreitung" senden oder sie mit einer zu kleinen TTL senden, um uns zu erreichen. Die Zeilen 14 bis 17 führen den MIT C Gateway-Code aus, der keine "Zeitüberschreitung" -Nachrichten sendet.
Das stille Gateway 12 in dem obigen Beispiel kann das Ergebnis eines Fehlers im 4. 23 BSD-Netzwerkcode und seinen Ableitungen sein: Maschinen, auf denen 4.3-Code ausgeführt wird, und zuvor eine nicht erreichbare Nachricht senden, wobei die TTL verwendet wird, die im ursprünglichen Datagramm verbleibt. Da bei Gateways die verbleibende TTL gleich Null ist, wird die ICMP-Zeitüberschreitung garantiert nicht zu uns zurückkehren. Das Verhalten dieses Fehlers ist etwas interessanter, wenn er auf dem Zielsystem angezeigt wird:
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms 2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms 3 lilac-dmc.Berkeley.EDU (128.32.216.1 ) 19 ms 39 ms 19 ms 4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms 5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms 6 csgw. Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms 7 * * * 8 * * 9 * * 10 * * 11 * * 12 * * * 13 Rip.Berkeley.EDU (128.32.131.22) 59 Frau ! 39 ms! 39 ms!
Beachten Sie, dass es 12 "Gateways" gibt (13 ist das endgültige Ziel) und die letzte Hälfte fehlt. Was wirklich passiert ist, dass der Server benannt wurde Ruhe in Frieden (ein Sun-3 mit Sun OS 3.5) verwendet die TTL aus unserem ankommenden Datagramm als TTL in seiner ICMP-Antwort. Die Antwort wird also auf dem Rückweg (ohne Benachrichtigung an jemanden, da keine ICMPs nach ICMPs gesendet werden) auf dem Rückweg abgemeldet, bis wir mit einer TTL prüfen, die mindestens doppelt so lang ist wie die Weglänge. Mit anderen Worten, der Rip ist wirklich nur sieben hüpft davon.
Eine Antwort mit einer TTL von 1 ist ein Hinweis, dass dieses Problem vorliegt. Traceroute druckt ein "!" nach der Zeit, wenn die TTL kleiner oder gleich 1 ist. Da viele Hersteller veraltete (DECs Ultrix, Sun 3.x) - oder Nicht-Standard-Software (HPUX) liefern, sollten Sie dieses Problem häufig sehen und die Auswahl treffen Zielhost Ihrer Sonden.
Andere mögliche Anmerkungen nach der Zeit sind! H, ! N, oder! P (Host, Netzwerk oder Protokoll nicht erreichbar),! S (Quellroute fehlgeschlagen),! F- (Fragmentierung erforderlich - der MTU-Erkennungswert für RFC1191-Pfade wird angezeigt.)! X (verwaltungstechnisch untersagt)! V (Verstoß gegen Host-Vorrang),! C (Vorrang der Abschaltung) oder! (ICMP-Code nicht erreichbar). Diese Codes werden durch RFC1812 definiert, der RFC1716 ersetzt. Wenn fast alle Tests zu einer Art nicht erreichbarem Host führen, wird Traceroute aufgeben und das Programm beenden.
Dieses Programm ist für den Test, die Messung und das Management von Netzwerken vorgesehen. Es sollte hauptsächlich zur manuellen Fehlerisolierung verwendet werden. Aufgrund der Last, die das Netzwerk möglicherweise belastet, ist es unklug, Traceroute während des normalen Betriebs oder von automatisierten Skripts zu verwenden.