Mit Traceroute dem Datenverkehr auf die Spur kommen

robin-pierre-dPgPoiUIiXk-unsplash

Jede Sekunde rasen Billionen von Einsen und Nullen durch Glasfaserverbindungen, laufen über Unterseekabel von Kontinent zu Kontinent und ermöglichen Usern auf der ganzen Welt die Nutzung des Internets. Aber wie genau gelangen die Daten von einem Ort zu einem anderen? Das Tool Traceroute gibt Einblicke in die Datenreise, in dem es den Weg zwischen dem eigenen Computer und dem Ziel verfolgt. Dies kann beispielsweise nützlich sein, wenn es darum geht, Performance-Probleme durch komplizierte Umwege oder ausgefallene Router zu identifizieren.

Traceroute ist ein einfaches Befehlszeilentool, mit dem sich der Weg eines IP-Pakets durch ein oder mehrere Netzwerke verfolgen lässt. Es wurde ursprünglich für UNIX-basierte Plattformen entwickelt, ist aber inzwischen auch in Windows (als „tracert“) und MacOS enthalten. Gerade bei Support-Anfragen kommt es häufig zum Einsatz, etwa wenn User mit ihrer Video-Streaming-Leistung Probleme haben. Traceroute wird also in erster Linie für Diagnosezwecke genutzt. So verwenden Systemadministratoren und Netzwerktechniker das Tool zur Überprüfung des Datenverkehrs innerhalb des Unternehmens und um ungewöhnliche oder suboptimale Pfade zu identifizieren. Aber auch Cyberkriminelle nutzen Traceroute, um das Netzwerk eines Ziels zu kartografieren. Deshalb werden die von Traceroute verwendeten Pakettypen häufig am Rande von Unternehmensnetzwerken blockiert oder gefiltert. Schließlich befriedigt Traceroute auch einfach die Neugier von Usern, die gerne nachvollziehen wollen, welchen Weg ihre Daten nehmen.

Die meisten Implementierungen von Traceroute zeigen auch die Zeit an, die für jeden „Sprung“ (hop) zwischen Quelle und Ziel benötigt wird. Dies ist äußerst nützlich, wenn es darum geht, die Ursache für unterbrochenen Datenverkehr oder Leistungsprobleme ausfindig zu machen.

So funktioniert Traceroute

Traceroute ist eigentlich eine Art Hack, denn es nutzt ein Feld in den Kopfzeilen von IP-Paketen, das eigentlich nie für die Pfad- oder Routenverfolgung vorgesehen war. Der IP-Standard schreibt für jedes IP-Paket einen Time-to-Live (TTL)-Wert vor, der als eine Art Selbstzerstörungsmechanismus fungiert, um zu verhindern, dass unzustellbare Pakete endlos im Internet zirkulieren. Von jedem Router in einem Pfad wird erwartet, dass er den TTL-Wert um eins verringert, bevor er das Paket weiterleitet. Sobald der TTL-Wert Null erreicht, kommt der Routing-Prozess zum Stillstand, und der letzte Router, der das Paket verarbeitet hat, sendet die Nachricht „Time to live exceeded“ zurück. Im normalen Datenverkehr ist dies natürlich nicht erwünscht. Deshalb haben typische Datenpakete einen Wert zwischen 64 und 255. Bei Traceroute verhält es sich genau umgekehrt: Durch Manipulation des TTL-Feldes löst das Tool TTL-Überschreitungsmeldungen von jedem Hop entlang eines bestimmten Pfades aus, um sie zu identifizieren.

  1. Der User ruft den Befehl traceroute (bzw. unter Windows tracert) auf und gibt einen Zielhost an, entweder als IP-Adresse oder Domänennamen.
  2. Traceroute sendet ein Datenpaket in Richtung des Ziels mit einem TTL-Wert von 1. Der erste Router im Pfad verringert den Wert um 1, was eine TTL-überschritten-Meldung auslöst, die zurückgesendet wird.
  3. Mit den Details des ersten Hops erhöht Traceroute den TTL-Wert auf 2. Damit kann das Datenpaket einen weiteren Sprung machen, bevor der Wert wieder auf 0 fällt. Entsprechend wird beim zweiten Router eine TTL-Übergangsmeldung erzeugt und an Traceroute zurückgeschickt.
  4. Dieser Prozess wiederholt sich so lange, bis das das Ziel erreicht ist oder die Obergrenze an Hops erreicht wird. Standardmäßig liegt diese bei 30 Sprüngen, allerdings kann sie auch erhöht werden.
  5. Schließlich zeigt Traceroute alle Sprünge auf dem Pfad an, zusammen mit der Zeit, die für jeden Sprung und zurück benötigt wurde (dies wird als Round Trip Time bezeichnet).

Standardmäßig sendet Traceroute drei Pakete an jeden Hop auf dem Pfad. Die genaue Art der Pakete variiert zwischen den Implementierungen und kann auch geändert werden. Die grundlegende Methodik bleibt aber stets die gleiche.

So liest man die Ergebnisse

Wenn man noch nie mit Traceroute gearbeitet hat, wirkt das Ganze anfangs oftmals etwas einschüchternd. Wenn man aber erst einmal gelernt hat, wie man eine Traceroute-Ausgabe liest, kann man sich schnell einen Reim auf die Ergebnisse machen.

