Netzwerkdiagnose mit Traceroute und Tracepath
Die Netzwerkdiagnose ist ein fundamentaler Bestandteil der Arbeit eines jeden Netzwerk- oder Systemadministrators. Sie umfasst die Analyse und Behebung verschiedenster Probleme, die in einem Netzwerk auftreten können.
Die Kenntnis des Weges, den ein Datenpaket in einem Netzwerk zwischen zwei Kommunikationspunkten nimmt, liefert wertvolle Einsichten für erfahrene Fachkräfte.
Ein weit verbreitetes und häufig genutztes Tool für diese Art der Netzwerkanalyse und Fehlerbehebung ist Traceroute, welches auf verschiedenen Betriebssystemen funktioniert.
Vereinfacht gesagt, verfolgt Traceroute die Strecke, die ein IP-Paket zwischen Absender und Empfänger zurücklegt. Dies geschieht durch das Senden von Testpaketen, typischerweise ICMP ECHO oder TCP SYN, und das anschließende Abwarten von ICMP-Antworten vom Typ „Zeitüberschreitung“. Die TTL (Time-To-Live) dieser Pakete wird bewusst auf eins gesetzt und dann inkrementiert, bis entweder eine ICMP-Nachricht „Port Unreachable“ eintrifft, was bedeutet, dass der Zielhost erreicht ist, oder der maximale Hop-Wert (standardmäßig 30) erreicht wird.
Ein typisches Beispiel für die Ausgabe von Traceroute sieht so aus:
$ traceroute google.com traceroute to google.com (172.217.169.14), 30 hops max, 60 byte packets 1 140.91.200.22 (140.91.200.22) 0.129 ms 140.91.200.19 (140.91.200.19) 0.151 ms 140.91.200.77 (140.91.200.77) 0.114 ms 2 linxbgp1.iwscloud.com (195.66.226.34) 0.735 ms 0.701 ms 1.024 ms 3 195.66.224.125 (195.66.224.125) 0.603 ms 0.591 ms 0.591 ms 4 108.170.246.129 (108.170.246.129) 0.583 ms 0.745 ms 0.714 ms 5 209.85.241.95 (209.85.241.95) 1.576 ms 209.85.241.93 (209.85.241.93) 1.545 ms 209.85.241.95 (209.85.241.95) 1.520 ms 6 lhr25s26-in-f14.1e100.net (172.217.169.14) 0.584 ms 0.547 ms 0.507 ms $
Die Standardausgabe von Traceroute zeigt die TTL, auch bekannt als Roundtrip-Zeit, von drei Paketen, die maximale Anzahl der Hops und die Paketgröße in Bytes, sowie die IP-Adresse und den aufgelösten Domainnamen, falls verfügbar.
Traceroute ist ein wertvolles Werkzeug, um Verzögerungen bei der Antwort und das Routing zwischen zwei Knotenpunkten zu identifizieren. Darüber hinaus hilft es, Fehlerstellen auf dem Pfad zum Ziel zu lokalisieren. Es ist jedoch wichtig zu beachten, dass viele Firewalls und Router Traceroute-Nachrichten im Internet blockieren, was zu unvollständigen oder falschen Ausgaben führen kann.
Es gibt zwar Möglichkeiten, diese Einschränkungen durch Anpassung der Art der Testnachrichten zu umgehen, aber diese sind oft nicht vollständig erfolgreich. Daher sollte man sich dieser Limitierungen bei der Verwendung des Tools bewusst sein.
Einige Optionen von Traceroute erfordern erhöhte Benutzerrechte, da sie Änderungen an den Rohpaketen vornehmen.
Der Befehl Tracepath
Bei Red Hat Enterprise Linux (RHEL) 8 und davon abgeleiteten Linux-Distributionen ist der Befehl `traceroute` standardmäßig nicht installiert. Dies kann für Benutzer, die das Tool aus früheren Versionen von Red Hat Linux oder CentOS kennen, eine große Veränderung darstellen.
Als Alternative steht auf RHEL8 standardmäßig der ebenso leistungsfähige Befehl `tracepath` zur Verfügung. Dieser Befehl bietet ähnliche Funktionen wie `traceroute` und ist direkt nach der Installation des Betriebssystems nutzbar.
Zusätzlich unterstützt `tracepath` die MTU-Option, die es ermöglicht, die Maximum Transmission Unit zu ermitteln – also die Größe des größten Datenpakets, das über das Netzwerk gesendet werden kann.
Ein Beispiel für eine typische `tracepath`-Ausgabe sieht wie folgt aus:
$ tracepath 131.153.76.66 1?: [LOCALHOST] pmtu 9000 1: 140.91.200.23 0.416ms asymm 2 1: 140.91.200.23 0.239ms asymm 2 2: 140.91.200.74 0.194ms pmtu 1500 2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.344ms 3: ldn-b7-link.ip.twelve99.net 19.996ms asymm 2 4: ldn-bb1-link.ip.twelve99.net 0.803ms asymm 5 5: prs-bb1-link.ip.twelve99.net 8.548ms asymm 6 6: mei-b5-link.ip.twelve99.net 18.111ms asymm 5 7: no reply 8: phoenix-svc071932-ic358857.ip.twelve99-cust.net 179.691ms asymm 7 9: 131.153.47.139 163.358ms asymm 8 10: no reply 11: 131.153.76.66 159.071ms !H Resume: pmtu 1500 $
Die Standardausgabe von `tracepath` zeigt die TTL, auch bekannt als Roundtrip-Zeit eines Pakets, die MTU, die über das Netzwerk gesendet werden kann, sowie, wenn möglich, den aufgelösten Domainnamen.
Syntax von Tracepath
Die allgemeine Syntax für die Verwendung des `tracepath`-Befehls lautet:
$ tracepath <Optionen> <Ziel DNS oder IP>
#1. Ohne zusätzliche Parameter gibt `tracepath` den Weg zum Ziel aus, wie unten dargestellt:
$ tracepath 131.153.56.85 1?: [LOCALHOST] pmtu 9000 1: 140.91.200.77 0.226ms asymm 2 1: 140.91.200.79 0.497ms asymm 2 2: 140.91.200.74 0.216ms pmtu 1500 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.691ms 3: slou-b1-link.ip.twelve99.net 1.249ms asymm 2 4: ldn-bb4-link.ip.twelve99.net 0.749ms asymm 3 5: nyk-bb1-link.ip.twelve99.net 80.617ms asymm 8 6: rest-bb1-link.ip.twelve99.net 153.250ms asymm 21 7: nyk-bb1-link.ip.twelve99.net 83.084ms asymm 6 8: nash-bb1-link.ip.twelve99.net 280.770ms asymm 9 9: no reply 10: dls-b23-link.ip.twelve99.net 110.820ms asymm 9 11: phx-b1-link.ip.twelve99.net 131.524ms 12: phx-b1-link.ip.twelve99.net 131.632ms asymm 11 13: giglinx-ic305413-phx-b1.ip.twelve99-cust.net 132.583ms asymm 12 14: no reply 15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.685ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.245ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.809ms reached Resume: pmtu 1500 hops 19 back 8 $
#2. Um nur die IP-Adresse anzuzeigen, kann der Parameter `-n` verwendet werden:
$ tracepath -n 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.74 0.393ms asymm 2 1: 140.91.200.21 0.180ms asymm 2 2: 213.248.69.255 0.576ms 3: 213.248.98.246 1.210ms asymm 2 4: 62.115.117.122 1.371ms asymm 3 5: 62.115.133.239 141.920ms asymm 20 6: 62.115.141.244 77.732ms asymm 7 7: no reply 8: 62.115.137.55 881.711ms asymm 9 9: no reply 10: 62.115.137.55 914.855ms asymm 9 11: 62.115.125.97 132.182ms 12: 62.115.125.97 131.686ms asymm 11 13: 62.115.42.6 133.132ms asymm 12 14: no reply 15: 62.115.42.10 143.880ms asymm 12 16: 4.14.13.150 134.869ms asymm 4 17: no reply 18: 4.14.13.150 145.263ms asymm 4 19: 131.153.56.85 133.636ms reached Resume: pmtu 1500 hops 19 back 8 $
#3. Um sowohl Hostnamen als auch IP-Adressen anzuzeigen, wird der Parameter `-b` verwendet:
$ tracepath -b 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.19 (140.91.200.19) 0.197ms asymm 2 1: 140.91.200.74 (140.91.200.74) 0.141ms asymm 2 2: oracle-svc071175-lag003322.ip.twelve99-cust.net (213.248.98.247) 1.186ms 3: slou-b1-link.ip.twelve99.net (213.248.98.246) 10.273ms asymm 2 4: ldn-bb4-link.ip.twelve99.net (62.115.141.246) 0.941ms asymm 3 5: prs-bb2-link.ip.twelve99.net (62.115.133.239) 141.858ms asymm 20 6: rest-bb1-link.ip.twelve99.net (62.115.141.244) 76.210ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net (62.115.141.244) 89.209ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net (62.115.136.119) 110.335ms asymm 9 11: phx-b1-link.ip.twelve99.net (62.115.125.97) 132.091ms 12: phx-b1-link.ip.twelve99.net (62.115.125.97) 131.844ms asymm 11 13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net (80.239.195.78) 142.975ms asymm 14 14: no reply 15: no reply 16: PHOENIX-NAP.ear3.Chicago2.Level3.net (4.14.13.150) 135.233ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com (131.153.56.85) 133.871ms reached Resume: pmtu 1500 hops 19 back 8 $
#4. Um eine benutzerdefinierte Paketlänge zu definieren, anstatt die Standardlänge von 65535 Byte zu verwenden, kann der Wert mit dem Flag `-l` angegeben werden:
$ tracepath -l 300 131.153.56.85 1: 140.91.200.77 0.405ms asymm 2 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.589ms 3: slou-b1-link.ip.twelve99.net 1.448ms asymm 2 4: ldn-bb4-link.ip.twelve99.net 0.960ms asymm 3 5: nyk-bb1-link.ip.twelve99.net 81.564ms asymm 8 6: rest-bb1-link.ip.twelve99.net 78.414ms asymm 7 7: nyk-bb1-link.ip.twelve99.net 84.286ms asymm 6 8: rest-bb1-link.ip.twelve99.net 87.529ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 110.534ms asymm 9 11: phx-b1-link.ip.twelve99.net 131.449ms 12: phx-b1-link.ip.twelve99.net 131.303ms asymm 11 13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net 143.059ms asymm 14 14: phx-b1-link.ip.twelve99.net 142.348ms asymm 11 15: giglinx-ic--305416-phx-b1.ip.twelve99-cust.net 143.554ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.790ms asymm 4 17: no reply 18: PHOENIX-NAP.ear3.Chicago2.Level3.net 145.926ms asymm 4 19: speedchi.phoenixnap.com 133.736ms reached Resume: pmtu 300 hops 19 back 8 $
#5. Der initiale Zielport kann mit dem Flag `-p` definiert werden:
$ tracepath -p 9000 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.18 0.160ms asymm 2 1: 140.91.200.74 0.177ms asymm 2 2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.151ms 3: slou-b1-link.ip.twelve99.net 1.727ms asymm 2 4: no reply 5: nyk-bb1-link.ip.twelve99.net 81.357ms asymm 8 6: rest-bb1-link.ip.twelve99.net 78.325ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net 87.908ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 109.797ms asymm 9 11: phx-b1-link.ip.twelve99.net 132.036ms 12: dls-b23-link.ip.twelve99.net 121.404ms asymm 9 13: giglinx-ic315450-phx-b1.ip.twelve99-cust.net 136.322ms asymm 12 14: phx-b1-link.ip.twelve99.net 142.596ms asymm 11 15: no reply 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.182ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.562ms reached Resume: pmtu 1500 hops 19 back 8 $
#6. Die maximale Anzahl an Hops, die standardmäßig auf 30 eingestellt ist, kann mit dem Flag `-m` angepasst werden:
$ tracepath -m 20 131.153.56.85 1?: [LOCALHOST] pmtu 1500 1: 140.91.200.18 0.175ms asymm 2 1: 140.91.200.77 0.169ms asymm 2 2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.669ms 3: slou-b1-link.ip.twelve99.net 2.443ms asymm 2 4: no reply 5: prs-bb2-link.ip.twelve99.net 142.778ms asymm 20 6: rest-bb1-link.ip.twelve99.net 76.756ms asymm 7 7: no reply 8: rest-bb1-link.ip.twelve99.net 89.272ms asymm 7 9: no reply 10: dls-b23-link.ip.twelve99.net 110.378ms asymm 9 11: phx-b1-link.ip.twelve99.net 132.582ms 12: phx-b1-link.ip.twelve99.net 132.135ms asymm 11 13: phx-b1-link.ip.twelve99.net 142.154ms asymm 11 14: no reply 15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.298ms asymm 12 16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.362ms asymm 4 17: no reply 18: no reply 19: speedchi.phoenixnap.com 133.474ms reached Resume: pmtu 1500 hops 19 back 8 $
Es ist wichtig zu wissen, dass `tracepath`, im Gegensatz zu `traceroute`, keine erhöhten Superuser-Privilegien benötigt, da es keine erweiterten Paketänderungen erlaubt.
Zusammenfassung
In diesem Artikel haben wir die Verwendung des `traceroute`-Befehls zur Fehlerbehebung in Netzwerken zusammengefasst und gezeigt, wie man dieselben Aufgaben mit dem `tracepath`-Befehl auf RHEL8-Systemen ausführen kann.
Für weitere Details und Informationen über diese Befehle konsultieren Sie bitte die entsprechenden Manpages:
$ man traceroute $ man tracepath