2011-05-04 10:05:03 +0000 2011-05-04 10:05:03 +0000
47
47
Advertisement

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

Advertisement

Я могу пинговать 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 ~]$

Пятый IP-адрес CENSORED в трассировке не совпадает с “ping CENSORED.CENSORED”.

Advertisement

Ответы (7)

42
42
42
2011-05-04 12:21:00 +0000

T

23
23
23
2011-05-04 11:11:20 +0000

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

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

12
Advertisement
12
12
2014-03-09 21:54:36 +0000

Я не видел ответа на почему часть вопросов. Известно, что

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

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

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

2
2
2
2011-05-04 11:04:50 +0000

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

2
Advertisement
2
2
2011-05-04 15:44:09 +0000

Иногда стоит использовать ping для получения информации, похожей на трассировку:

#!/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-адреса и т.д. маршрутизаторов за брандмауэрами.

0
0
0
2014-03-09 21:24:29 +0000

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

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

  2. Используйте синхрон TCP для трассировки : $ sudo traceroute -T

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

ИЛИ

$ sudo traceroute -T -m 60

Последний сработал для меня во время трассировки до ftp по всему континенту.

0
Advertisement
0
0
2014-03-09 21:29:44 +0000

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

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

Похожие вопросы

3
13
5
16
9
Advertisement