Traceroute ICMP

Mit "Ping" überprüfen sie generell die Erreichbarkeit einer Gegenstelle, wenn nicht eine Firewall die verwendeten Pakete behindert. Mit "TraceRoute" können Sie aber auch den Weg der Pakete vom Absender zum Ziel erfassen. Wobei diese Aussage zu relativieren ist. Diese Seite beschreibt die Funktion und Einschränkungen von Traceroute.

Funktionsweise

Das klassische "PING"-Kommando sendet ein Paket an die Gegenstelle und wartet auf die Antwort. Die Daten werden über das IPv4 oder IPv6-Protokoll (Layer3) übertragen. Auf OSI-Layer4 kommt aber bei Windows nicht eine gesicherte TCP-Verbindung mit Ports oder eine ungesicherte UDP-Verbindung zum Einsatz sondern das Protokoll ICMP (Internet Control Message Protocol). Bei ICMP gibt es keine Ports o.ä. und neben dem ICMP ECHO, der von Ping genutzt wird, wird ICMP auch für andere Benachrichtigungen genutzt, z.B. wenn ein Port nicht Erreichbar ist (3 = Destination Unreachable) oder Pakete zu lange unterwegs sind (11 = Time Exceeded) und einige mehr. Selbst Tracert hat einen eigenen Typ (30).

Es wird also nicht nur ein Paket mit einem langen TTL gesendet auf das dann viele Stationen "antworten würden. Der Sender schickt gleich mehrere Pakete mit einem aufsteigenden TTL auf die Reise und wertet die "ICMP not Reachable" aus.

Genauso können Sie das dann auch in WireShark nachvollziehen. Sie sehen hier aber, dass ein Windows Tracert jedes Paket dreimal sendet

Bei diesem Ansatz gibt es aber drei Einschränkungen:

  • Redundante Wege sind nicht eindeutig
    Der Absender kann nicht den Weg vorgeben und da das Internet ja ein "vermaschtes" Netzwerk ist, ist es zwar wahrscheinlich, dass ein Paket zum gleichen Ziel auch immer den gleichen Weg nimmt aber es ist nicht garantiert. Es gibt sogar Programme, die ganz viele ICMP-Pakete absenden um genau das zu ermitteln. Das sieht dann wie folgt aus

    Siehe auch End2End-Ping
  • ICMP ist geblockt
    PING ist ein essentielles Mittel um zu sehen, ob das IP-Routing korrekt ist. Dennoch gibt es immer noch Firewalls, die ICMP blockieren oder verfälschen. Man kann mit ausreichender Menge an Pings natürlich schon versuchen eine Karte der Netzwerke, Router und sogar erreichbarer Endpunkte zu erstellen, die man dann weiter untersuchen könnte. Das kann man so sehen, aber nur weil es keine Straßenschilder gibt, ist das noch lange kein Schutz gegen Einbrecher. Dennoch sind die Daten hier nicht immer zuverlässig, wie sie hier sehen können.

    Natürlich kann ich Outlook Online nutzen, auch wenn der Traceroute (grün) mit Aussetzern kämpft. Interessant auch, dass der vierte Hop mit zwar ein "ICMP TTL Exceeded" sendet aber er auf einen direkten PING nicht antwortet.
  • Keine Diensterreichbarkeit
    Sie habe aber auch schon gesehen, dass eine mangelnde Erreichbarkeit per ICMP nicht bedeutet, dass der Service selbst nicht erreichbar ist.
  • QoS
    Und natürlich hat ein ICMP-Paket nicht die gleiche QoS-Klasse wie ein VoIP oder HTTP-Paket. Insofern kann ein ICMP auch nicht sinnvoll für eine Bandbreitenmessung oder Durchsatz-Messung herangezogen werden.

Das klassische Traceroute unter Windows ist also ein Werkzeug, dessen Ergebnisse aber mit Vorbehalt zu bewerten sind.

Tracert mit UDP/TCP

Ein Traceroute unter Unix nutzt hingegen UDP mit einem beliebigen Port, der vermutlich nicht erreichbar ist. Auch hier erwartet das absendende Traceroute die Rückantworten in Form von "ICMP TTL Expired" oder vom Ziel-Host dann ein "ICMP not reachable", wenn auf dem angesprochenen Port niemand lauscht.

Es gibt sogar Tools, die TCP-Ports nutzen, z.B. 80/TCP oder 443/TCP und hoffen damit nicht gleich an Firewalls hängen zu bleiben. Allerdings sind all diese Tools natürlich nicht über einen HTTP-Proxy oder SOCKS-Proxy zu nutzen. Zudem sind die Ergebnisse auch hier nicht immer zuverlässig, da auf ein ausgehendes UDP/TCP Paket ein ICMP-Paket zurück kommt. Auch hier hängen Sie natürlich von der Mitarbeit der Zwischenstationen ab.

Weitere Links