traceroute druckt manchmal nicht die gesamte Route

7

Bei der Überwachung meines Netzwerks wurde mir vor einiger Zeit klar, dass Traceroute Routen vollständiger druckte als jetzt ... und im Moment lässt Traceroute manchmal einige Geräte aus.

Dies ist beispielsweise eine vollständigere Traceroute, einschließlich meines Gateways:

$ sudo traceroute -F xxx.xx.136.5

traceroute to xxx.xx.136.5 (xxx.xx.136.5), 30 hops max, 60 byte packets

 1  * * *

 2  192.168.1.1 (192.168.1.1)  1.607 ms  1.604 ms  1.627 ms

 3  xxx.xx.136.5 (xxx.xx.136.5)  3.286 ms  5.729 ms  7.416 ms

Der genau gleiche Befehl lässt mein Gateway aus:

$ sudo traceroute -F xxx.xx.136.5

traceroute to xxx.xx.136.5 (xxx.xx.136.5), 30 hops max, 60 byte packets

1  xxx.xx.136.5 (xxx.xx.136.5)  24.004 ms  28.267 ms  42.343 ms

Diese Befehle wurden auf demselben Computer gegeben.

Wie kann ich festlegen, dass immer die gesamte Route angezeigt wird?

Leandros López
quelle
1
Einige Geräte antworten weder aufgrund von ACLs noch aufgrund anderer Konfigurationen auf ICMP. Außerdem gibt jeder Verkehr, der getunnelt wird, keinen Ping zurück, mit Ausnahme der Endpunkte der physischen Schnittstelle.
HAL
2
Einige Geräte dekrementieren die TTL von Paketen, die sie durchlaufen, nicht, sodass sie überhaupt nicht in Traceroutes angezeigt werden. Beispielsweise verhalten sich Cisco PIX / ASA-Firewalls standardmäßig so.
James Sneeringer
1
Hat dir eine Antwort geholfen? Wenn ja, sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort bereitstellen und akzeptieren.
Ron Maupin
@HAL Linux Traceroute verwendet Dummy-UDP anstelle von ICMP, daher sollte es mit allen abgelaufenen ICMP-TTLs funktionieren.
Zac67
Hat dir eine Antwort geholfen? Wenn ja, sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort bereitstellen und akzeptieren.
Ron Maupin

Antworten:

6

Jede Form von Traceroute erhöht die TTL eines IP-Pakets um eins. Das erste Paket hat eine TTL von eins und der 1-Router dekrementiert den Timer und sendet eine Fehlermassage über ICMP (Time to Live überschritten). Standard * NIX Traceroute verwendet UDP, Windows Tracert ICMP, es gibt auch Versionen, die TCP verwenden.

Es gibt verschiedene Fälle, in denen Sie keinen Hop sehen:

  • Die Leute denken, dass ICMP böse ist und es blockiert. Dies führt zu vielen Problemen (z. B. PMTU-Erkennung).
  • Die Leute denken nur an Fenster und blockieren UDP. Versuchen Sie, traceroute -Isollte zum Trick laufen .
  • Möglicherweise möchten Sie auch versuchen, tcptraceroute zu verwenden
  • Wenn ein Router damit beschäftigt ist, Pakete weiterzuleiten, habe ich nicht die Ressourcen, um ICMP-Pakete zu versenden.
Jens Link
quelle
5

Ich bevorzuge die Verwendung tcptraceroutefür ein besseres Detail des Hop-to-Hop-Routings.

tcptracerouteIm Wesentlichen werden die meisten Schutzfirewallen umgangen, wobei ICMP-Pakete ignoriert werden, die von verwendet werden traceroute. Verwenden Sie Port 80 oder 53.

John Greene
quelle
1

Wenn Ihr Gateway über eine Protokollierungsoption verfügt, aktivieren Sie diese. Möglicherweise finden Sie einen Eintrag, der das beobachtete Verhalten erklärt. Ein Router kann wiederholtes ICMP als DOS interpretieren.

... obwohl man intuitiv erwarten könnte, dass sich die Quelle im externen Netzwerk befindet.

alib_15
quelle
0

