Почему traceroute отображает много IP-адресов для одного и того же прыжка?

14

Вот путь от моего дома до sina.com.cn.

 traceroute -n   sina.com.cn
traceroute to sina.com.cn (202.108.33.60), 30 hops max, 60 byte packets
 1  192.168.31.1  0.476 ms  0.587 ms  0.695 ms
 2  140.0.5.1  2.557 ms  2.699 ms  3.065 ms
 3  221.11.155.65  4.501 ms * 221.11.165.9  5.045 ms
 4  * 221.11.156.18  26.480 ms 221.11.165.233  22.950 ms
 5  219.158.9.97  14.176 ms * 219.158.19.149  21.472 ms
 6  219.158.9.97  18.142 ms 219.158.8.81  44.856 ms  52.539 ms
 7  124.65.194.190  53.162 ms 219.158.8.81  50.614 ms 124.65.194.190  47.266 ms
 8  124.65.194.190  50.760 ms 61.148.143.26  49.351 ms  53.515 ms
 9  210.74.176.138  43.056 ms  43.286 ms 61.148.143.26  53.712 ms
10  202.108.33.60  46.385 ms 210.74.176.138  42.896 ms  46.931 ms

192.168.31.1 - мой домашний роутер.
140.0.5.1 - мой публичный ip, который предоставляет провайдер.

curl  ifconfig.me
140.0.5.1 

В третьей строке написано

3  221.11.155.65  4.501 ms * 221.11.165.9  5.045 ms

Почему есть два IP-адреса 221.11.155.65 и 221.11.165? Что это означает?

Пакет перескакивает с 140.0.5.1 на 221.11.155.65, затем переходит с 221.11.155.65 на 221.11.165?

SCRAPY
источник
Одно уточнение. Если провайдер дал вам IP-адрес, он не должен отображаться в выполняемых вами командах traceroute. И если вы сделаете трассировку IP-адреса, он будет отображаться как прыжок 1. Скорее всего, у вас нет IP-адреса, и 140.0.5.1это своего рода CGN, который ведет себя немного необычно.
Касперд

Ответы:

4

TraceRoute использует поля параметров при отправке пакетов протокола управляющих сообщений Интернета (icmp). Каждый шлюз или точка маршрутизации в сети считывает пакеты на одном интерфейсе, решает, куда их направить, и записывает их на другом интерфейсе. Этот интерфейс предположительно ближе к месту назначения. Пока маршрутизатор пересылает пакет, он также вносит изменения в заголовок пакета. Сокращает поле «время жизни» или число переходов на единицу. Каждый шлюз на пути пакета к месту назначения уменьшает это поле.

Когда поле счетчика переходов падает до нуля, многие маршрутизаторы отправляют обратно сообщение icmp, сообщающее, где был отброшен пакет. Чтобы определить, какой IP-адрес находится на определенном расстоянии, traceroute отправит пакеты с параметрами времени жизни и даст мне ответ, когда истечет время ожидания. Сообщения с количеством переходов, начинающимся с 1 и повышающимся, будут возвращать IP-адрес постепенно более удаленных маршрутизаторов. Так как traceroute делает это несколько раз, вы получите ответ (если у вас есть богато подключенная сеть, как, например, Интернет), несколько ответов в некоторых случаях. может случиться так, что конкретный шлюз ответит на разных расстояниях, потому что маршрут к этому шлюзу проходил через разные прыжки.

ElderDelp
источник
11

В tracerouteкачестве информации вы можете указать, что у вас есть как минимум 2 маршрута для достижения пункта назначения, начиная с маршрутизатора:

           IP adresses                 Internet operator

           140.0.5.1                   Firstmedia - Indonesia
             /    \
            /      \
221.11.155.65      221.11.165.9        China Unicom - China

Это нормальная ситуация для огромного интернет-оператора: иметь много маршрутов, чтобы противостоять обычным инцидентам в Интернете.

-aВариант tracerouteможет помочь вам определить , к какому оператору каждый IP - адрес принадлежит.

Вот пример большего дерева маршрутов, которое вы можете получить даже с вашего мобильного телефона через сетевой инструмент, такой как сервер http://ping.eu/traceroute/ : трассировка до 140.0.5.1

Дан
источник
Нет опции для моей трассировки в Debian9.
скрап
traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate, ...] [-i устройство] [-m max_ttl] [-p порт] [-s src_addr] [-q запросов] [-N squeries] [ -t tos] [-l flow_label] [-w waittimes] [-z sendwait] [-UL] [-D] [-P proto] [--sport = порт] [-M метод] [-O mod_options] [ --mtu] [--back] host [packet_len]
scrapy
Я использовал FreeBSD здесь.
дан
8

Из traceroute(8)руководства по OpenBSD:

Отправляются три зонда (точное число можно изменить с помощью этой -q опции) и печатается строка, показывающая предел TTL или скачка, адрес шлюза и время прохождения сигнала в обоих направлениях. Если ответы зондирования поступают из разных шлюзов, будет напечатан адрес каждой отвечающей системы.

Руководство для Linux будет иметь аналогичную формулировку.

Множество IP-адресов, которые вы видите, являются шлюзами, отвечающими на отдельные зонды в определенных пределах скачков.

В вашем случае три проверки привели к ответам, которые в пределе 3 прыжка вернулись к вам из шлюзов 221.11.155.65 и 221.11.165.9.

Итак, ответ таков: нет, пакет не переходит между двумя хостами, перечисленными в этой строке, отправлено три зонда, и они выбирают два разных маршрута из 140.0.5.1.

Кусалананда
источник
1
@RuiFRibeiro Я уточнил свой ответ, чтобы ответить на заданный вопрос.
Кусалананда
Действительно, я подтвердил, по крайней мере, в Debian traceroute имеет такую ​​же формулировку.
Руи Ф Рибейро