Интерпретация TTL в результатах пинга

11

Я работаю на поставщика услуг VoIP, и я работаю над проблемой с клиентом, у которого есть кабельное подключение к интернету, которое бросает меня в тупик.

У него есть один блок, который мы будем притворяться 70.141.15.0/29, со шлюзом в .1 и маршрутизаторами в .2 и .3. Оба маршрутизатора подключены к его кабельному модему, который, насколько нам известно, настроен на то, что провайдеры кабельных сетей представляют «мостовой режим».

Я пингую оба этих маршрутизатора одновременно из одной и той же системы, которая представляет собой систему Linux, подключенную к оптоволокну с (вероятно) уровня (3). Излишне говорить, что никто на планете не знает, сколько узлов существует между здесь и там. Но проверьте результаты пинга.

К первому роутеру:

64 bytes from 70.141.15.2: icmp_seq=2637 ttl=47 time=45.0 ms
64 bytes from 70.141.15.2: icmp_seq=2638 ttl=47 time=39.2 ms
64 bytes from 70.141.15.2: icmp_seq=2639 ttl=47 time=37.3 ms
64 bytes from 70.141.15.2: icmp_seq=2640 ttl=47 time=46.1 ms
64 bytes from 70.141.15.2: icmp_seq=2641 ttl=47 time=45.8 ms
64 bytes from 70.141.15.2: icmp_seq=2642 ttl=47 time=46.5 ms
64 bytes from 70.141.15.2: icmp_seq=2643 ttl=47 time=40.9 ms

Со второго:

64 bytes from 70.141.15.3: icmp_seq=631 ttl=239 time=54.7 ms
64 bytes from 70.141.15.3: icmp_seq=637 ttl=239 time=40.5 ms
64 bytes from 70.141.15.3: icmp_seq=638 ttl=239 time=40.3 ms
64 bytes from 70.141.15.3: icmp_seq=639 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=640 ttl=239 time=44.9 ms
64 bytes from 70.141.15.3: icmp_seq=641 ttl=239 time=38.4 ms
64 bytes from 70.141.15.3: icmp_seq=642 ttl=239 time=38.8 ms

Проверьте значения TTL. Имеет ли это смысл? Эти устройства находятся рядом друг с другом и подключены к этому модему через отдельные порты коммутатора. Как может появиться еще около 200 прыжков? От пинга других сайтов у меня складывается впечатление, что TTL просто не реализован так, как я думаю. Я сомневаюсь, что между мной и 4.2.2.2, или woot.com, есть 200 прыжков, но я получаю менее 50 результатов TTL от обоих.

Один из этих маршрутизаторов (с более высоким TTL) от Fortinet, а другой - пользовательское устройство на основе Linux. Я почти уверен, что у Forti есть домашний сетевой стек, в то время как Linux-бокс использует все, что поставляется с исходным архивом, загруженным разработчиками аппаратного обеспечения. Вполне вероятно, что эхо ICMP реализовано в причудливой форме на одном из них и намеренно отправляет все ответы с TTL 50?

Я также замечаю, что один из немногих сайтов, которые я могу найти, который отвечает здравомыслящим TTL, это slashdot, и я могу предположить, что их серверы и маршрутизаторы могут быть немного меньше «того, что мы нашли в гараже», чем обычный веб-сайт, который вроде как заставляет меня чувствовать, что я могу быть на правильном пути с этим последним предположением.

Подводя итог: означает ли TTL для ping что-нибудь надежное?

Дэниел Томпсон
источник
3
Я где-то читал, что Windows XP и Windows 7 устанавливают TTL как 128, а для систем Linux они обычно имеют TTL 64. Не идеально, но иногда полезно знать.
Шон

Ответы:

22

Излишне говорить, что никто на планете не знает, сколько узлов существует между здесь и там.

Я знаю, сколько узлов. Их ровно 16. Причина, по которой вы получаете разные ответы, заключается в том, что разные операционные системы используют разные начальные значения для TTL. Некоторые устройства используют 255, в то время как другие используют 63. Таким образом, одно из устройств, на которые вы отправляете эхо-запрос, отправляет ответ с TTL, установленным в 255. К тому времени, когда он возвращается к вам, он уменьшается до 239. Это 16 прыжков.

Другое устройство, на которое вы отправляете эхо-запрос, устанавливает TTL равным 63. Поэтому, когда оно вам подходит, значение равно 47

255-239 = 63-47 = 16.

Если вы хотите быть уверены в количестве прыжков между вами и целью, используйте traceroute.

Рон Транк
источник
Спасибо! Я делал предположение, которое теперь осознаю, что оно безосновательно (что TTL возвращаемого пакета каким-либо образом диктуется TTL пакета запроса). Еще один вопрос: 255 и 63 основанные на стандартах значения или произвольные? То есть могу ли я смело предположить, что любой трехзначный TTL начал жизнь как 255 и т. Д.?
Дэниел Томпсон,
3
Я не думаю, что есть "стандарты" об этом. ОТО, я никогда не видел систему, которая не была бы ни той, ни другой.
Ron Trunk
63 звучит как необычное значение для начального TTL.
ЖанПьер
2

Значения TTL определяются удаленной машиной. Например, если вы пропингуете компьютер с Linux, его исходное значение TTL равно 64. В зависимости от того, сколько сетей он пересекает, чтобы вернуться к вам, TTL вычитается значением 1. Так что, если вы пропингуете 8.8.8.8, то есть Googles nameserver, он имеет исходное значение 128. К тому времени, когда он возвращается к вам, он может иметь значение 121 (это для меня). Это означает, что он пересек 7 сетей, чтобы добраться до меня, и это была машина Windows.

Общие значения TTL

  • Маршрутизатор - 255
  • Windows - 128
  • Linux-Mac - 64
dubu2
источник
0

128-Windows, 64-большинство Linux и маршрутизаторы, 60-очень редко, 32-Windows 95.

И никто не использует 63, это, вероятно, поражает другой маршрутизатор на обратном пути.

Фред Филлипс
источник
0

попробуйте "Tracert [IP ADDRESS]", чтобы увидеть общее количество маршрутов.

Если система запускается с 64 TTL, то, если вы ТРАКТИРУЕТЕ устройство одним прыжком, вы получите TTL = 63.

Я пытался, и вот что я получил. Мне всегда интересно, ТТЛ ... хм круто 😎

user56130
источник
Это не отвечает на заданный вопрос.
Теун Винк