Ich habe in meinem Intranet herausgefunden, was wirklich mit Traceroute (und mtr, tpctraceroute usw.) zusammenhängt. Es ist mein eigener Router, der bekannte Hopfen versteckt. Mein Router (ein TP-Link WAP wie unter Linux 2.6.15) verwendet, um die Hops auf bekannten Routen auszublenden. Wenn Sie also vg Traceroute auf Google geben, wird nur ein Sprung ausgegeben, Google selbst, da mein Router die Route sehr gut kennt (ich bleibe den ganzen Tag mit Google). Wenn Sie jedoch nur einen PC direkt am Access Point anschließen und dann eine Traceroute in Richtung Google geben, wird die gesamte Route von hier nach Google zurückgegeben.

Jetzt weiß ich also, was los ist, aber nicht, warum es das so macht.

Um dieses Problem zu umgehen, verwende ich das Tracerout, das vom eingebetteten Linux bereitgestellt wird, das auf dem (problematischen) Router ausgeführt wird. Das heißt, der Router, der über meinen PC Hops versteckt, bietet in seinem eigenen eingebetteten System eine Schnittstelle, die das Tracerout ordnungsgemäß ausführt.

Wie auch immer, danke für die Antwort!

Leandros López
quelle
Es hört sich so an, als ob Ihr Router über eine Firewall verfügt, die die ICMP-TTL blockiert. Die von den Zwischensprüngen generierten Nachrichten wurden überschritten, aber die ICMP-Nachricht für die Echoantwort für den letzten Hop wird nicht blockiert. Es handelt sich um ein Router- / Firewall-Konfigurationsproblem (nicht zum Thema gehörend, da es sich um Geräte für Endverbraucher handelt).
Ron Maupin
0

Beim Implementieren eines neuen Hosts wurde festgestellt, dass die Trace-Route nur die Adresse des lokalen Gateways und die Adresse im Hosts-LAN anzeigt. Alle anderen Hops wurden jedoch als * angezeigt.

Wenn ich TCPDUMP auf demselben Host ausgeführt habe, während ich die Trace-Route ausgeführt habe, konnte ich feststellen, dass die ICMP-TTL die Nachrichten überschritten hat, die von den Knoten im Pfad generiert wurden, aber TRACEROUTE hat die IP-Adressen einfach nicht angezeigt ... nur mehr *.

Der Host hatte zwei Netzwerkschnittstellen, Schnittstelle A, auf der eine Standardroute konfiguriert war, und Schnittstelle B, die eine statische Route zum Ziel hatte. Es war Schnittstelle B, auf der ich die Trace-Route ausführte, auf der nur * angezeigt wurden.

Um das Problem zu beheben, habe ich dem zweiten Hop, dem nächsten Router im Pfad, eine weitere statische Route hinzugefügt, damit ich auf einem viel kürzeren Pfad arbeiten kann. Als ich den Test zum ersten Mal startete, wurde der zweite Hop nur als * angezeigt, aber sobald ich der Netzwerk-Trace-Route eine statische Route hinzufügte, wurde seine IP-Adresse angezeigt.

Ich habe erneut eine Trace-Route zum endgültigen Ziel durchgeführt und festgestellt, dass alle IP-Adressen, die ICMP-TTL generiert haben, die Nachrichten überschritten haben, damit ich sicherstellen konnte, dass für das Routing von Schnittstelle B alle diese Netzwerke statisch konfiguriert waren. Als ich dies tat, konnte ich jetzt alle IPs sehen, die im Ergebnis der Trace-Routen aufgeführt sind.

Es sieht also so aus, als ob die Schnittstelle, die die ICMP-TTL-überschrittenen Nachrichten empfängt, kein Routing zurück zu dieser Adresse hat und dann nicht in den Ergebnissen der Trace-Route angezeigt wird. Ich bin sicher, dass jemand in der Community erklären kann, warum es sich so verhält, aber ein Host mit mehreren Schnittstellen, der eine Trace-Route auf einer Schnittstelle ausführt, für die nicht die Standardroute konfiguriert ist, ist so ziemlich Zeitverschwendung.

markp7757
quelle