что означает «***», когда traceroute

54

это результат моей трассировки

traceroute 211.140.5.120

 1  141.1.31.2 (111.1.31.2)  0.397 ms  0.380 ms  0.366 ms
 2  141.1.28.38 (111.1.28.38)  3.999 ms  3.971 ms  3.982 ms
 3  142.11.124.193 (112.11.124.133)  1.315 ms  1.533 ms  1.455 ms
 4   (201.141.0.261)  2.615 ms  2.749 ms  2.572 ms
 5   (201.141.0.82)  2.705 ms  2.564 ms  2.680 ms
 6   (201.118.231.14)  5.375 ms  5.126 ms  5.252 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

Я хочу знать, что означает *** и означает ли это, что между моим хостом и целевым сервером действительно более 30 переходов?

Larry
источник

Ответы:

46

Все реализации traceroute полагаются на пакеты ICMP (тип 11), отправляемые отправителю.

Эта программа пытается проследить маршрут, запуская тестовые пакеты UDP с небольшим ttl (время жизни), а затем прослушивая ICMP-ответ «превышено время» от шлюза. Он запускает тестирование с ttl, равным единице, и увеличивается на единицу, пока мы не получим ICMP "порт недоступен" (что означает, что мы получили "хост") или достигнем максимума (который по умолчанию равен 30 прыжкам и может быть изменен с помощью флага -m ). Три зонда (изменяются с помощью флага -q) отправляются при каждой настройке ttl, и печатается строка, показывающая ttl, адрес шлюза и время прохождения сигнала в обоих направлениях (т. Е. Три *). Если нет ответа в течение 5 сек. интервал времени ожидания (изменяется с помощью флага -w), для этого пробника выводится «*».

Таким образом, в вашем случае мы можем сделать вывод, что мы получили ответ только до 201.118.231.14. После этого узлы не отвечают на пакеты ICMP (тип 11) до 30-го перехода, который является максимальным временем жизни (максимальное количество прыжков). Вы можете увеличить максимальное время жизни, используя флаг -m.

Сачин Дивекар
источник
34

Traceoute требует ответа от целевого сервера и каждого промежуточного прыжка для создания выходных данных. Если маршрутизатор не генерирует Time-to-live exceededответ, traceroute не будет ничего знать об этом прыжке. Хоп, который выводит, * * *означает, что маршрутизатор на этом хопе не отвечает на тип пакета, который вы использовали для traceroute (по умолчанию это UDP на Unix-like и ICMP на Windows).

Если вы используете ту же версию трассировки, которая у меня есть, вы можете попробовать использовать -eопцию, чтобы попытаться обойти брандмауэры, и -Pопцию использовать пакеты ICMP, TCP или GRE вместо UDP. Вы также можете попробовать указать конкретный порт, который вряд ли будет отфильтрован (например, 80 или 25), используя эту -pопцию.

Могут быть и другие варианты, которые помогут вам получить ответ. Проверьте справочную страницу для traceroute .

Чтобы ответить на вторую часть вашего вопроса, нет, этот traceroute не означает, что между вами и целевым сервером ровно 30 переходов. Traceroute «сдается» после определенного количества прыжков. Это делается путем ограничения максимального TTL в пакетах, который по умолчанию в Linux равен 30. Вы можете изменить это с помощью -mопции. Может быть больше или меньше прыжков, но поскольку ни один из них после 6-го не отвечает, мы просто не знаем.

Ladadadada
источник
2
Добавить: в основном, если по какой-то причине хоп 30 вернулся с ответом; тогда мы знали бы, что у нас есть по крайней мере 30 прыжков. (Игнорируя любые хитрости)
user606723