Jede Zeile der Traceroute-Ausgabe steht für einen Sprung auf dem Weg zu einem bestimmten Ziel. Diese Sprünge können entweder als IP-Adresse oder als Hostname aufgelistet werden. Dabei versucht das Tool, die IP-Adresse jedes Sprungs in einen Hostnamen aufzulösen und diesen, wenn möglich, anzuzeigen. Die Liste beginnt mit dem Router, der dem eigenen Computer am nächsten liegt, und endet entweder mit dem Ziel oder dem letzten Punkt, den der Traceroute erreicht hat, bevor die maximale Anzahl von Hops erreicht wurde. Rechts von jedem Eintrag steht eine Reihe von Zeitangaben in Millisekunden (ms). Dies ist die Round-Trip Time oder die Zeit, die die Traceroute-Pakete brauchten, um diesen Hop zu erreichen und eine Antwort zu erhalten.

Es kommt vor, dass eine oder mehrere Zeilen der Traceroute-Ausgabe nur mit einem Sternchen (*) aufgeführt sind. Dies bedeutet, dass das Programm keine Antwort vom Router an diesem Punkt erhalten hat. Einige Unternehmen blockieren oder verwerfen die Art von Paketen, auf die Traceroute angewiesen ist. Dies geschieht entweder aus Sicherheitsgründen oder aufgrund von Auslastung der jeweiligen Server.

Bei einem Traceroute, der über das Internet erfolgt, ist es wahrscheinlich, dass der Pfad mehrere Netzwerke, Dienstanbieter und geografische Regionen durchquert. Betrachten wir einen Traceroute, der von der Ostküste der Vereinigten Staaten bis nach Nepal führt.

Aus diesem Traceroute lassen sich einige interessante Informationen gewinnen. Unser erster Hop (10.28.0.1) sagt uns nicht allzu viel, da es sich nur um das lokale Gateway für unser Subnetz handelt. Aber mit dem zweiten Ergebnis können wir beginnen, den Weg unserer Pakete auf ihrer Reise um die Welt genauer zu untersuchen: vlan156.as06.mia1.us.m247.com.

Wenn man sich mit Hostnamen beschäftigt, empfiehlt es sich, von rechts nach links vorzugehen. Mit dieser Taktik können wir „m247“ googeln, um herauszufinden, dass es sich um einen im Vereinigten Königreich ansässigen Dienstanbieter mit Standorten auf der ganzen Welt handelt. Anhand der beiden Bestandteile des Hostnamens unmittelbar links von m247.com können wir außerdem erkennen, dass sich dieser Router in den USA befindet, und zwar in der Gegend von Miami („mia“). Obwohl dies nicht vorgeschrieben ist, geben viele Unternehmen den geografischen Standort von Routern mit den aus drei Buchstaben bestehenden Flughafencodes der International Air Transport Association (IATA) an. Die letzten beiden Teile des Hostnamens geben die Position des Routers innerhalb des Netzwerks des Dienstanbieters an, wobei „as06“ wahrscheinlich eine Abkürzung für die Nummer des autonomen Systems ist und „vlan156“ sich auf das VLAN bezieht, das unsere Pakete durchlaufen hat.

In der dritten Zeile finden wir zwei verschiedene IP-Adressen. Traceroute sendet wie erwähnt standardmäßig drei Pakete an jeden Hop. Es gibt keine Garantie dafür, dass jedes Paket auf genau die gleiche Weise weitergeleitet wird. In diesem Beispiel haben das zweite und das dritte Paket einen leicht unterschiedlichen Weg genommen. Dies könnte beispielsweise auf einen Lastausgleich oder eine vorübergehende Überlastung des Netzes zurückzuführen sein.

In der vierten Zeile sehen wir, dass sich unser Paket immer noch in Miami befindet. Allerdings zeigt das Ende des Hostnamens, dass es jetzt durch das Netz von Cogent Communications und nicht von m247 läuft.  Cogent ist ein großer ISP mit einem globalen Netzwerk. Die Zeilen 4 bis 11 veranschaulichen den Weg durch verschiedene Städte in den USA, bevor es an einem Cogent-Knoten in Los Angeles landet.

Zwischen Zeile 12 und 13 passiert etwas Interessantes: Wir können sehen, dass die Umlaufzeiten an diesem Punkt stark ansteigen. Es werden keine Hostnamen angegeben, aber eine Reihe von Websites und „whois“-Datenbanken können helfen, Informationen über IP-Adressen zu sammeln, wenn diese fehlen. So zeigt sich, dass alle drei IP-Adressen in Zeile 13 dem indischen Telekommunikationsanbieter Bharti Airtel zugewiesen sind. Das bedeutet, dass unsere Pakete zwischen den Zeilen 12 und 13 von der Westküste der Vereinigten Staaten nach Indien reisen, wahrscheinlich durch eines der vielen Unterseekabel, die den Pazifischen Ozean durchkreuzen.

In Zeile 15 sehen wir, dass unsere Traceroute-Pakete das Netz der Nepal Telecom mit dem Hostnamen ntc.net.np und schließlich den Server erreichen, der unser Ziel, die offizielle Website der nepalesischen Regierung hostet. In weniger als einer halben Sekunde sind unsere Daten um die halbe Welt gereist.

 

Autor: Michael Scheffler, Country Manager DACH von Varonis Systems