Linux Netzwerk Analyse mit traceroute

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Das Linux Tool traceroute bietet viele Möglichkeit den Weg von Netzwerk-Paketen durch ein Netzwerk bzw. durch das Internet hin zu einem bestimmten Host nachzuvollziehen. Dieser Artikel gibt einen Überblick über die Funktionsweise von traceroute. Außerdem zeigen wir hier interessante Optionsparameter für traceroute. Ergänzend zu traceroute ist oft auch mtr interessant. Es kombiniert die Funktionalität von traceroute und ping.

Funktionsweise

Traceroute verfolgt den Weg von Netzwerk-Paketen hin zu einem bestimmten Host. Dazu verändert traceroute das time-to-live (TTL) Feld des IP Protokolls. Durch kleine TTL Werte versucht traceroute ICMP TIME_EXCEEDED Antworten der einzelnen Router zu bekommen. Der einzige notwendige Parameter von traceroute ist der Host zu dem der Weg aufgezeigt werden soll.

Für das Erfassen der einzelnen Hops (Router) am Weg vom aktuellen Rechner hin zum gewünschten Host geht traceroute folgendermaßen vor:

  1. Zuerst verschickt es ein IP Paket mit TTL=1. Damit verwirft bereits der erste Router (das Default Gateway) das Paket und schickt eine ICMP TIME_EXCEEDED Antwort zurück.
  2. Nun verschickt traceroute weitere Pakete und erhöht dabei die TTL sukzessive jeweils um 1. Beim zweiten Paket (TTL=2) gelangt das Paket zuerst über das Default Gateway weiter zum nächsten Router am Weg zum Host. Da das Default Gateway beim Weiterleiten des Pakets die TTL um 1 verringert, kommt das Paket mit TTL=1 am zweiten Router an. Dieser verwirft das Paket und schickt eine ICMP TIME_EXCEEDED Antwort an den ursprünglichen Rechner zurück. Analog funktioniert es dann mit TTL=3 beim dritten Router, TTL=4 beim vierten Router, usw.
  3. Erreicht ein IP Paket mit ausreichend hoher TTL schließlich den Ziel-Host, antwortet er mit einer ICMP "port unreachable" Meldung.

Methoden der Testpakte

Für die verschickten IP Testpakete können unterschiedliche Protokolle genützt werden. Durch diese Möglichkeiten kann man auch bei restriktiven Firewall-Konfigurationen Testpakete verschicken. Außerdem kann man auf diese Art genau den Weg verfolgen, der für ein bestimmtes Protokoll verwendet wird (für den Fall dass irgendwo im Pfad ja nach Protokoll Pakete unterschiedlich geroutet werden).

UDP (default)

In der Standard-Konfiguration weren UDP Datagramme als IP Testpakete verwendet. Dabei wird ein 'unwahrscheinlicher' Port genutzt. Dieser wurde mit Port 33434 ausgehend gewählt und wird um 1 für folgende Testpakte jeweils erhöht.

Diese Methode kann von einem beliebigen Benutzer verwendet werden und erfordert keine root-Rechte.

Beispiel (die ersten drei Hops wurden anonymisiert):

[root@tpw ~]# traceroute www.google.com
traceroute to www.google.com (209.85.129.147), 30 hops max, 60 byte packets
 1  XXX (XXX)  1.929 ms  1.982 ms  2.141 ms
 2  XXX (XXX)  3.795 ms  3.769 ms  3.751 ms
 3  XXX (XXX)  5.673 ms  5.650 ms  5.634 ms
 4  iix12-aux11.highway.telekom.at (195.3.70.206)  21.027 ms 195.3.118.50 (195.3.118.50)  21.025 ms  21.328 ms
 5  72.14.198.241 (72.14.198.241)  21.436 ms  21.406 ms  21.401 ms
 6  209.85.255.176 (209.85.255.176)  21.497 ms 209.85.255.178 (209.85.255.178)  23.380 ms  23.300 ms
 7  72.14.232.165 (72.14.232.165)  23.301 ms  21.613 ms 72.14.232.201 (72.14.232.201)  21.661 ms
 8  72.14.239.170 (72.14.239.170)  21.678 ms 72.14.233.210 (72.14.233.210)  34.381 ms  34.365 ms
 9  fk-in-f147.1e100.net (209.85.129.147)  19.659 ms  19.280 ms  19.291 ms
[root@tpw ~]# 

ICMP (-I)

Diese Methode verwendet ICMP echo requests ('Ping') zum Testen.

Diese Methode erfordert superuser-Rechte.

Beispiel (die ersten drei Hops wurden anonymisiert):

