Traceroute

Dieses Thema im Forum "Software" wurde erstellt von mac-bitch, 25. Februar 2005.

  1. mac-bitch

    mac-bitch New Member

    Hallo,
    momentan funktioniert Traceroute bei mir net :(
    Ich sitze hinter einem Router, MacOS X Firewall ist an. Little Snitch fragt nicht ob ein Programm eine Freigabe braucht, als ich nachgeschaut habe (in LS) "darf" traceroute "alles".
    Traceroute findet nur die intere IP des Routers und dann nuescht mehr...
    Muss etwas im Router eingestellt werden?
    Danke!
     
  2. apoc7

    apoc7 New Member

    Schalt doch mal LittleSnitch und die Firewall ab. Normal müsste es so gehen...
     
  3. mac-bitch

    mac-bitch New Member

    Meinst du die Firewall im Router oder im Mac?
    Wenn ich LittleSnitch und die interne FW abschalte tut sich immer noch nix mit Traceroute - wie gehabt kommt das Ding nur bis zum Router...:(
     
  4. mac-bitch

    mac-bitch New Member

    mittlerweile bin ich ein bisschen schlauer...

    "Unter WinXP funktioniert Traceroute, unter Linux aber nicht.

    So weit ich erinnere, funktionieren Traceroutes über Pakete, deren TTLs der Nummer des Hops entsprechen, den der Traceroute gerade erfragen will.

    Die TTL gibt in einem IP-Paket die max. Lebensdauer in "Hops" an.
    Jeder Hop (Router) auf dem Weg zum Ziel verringert die TTL um 1. Wenn die TTL null ist, wird das Paket verworfen und der absende Host bekommt eine ICMP-Message (ICMP time-to-live-exceeded). Wenn die TTL also 3 ist, dann sendet der 3. Router die ICMP-Message zurück und Traceroute weiß, welcher Router an 3.Stelle auf dem Weg zum Ziel liegt.

    Voraussetzung ist also, daß ICMP-Pakete durchgelassen werden.

    Unter Windows funktioniert das gut, unter Linux aber nicht. Warum?

    Mit ethereal fand ich heraus, daß Windows einfach einen Ping mit der entsprechenden TTL an den Zielhost sendet. Der ICMP-TTL-exceeded kommt sauber zurück.

    Das "Linux-Tracertoute" (oder besser BSD-Traceroute) benutzt normalerweise aber statt einem Ping UDP-Pakete, wieder mit der entsprechenden TTL im IP-Header. Der Router schickt für das erste Paket auch brav den ICMP-TTL-exceeded zurück, danach kommt nichts mehr.

    Eine vage Vermutung ist, daß der Router die einkommenden TTL-exceeded-Nachrichten dem ausgehenden UDP-Paket nicht zuordnen und diese deshalb nicht an den Host im LAN zuschicken kann. Schliesslich wird sie ja an die IP des Routers und nicht des LAN-Hosts geschickt.
    Ein Ping hat jedoch eine eindeutige ID (Identifier und Sequence Number), die auch vom TTL-exceeded-Paket benutzt wird. Dadurch "weiß" der Router, wer im LAN den Ping gesendet hat, weil er sich IP und ID des Pings gemerkt hat, und kann die Antwort zustellen.

    Nachdem ich jetzt einen halben Roman geschrieben habe, kann ich ja auch die Lösung für die "Linuxer" verraten

    tracroute -I <host>
    Mit "-I" verhält sich traceroute unter Linux (und wohl auch unter OSX und anderen Unixen) genau so wie unter Windows."

    mmhm wenn ich im Terminal mit " -I" auf ICMP umschalten will, sagt er mir nur illegal option...
     

Diese Seite empfehlen