Почему я могу ping IP-адрес, но не 'traceroute' это?
Я могу ping IP-адрес, но я не могу отслеживать его. Как это могло быть?
[[email protected] ~]$ 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
[[email protected] ~]$
[[email protected] ~]$ 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 * * *
[[email protected] ~]$
Пятый CENSORED
IP-адрес в traceroute не совпадает с адресом «ping CENSORED.CENSORED».
7 ответов
Попробуйте использовать другой метод в вашем traceroute, например TCP SYN или ICMP, вместо метода UDP по умолчанию.
Например, обратите внимание на разницу между ICMP и TCP:
[email protected]:~$ 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
[email protected]:~$ 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
[email protected]:~$ 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 * * *
Traceroute основан на пакетах ICMP или UDP. Он эффективно проверяет каждый маршрутизатор на пути между вами и censored.censored. Он увеличивает время жизни (TTL) для каждого последующего пакета, который он отправляет (от 1-30 нормально), ожидая, что по мере того, как каждый пакет отправляется с увеличенным TTL из последнего, следующий маршрутизатор на пути возвращает код ошибки .
Если хоп 6 не отвечает, это, вероятно, специально блокирует сообщения ICMP /UDP. Поэтому Ping работает, потому что маршрутизаторы между вами и им просто передают ему пакеты ICMP /UDP, а не реагируют на них, как это происходит с traceroute.
Я не видел ответа на вопрос why .
Известно, что некоторые интернет-провайдеры делают свои маршрутизаторы скрытыми для traceroute двумя способами: они либо не уменьшают TTL в IP-пакетах (делая себя IP-червями), либо не реагируют на истеченный TTL, но все же пересылают ICMP.
Причина заключается в том, чтобы сохранить внутреннюю топологию сети конфиденциальной. Вот и все.
Выдача traceroute
s из /в несколько источников /получателей показывает информацию о топологии сети, что не нравится каждому.
Traceroute полагается на сообщения ICMP, которые некоторые маршрутизаторы могут настроить, чтобы не отвечать на них.
Иногда вам нужно использовать 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-адреса и т. д. маршрутизаторов за брандмауэрами.
Либо все, записанные с 6-го уровня, не отвечают на UDP-пакеты или сам блок-блок udp-пакетов. Вы можете попробовать fllowing методы, которые, я надеюсь, будут работать, основываясь на том, какой узел на пути блокировки блокировки ICMP /TCP SYN:
-
Использовать ICMP для traceroute: $ sudo traceroute -I
-
Используйте TCP syn для traceroute: $ sudo traceroute -T
-
Если это хмель, который он превышает, используйте одно из следующих: $ sudo traceroute -I -m 60
ИЛИ
$ sudo traceroute -T -m 60
Последний работал для меня, когда тратил на ftp по континенту.
Чтобы использовать команду ping для traceroute в среде unix, попробуйте следующее:
for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done