[root@tpw ~]# traceroute -I www.google.com
traceroute to www.google.com (209.85.129.147), 30 hops max, 60 byte packets
 1  XXX (XXX)  1.948 ms  2.022 ms  2.202 ms
 2  XXX (XXX)  3.915 ms  3.918 ms  3.929 ms
 3  XXX (XXX)  5.870 ms  5.876 ms  5.889 ms
 4  iix12-aux11.highway.telekom.at (195.3.70.206)  17.967 ms  19.781 ms  19.784 ms
 5  72.14.198.241 (72.14.198.241)  19.869 ms  19.867 ms  19.915 ms
 6  209.85.255.178 (209.85.255.178)  20.044 ms  19.502 ms  19.470 ms
 7  72.14.232.201 (72.14.232.201)  19.529 ms  19.523 ms 72.14.232.203 (72.14.232.203)  19.532 ms
 8  72.14.233.210 (72.14.233.210)  27.065 ms  34.198 ms  34.165 ms
 9  fk-in-f147.1e100.net (209.85.129.147)  18.249 ms  19.352 ms  17.936 ms
[root@tpw ~]# 

TCP (-T)

Diese Methode verwendet einen fixen TCP Port (Port 80 ist default). Mit der Option -p kann auch ein anderer Zielport gewählt werden (z.B. -p 25 um den Weg hin zu einem Mailserver zu überprüfen). Damit kommt man auch durch Firewalls, die etwa UDP Datagramme oder ICMP Nachrichten nicht durch lassen.

Diese Methode verwendet die "half-open technique". Damit sehen die Zielapplikationen (z.B. ein Webserver wenn die Testpakete an Port 80 geschickt werden) die Testpakete nicht. Im Normalfall wird einfach ein TCP SYN Paket verschickt. Lauscht am Ziel-Host keine Applikation auf diesem Port kommt einfach ein TCP RESET zurück. Wenn eine Applikation am Ziel-Host aber lauscht, schickt der Ziel-Host ein TCP SYN+ACK zurück. Traceroute antwortet darauf dann aber mit einem TCP RESET (statt die Verbindung mit einem TCP ACK zu akzeptieren). Auf diese Art wird die TCP Session verworfen ohne dass die Applikation am Ziel-Host davon etwas mitbekommt.

Diese Methode erfordert superuser-Rechte.

Beispiel (die ersten drei Hops wurden anonymisiert):

[root@tpw ~]# traceroute -T -p 80 www.google.com
traceroute to www.google.com (209.85.129.147), 30 hops max, 60 byte packets
 1  XXX (XXX)  3.187 ms  3.165 ms  3.142 ms
 2  XXX (XXX)  4.502 ms  4.486 ms  4.478 ms
 3  XXX (XXX)  6.409 ms  6.394 ms  6.365 ms
 4  195.3.118.50 (195.3.118.50)  22.834 ms  22.828 ms iix12-aux11.highway.telekom.at (195.3.70.206)  22.822 ms
 5  72.14.198.241 (72.14.198.241)  22.848 ms  22.827 ms  22.803 ms
 6  209.85.255.178 (209.85.255.178)  22.822 ms 209.85.255.176 (209.85.255.176)  20.884 ms 209.85.255.178 (209.85.255.178)  20.880 ms
 7  72.14.232.165 (72.14.232.165)  20.916 ms  19.753 ms 72.14.232.203 (72.14.232.203)  19.744 ms
 8  72.14.233.210 (72.14.233.210)  33.508 ms 72.14.233.206 (72.14.233.206)  21.713 ms  21.655 ms
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  fk-in-f147.1e100.net (209.85.129.147)  19.678 ms  19.715 ms  19.728 ms
[root@tpw ~]#

UDP (-U)

Diese Methode verwendet einen fixen UDP Port (Port 53 ist default). Sie wird ebenfalls dazu verwendet Firewalls zu umgehen.

Im Gegensatz zur TCP Methode empfängt eine Applikation am Ziel-Host diese UDP Datagramme wenn sie am entsprechenden Port lauscht. Dies kann die betreffende Applikation verwirren. In den meisten Fällen wird die Applikation keine Antwort senden (somit sieht traceroute keinen finalen Hop im trace).

Diese Methode kann von einem beliebigen Benutzer verwendet werden und erfordert keine root-Rechte.

Weitere Informationen

  • Manpage von traceroute


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.


Das könnte Sie auch interessieren

Linux Netzwerk Analyse mit netstat
Mehrere IP Adressen einem Netzwerk Interface zuordnen
TCP und UDP Netzwerk Performance mit iperf messen