Сегодня, когда я пытался отследить www.google.com с моего маршрутизатора и компьютера, я увидел странное поведение.

Трассировка маршрута

traceroute to www.google.com (173.194.38.176), 30 hops max, 40 byte packets
 1  10.74.128.182 (10.74.128.182)  69.669 ms 10.74.128.178 (10.74.128.178)  36.885 ms 10.74.128.182 (10.74.128.182)  38.042 ms
 2  10.74.128.181 (10.74.128.181)  36.468 ms  37.848 ms  35.048 ms
 3  10.64.7.74 (10.64.7.74)  75.262 ms 10.64.7.86 (10.64.7.86)  44.339 ms  40.346 ms
 4  kph-148-48.tm.net.my (203.106.148.48)  40.021 ms  48.847 ms  39.153 ms
 5  10.64.7.90 (10.64.7.90)  41.705 ms  42.232 ms  40.001 ms
 6  10.55.34.234 (10.55.34.234)  48.969 ms  48.335 ms  49.216 ms
 7  * * 72.14.203.186 (72.14.203.186)  47.921 ms
 8  209.85.242.240 (209.85.242.240)  61.557 ms  61.469 ms  47.117 ms
 9  209.85.242.232 (209.85.242.232)  59.473 ms  61.54 ms  55.777 ms
10  72.14.233.105 (72.14.233.105)  64.806 ms  61.513 ms  59.459 ms
11  sin04s02-in-f16.1e100.net (173.194.38.176)  61.45 ms  56.76 ms  55.513 ms

Трассировка ПК

Tracing route to www.google.com [173.194.38.179] over a maximum of 30 hops:
  1     1 ms    <1 ms     1 ms  router.asus.com [192.168.1.1] 
  2   118 ms    81 ms   118 ms  10.74.128.178 
  3    38 ms    37 ms    39 ms  10.74.128.177 
  4    45 ms    50 ms    72 ms  10.64.7.86 
  5    43 ms    41 ms    41 ms  kph-148-48.tm.net.my [203.106.148.48] 
  6     *        *        *     Request timed out.
  7     *        *        *     Request timed out.
  8     *        *        *     Request timed out.
  And onwards like that…

  Trace complete.
  1. Почему существуют два разных адреса (10.74.128.182 и 10.74.128.178)? Означает ли это, что пакет маршрутизируется на 2 разных маршрутизатора в разное время? Если это так, почему команда tracert на моем ПК (Windows 7) не показала это?

  2. В трассировке маршрутизатора оба IP-адреса первой и второй трассировки (10.74.128.178 и 10.74.128.181) находятся в одном сетевом адресе, поскольку это IP-адрес класса A и классифицируется по первым 8 битам, равным 10. Поэтому мне просто интересно, как можно отправить пакет на два маршрутизатора, которые находятся в одной сети?

  3. Почему команда tracert на моем ПК показывает пустой результат * после kph-148-48.tm.net.my [203.106.148.48] тогда как полные трассы были получены командой router tracert ?

  4. В трассировке маршрутизатора, после строки 4, которая является публичным адресом (203.106.148.481), следующие 2 прыжка являются частными адресами (10.64.7.90 и 10.55.34.234). После этого он вернулся на публичный адрес, который принадлежит Google (72.14.203.186). Я думал, что частный адрес в Интернете не маршрутизируется? Когда я пытаюсь пропинговать эти 2 частных адреса, я получил ответ. Поэтому мне просто интересно, как мой компьютер может получить доступ к IP-адресам в частных сетях после публичного адреса.

1 ответ1

7

Traceroute работает, отправляя IP-пакеты с последовательно более высокими значениями IP TTL (время жизни): 1,2,3 ... Каждый прыжок уменьшает TTL. Когда он достигает 0, пакет не маршрутизируется, и источнику отправляется сообщение об превышении времени ICMP, и именно так система, выполняющая traceroute, определяет маршрут.

  1. Похоже, это версия traceroute, встречающаяся во многих установках Linux. Эта команда traceroute отправляет три пакета для каждого значения TTL. Итак, вы видите, что два из пакетов пошли к 10.74.128.182 а один - к 10.74.128.178 .

  2. Поскольку это первый прыжок после вашего маршрутизатора, это, вероятно, адрес шлюза маршрутизатора. Возможно, что HSRP или аналогичный находится в игре: вероятно, есть два устройства балансировки нагрузки с плавающим IP-адресом. Например: вы используете адрес шлюза 10.0.0.1, но за кадром это фактически указывает на 10.0.0.2 и 10.0.0.3 которые распределяют нагрузку. На самом деле это возможно с использованием HSRP . Классовая маршрутизация больше не используется. диапазон 10.0.0.0/8 - это просто IP-адреса RFC1918, которые использует ваш провайдер.

  3. Разные версии traceroute отправляют разные пакеты. Версия Linux, которую вы используете на маршрутизаторе, отправляет UDP-пакеты по умолчанию; Версия Windows на вашем компьютере отправляет пинги. Похоже, что пинг блокируется между прыжками 5 и 6, но это только предположение. Попробуйте использовать другую утилиту traceroute на вашем компьютере, и я уверен, что вы получите другие результаты.

  4. Вы правы. Адреса RFC1918 не маршрутизируются в общедоступном Интернете. Так что мой ответ таков: несмотря на то, что вы видите общедоступный IP-адрес на переходе 4, вы еще не покинули своего интернет-провайдера. Если это так, вы не сможете получать сообщения с истекшим сроком действия TTL с адресами частного источника. Аналогичная IP-адресация в переходах 3 и 5 также предполагает это: они оба используют адреса в 10.64.7.0/24 (вероятно, не совпадение). Достаточно сказать следующее: IP-адреса в значительной степени произвольны, и в пределах своей собственной сети ваш провайдер может свободно иметь маршрутизаторы, которые имеют интерфейсы как с общедоступными, так и с частными интерфейсами. Это случай хмеля 3 и 4. Пакет также может проходить через маршрутизаторы без публичных IP-адресов после выхода из сети интернет-провайдера; в этом случае вы не должны получать ответ traceroute.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .