Warum kann ich eine IP-Adresse anpingen, aber nicht 'traceroute'?

46

Ich kann eine IP-Adresse anpingen, aber ich kann sie nicht nachverfolgen. Wie konnte das sein?

[USERNAME@HOSTNAME ~]$ ping CENSORED.CENSORED
PING CENSORED.CENSORED (CENSORED) 56(84) bytes of data.
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=1 ttl=49 time=52.8 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=2 ttl=49 time=49.4 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=3 ttl=49 time=49.2 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=4 ttl=49 time=50.4 ms
^C
--- CENSORED.CENSORED ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 49.276/50.494/52.804/1.401 ms
[USERNAME@HOSTNAME ~]$
[USERNAME@HOSTNAME ~]$ traceroute CENSORED.CENSORED
traceroute to CENSORED.CENSORED (CENSORED), 30 hops max, 60 byte packets
 1  CENSORED (CENSORED)  5.733 ms  6.000 ms  5.977 ms
 2  CENSORED (CENSORED)  0.428 ms  0.417 ms  0.393 ms
 3  CENSORED (CENSORED)  1.726 ms  1.718 ms  1.682 ms
 4  CENSORED (CENSORED)  26.699 ms  26.693 ms  26.670 ms
 5  CENSORED (CENSORED)  27.785 ms  27.769 ms  27.746 ms
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
[USERNAME@HOSTNAME ~]$

Die fünfte CENSOREDIP-Adresse in der Traceroute ist nicht die gleiche wie beim "ping CENSORED.CENSORED".

LanceBaynes
quelle
Was ist die Ausgabe von der Traceroute?
ChrisF
1
Warum wird die IP "zensiert"?
Sathyajith Bhat
1
Warum wird die IP "zensiert" ... vielleicht weil sie nicht öffentlich ist? pff
LanceBaynes
8
Ich gehe davon aus, dass das Plakat die IP redigiert hat, damit wir nicht versuchen, seine Maschine zu hacken.
msw
diese
sterne

Antworten:

42

Versuchen Sie, eine andere Methode in Ihrer Traceroute zu verwenden, z. B. TCP SYN oder ICMP anstelle der Standard-UDP-Methode.

Beachten Sie zum Beispiel den Unterschied zwischen ICMP und TCP:

x@x:~$ ping -qc4 94.254.2.51
PING 94.254.2.51 (94.254.2.51) 56(84) bytes of data.
--- 94.254.3.90 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 7.781/7.807/7.836/0.067 ms

x@x:~$ sudo traceroute -I 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.307 ms  1.299 ms  1.432 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  7.166 ms  7.364 ms  7.336 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.251 ms  7.099 ms  7.220 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.059 ms  7.074 ms  7.145 ms
9  h-2-51.A322.priv.bahnhof.se (94.254.2.51)  7.619 ms  7.750 ms  8.070 ms

x@x:~$ sudo traceroute -T 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.621 ms  1.683 ms  1.817 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  8.530 ms  7.861 ms  7.820 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.724 ms  7.539 ms  7.486 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.572 ms  7.537 ms  7.553 ms
9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
Tzarium
quelle
2
-T scheint kein Schalter für OSX zu sein. Gibt es eine Alternative zur Verwendung von TCP SYN unter OSX?
Manachi
2
@Manachi:brew install tcptraceroute
iolsmit
1
@Manchi: Lesen Sie die Manpage ...: "traceroute -P TCP <IP>"
benba
23

Traceroute basiert auf ICMP- oder UDP-Paketen. Es pingt effektiv jeden Router auf dem Pfad zwischen Ihnen und censored.censored. Sie erhöht die TTL (Time-To-Live) für jedes nachfolgende Paket, das sie sendet (normalerweise von 1 bis 30), in der Erwartung, dass der nächste Router im Pfad einen Fehlercode zurückgibt, wenn jedes Paket mit einer erhöhten TTL vom letzten gesendet wird .

Wenn Hop 6 nicht reagiert, blockiert es wahrscheinlich speziell ICMP / UDP-Nachrichten. Ping funktioniert daher, weil die Router zwischen Ihnen und ihm nur die ICMP / UDP-Pakete weiterleiten, anstatt wie bei einer Traceroute auf sie zu antworten.

