• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

traceroute funktioniert nicht

Melv

Newbie
Hi
bin neu hier und habe ein kleines (nicht furchtbar tragisches :oops: ) Problem, vielleicht fällt ja jemand was dazu ein :)

Bei mir funktioniert traceroute nicht, außer bei Computern im Netzwerk hier zu Hause.
Der Befehl mtr hingegen funktioniert einwandfrei; weiß jemand vielleicht den Grund dafür?
Prinzipiell müsste dann traceroute doch auch funktionieren, oder?

Also ich habe hier ein kleines Netzwerk mit Router (und Firewall).
Bei traceroute werden nur Sternchen ausgegeben, also kriegt es wahrscheinlich einfach keine Antwort.
In den Log-Dateien des Routers steht jeweils (bei traceroute, bei mtr nicht):

.
Tue, 2004-06-15 20:21:19 - ICMP packet dropped - Source: <irgendeine ip>
Time Exceeded,WAN - Destination:<meine ip>,LAN
(Router: Netgear DG824B)

Ich verstehe jetzt wie gesagt nur nicht,
warum das eine Programm funktioniert,
wobei das andere keine Antwort kriegt
und könnte man das traceroute-Programm nicht so einstellen,
dass es auch funktioniert?

Dankeschön im Voraus...
 

Bonsai

Advanced Hacker
Paket Dropped? Weggeworfen?

Firewall aus! Falls der Hardwarerouter irgendwelche Prots sperrt, aufmachen! Gehts dann?

Ja? :wink:

Dann informier Dich mal was Ports überhaupt sind und lies ein wenig hier im TCP/IP Bereich des Forums. Folge den Links zum KnowHow, und zwar vor allem denen, die sich mit den Grundlagen beschäftigen. Wenn Du dann immer noch nicht weisst, was los ist, lies weiter, google hilft. Wenn Du dann verstanden hast, um was es eigentlich geht und Du immer noch keine Lösung weisst, dann versuchs nochmal mit einer Frage hier.

Du hast eine Firewall. Wenn Du keine Ahnug davon hast, dann lass sie aus, sicherer wird es nicht, wenn Du die einschaltest, es sei denn, Du weisst wie sie zu konfigurieren ist. Damit meine ich aber nicht, was im Konfigurationsfile stehen muss, sondern WARUM.
 

basman

Member
mtr arbeitet mit ICMP-Ping Paketen und traceroute mit UDP-Paketen. Es ist eine Laune Deiner Firewall, dass die Antworten, die von den "getrace-ten" Hops zurückkommen, unterschiedlich behandelt werden.

Schau in die manpage von mtr und traceroute, um die Funktionsweise näher zu erforschen. Beobachte mit ethereal, was genau auf dem Netz abgeht.
 
basman schrieb:
mtr arbeitet mit ICMP-Ping Paketen und traceroute mit UDP-Paketen.

Und das in der SuSE 9.2 enthaltene
---
traceroute -V
This is traceroute 0.6.2
Copyright (c) 2002 Olaf Kirch
---
kennt nicht den Parameter zum Umstellen auf ICMP im Gegensatz zu dem bei Debian.

wolfgang.
 

stka

Guru
Kurze Beschreibung wie Traceroute funktioniert:
Traceroute arbeitet mit dem ICMP Protokoll und den Nachrichtentypen echo-request, echo-reply (wie ping) und zusätzlich mit time-exeded. Da ICPM auf der Ebene 3 OSI Ref-Modell arbeite ist (für die Anfrage) nur IP wichtig. Aber für traceroute musst du auf deiner Firewall die ICMP-Meldung time-exeeded durch lassen. Bei einem traceroute wird die TTL des IP-Pakets immer weiter raufgezählt. Jeder Router reduziert die TTL um den Wert 1. Wenn die TTL auf 0 geht, schickt der Router eine Meldung an den ursprünglichen Absender nach dem Motto "hier Router blablabla die TTL deines Paketes ist abgelaufen" diese Meldung wird dann von traceroute ausgewertet und auf dem Bildschirm ausgegeben. Dann wir die TTL um "1" und der ping auf dein gewüschtes Ziel wird wieder losgeschickt, solange, bis der gewünschte Rechner antwortet.
Damit die Antwort der Router auch durch dein Firewall zurück kommen kann, musst du nun wissen auf welchem Port die Antworten kommen. Die Antworten kommen immer über UDP und irgend einen Highport (1024-65535). Daraus ergeben sich folgende Regeln für eine Firewall:

iptables -A OUTPUT -p ICMP --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type time-exceeded -j ACCEPT
iptables -A OUTPUT -p ICMP --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p UDP --sport 1024: --dport 1024: -j ACCEPT

Du solltest dir mal etheral nehmen und so eine traceroute Abfrage verfolgen. Dann wird du genau das feststellen.
 
Oben