Почему я могу пропинговать IP-адрес, но не 'traceroute'?

46

Я могу пропинговать IP-адрес, но не могу отследить его. Как это могло произойти?

[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 ~]$

Пятый CENSOREDIP-адрес в трассировке не совпадает с «ping CENSORED.CENSORED».

LanceBaynes
источник
Какой вывод у traceroute?
ChrisF
1
почему IP "подвергнут цензуре"?
Сатьяджит Бхат
1
почему IP "подвергнут цензуре" ... может потому, что он не публичный ?? пфф
LanceBaynes
8
Я предполагаю, что постер отредактировал IP, чтобы мы не пытались взломать его машину.
Msw
эти звезды не означают цензуру, они означают, что не было никакого ответа
17

Ответы:

42

Попробуйте использовать другой метод в вашей трассировке, например TCP SYN или ICMP вместо метода UDP по умолчанию.

Например, обратите внимание на разницу между ICMP и 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
источник
2
-T не похоже на переключатель для OSX. Есть ли альтернатива использованию TCP SYN на OSX?
Манахи
2
@Manachi:brew install tcptraceroute
iolsmit
1
@Manchi: прочитайте man-страницу ...: "traceroute -P TCP <IP>"
Бенба
23

Traceroute основан на пакетах ICMP или UDP. Он эффективно проверяет каждый маршрутизатор на пути между вами и censored.censored. Это увеличивает время жизни (TTL) для каждого последующего пакета, который он отправляет (обычно от 1 до 30), ожидая, что, поскольку каждый пакет отправляется с увеличенным TTL от последнего, следующий маршрутизатор в пути вернет код ошибки ,

Если переход 6 не отвечает, возможно, он специально блокирует сообщения ICMP / UDP. Поэтому Ping работает, потому что маршрутизаторы между вами и им просто передают ему пакеты ICMP / UDP, а не отвечают на них, как они делают с помощью traceroute.

Рис Гибсон
источник
2
В большинстве (всех?) * Nix дистрибутивов traceroute по умолчанию использует UDP, а не ICMP.
h0tw1r3
Хороший вопрос, исправлю.
Рис Гибсон
так все роутеры после 5 блока UDP? это верно?
ЛэнсБейнс
Я так не думаю. Кто-то другой может дать лучшее объяснение, но я думаю, что прыжок 6 не отвечает и не передает пакеты, так как в противном случае вы, по крайней мере, получили бы последний ответ от своего пункта назначения (если не прошло более 30 прыжков).
Рис Гибсон
1
Но я уверен, что это менее 30 прыжков. Так что ответ не хороший. На прыжке 7,8,9 и т. Д. Я получил бы ответы в traceroute: \
LanceBaynes
12

Я не видел ответа на вопрос « почему» .

Известно, что несколько интернет-провайдеров делают свои маршрутизаторы скрытными для трассировки маршрута двумя способами: либо они не уменьшают TTL в IP-пакетах (создавая себе IP-червоточины), либо не реагируют на истекший TTL, продолжая пересылать ICMP.

Причина в том, что топология внутренней сети остается конфиденциальной. Вот и все.

Выдача traceroutes из / к нескольким источникам / получателям раскрывает информацию о топологии сети, что нравится не всем.

USR-местный ΕΨΗΕΛΩΝ
источник
2

Traceroute использует сообщения ICMP, на которые некоторые маршрутизаторы могут быть настроены так, чтобы они не отвечали.

LawrenceC
источник
Ping также является ICMP, он не объясняет разницу. У меня есть то преимущество, что я читаю другие ответы о том, что stateroute может также использовать udp, чего я раньше не знал.
Богатая гомолка
Ну, один из способов явной блокировки ICR-пакетов traceroute - отбросить входящие ICMP с TTL = 1. Может быть, они делают это по какой-то причине.
LawrenceC
2

Иногда стоит использовать pingинформацию, похожую на traceroute:

#!/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

Вызывая ping с аргументом -t $ TTL, вы иногда можете отключить брандмауэр и узнать IP-адреса и т. Д. Маршрутизаторов за брандмауэрами.

Брюс Эдигер
источник
3
Это то же самое, что и вызов traceroute с флагом -I, хотя (как ни странно) это потребует статуса суперпользователя.
Цариум
1
Пинг @Tzarium также требует статуса суперпользователя, он просто имеет установленный бит suid, так что вы получите его бесплатно.
itadok
0

Либо все узлы, начиная с 6, не отвечают на UDP-пакеты, либо сам узел 6 блокирует пакеты udp. Вы можете попробовать методы очистки, которые, я надеюсь, будут работать в зависимости от того, какой узел в пути к определению блокирует ICMP / TCP SYN:

  1. Используйте ICMP для трассировки: $ sudo traceroute -I

  2. Используйте TCP syn для traceroute: $ sudo traceroute -T

  3. Если это прыжки, которые он превышает, используйте одно из следующих значений: $ sudo traceroute -I -m 60

ИЛИ

$ sudo traceroute -T -m 60

Последний работал на меня, пока проследил на ftp через континент.

Naresh
источник
0

Чтобы использовать команду ping для трассировки в среде Unix, попробуйте следующее:

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
Naresh
источник