Rhys Gibson
quelle
2
In den meisten (allen?) * Nix-Distributionen verwendet traceroute standardmäßig UDP, nicht ICMP.
h0tw1r3
Guter Punkt, wird sich ändern.
Rhys Gibson
also alle router nach 5 blocken UDP? Ist das korrekt?
LanceBaynes
Ich glaube nicht. Jemand anderes könnte eine bessere Erklärung haben, aber ich denke, dass Hop 6 nicht antwortet und die Pakete nicht weiterleitet, da Sie sonst zumindest eine letzte Antwort von Ihrem Ziel erhalten würden (es sei denn, es sind mehr als 30 Hops entfernt).
Rhys Gibson
1
Aber ich bin sicher, dass es weniger als 30 Hopfen entfernt ist. Die Antwort ist also nicht gut. Bei Hopfen 7,8,9 usw. Ich hätte Antworten in der Traceroute: \
LanceBaynes
12

Ich habe keine Antwort auf den Warum- Teil der Fragen gesehen.

Es ist bekannt, dass mehrere ISPs ihre Router auf zwei Arten auf Traceroute verbergen: Entweder dekrementieren sie die TTL in IP-Paketen nicht (machen sich selbst zu IP-Wurmlöchern) oder sie reagieren nicht auf abgelaufene TTL, während sie weiterhin ICMP weiterleiten.

Der Grund ist, die interne Netzwerktopologie geheim zu halten. Das ist alles.

Wenn Sie traceroutes von / an mehrere Quellen / Ziele ausgeben, werden Informationen zur Netzwerktopologie angezeigt, die so etwas wie nicht jeder zu schätzen weiß.

usr-local-ΕΨΗΕΛΩΝ
quelle
2

Traceroute basiert auf ICMP-Nachrichten, auf die einige Router möglicherweise nicht reagieren.

LawrenceC
quelle
Ping ist auch ICMP, es erklärt nicht den Unterschied. Ich habe die Vorteile, andere Antworten zu lesen, die state traceroute auch mit udp verarbeiten kann, was ich vorher nicht kannte.
Rich Homolka
Nun, eine Möglichkeit, Traceroute-ICMP-Pakete explizit zu blockieren, besteht darin, eingehende ICMPs mit TTL = 1 zu verwerfen. Vielleicht machen sie das aus irgendeinem Grund.
LawrenceC
2

Manchmal lohnt pinges sich, Traceroute-ähnliche Informationen zu erhalten:

#!/bin/bash
for TTL in 1 2 3 4 5 6 7 8 9 10 11 12
do
    ping -c 1 -n -t $TTL a.b.c.d
done

Wenn Sie ping mit einem -t $ TTL-Argument aufrufen, können Sie sich manchmal der Firewall entziehen und IP-Adressen usw. von Routern hinter Firewalls herausfinden.

Bruce Ediger
quelle
3
Dies ist dasselbe wie das Aufrufen von traceroute mit dem Flag -I, obwohl dies (seltsamerweise) den Superuser-Status erfordern würde.
Tzarium
1
@Tzarium Ping benötigt auch den Superuser-Status, es ist nur das suid-Bit gesetzt, so dass Sie es kostenlos erhalten.
itsadok
0

Entweder reagieren alle Knoten ab 6 nicht auf UDP-Pakete, oder Knoten 6 selbst blockiert udp-Pakete. Sie können die folgenden Methoden ausprobieren, von denen ich hoffe, dass sie auf der Grundlage des Knotens im Pfad zu den Bestimmungsblöcken ICMP / TCP SYN funktionieren:

  1. Verwenden Sie ICMP, um die Route zu verfolgen: $ sudo traceroute -I

  2. Verwenden Sie TCP-Sync, um die Route zu verfolgen: $ sudo traceroute -T

  3. Wenn es sich um die Hopfen handelt, die überschritten werden, verwenden Sie eine der folgenden Optionen: $ sudo traceroute -I -m 60

ODER

$ sudo traceroute -T -m 60

Letzteres funktionierte für mich, als ich zu einem ftp quer durch den Kontinent unterwegs war.

Naresh
quelle
0

Versuchen Sie Folgendes, um den Befehl ping zu verwenden, um Traceroute in einer Unix-Umgebung auszuführen:

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
Naresh
quelle