Інтерпретація TTL у результати ping


11

Я працюю у постачальника послуг VoIP, і я працюю над проблемою з клієнтом, який має кабельне підключення до Інтернету, яке кидає мене на цикл.

У нього є єдиний блок, на який ми будемо робити вигляд, що це 70.141.15.0/29, шлюз у .1 та маршрутизатори у .2 та .3. Обидва маршрутизатори підключені до його кабельного модему, який, наскільки нам відомо, налаштований на те, що кабельні провайдери уявляють собі "мостовий режим".

Я обманюю обидва ці маршрутизатори одночасно з одного поля, що є системою Linux, підключеною до волокна з (ймовірно) рівня (3). Тож не треба говорити, що ніхто на планеті не знає, скільки вузлів між ними і там. Але ознайомтеся з результатами ping.

До першого маршрутизатора:

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 - це слешдот, і я можу уявити, що їхні сервери та маршрутизатори можуть бути трохи менше, "що б ми не знайшли в гаражі", ніж середній веб-сайт, який подібне змушує мене відчувати, що я можу бути на правильному шляху з останнім припущенням.

Підводячи підсумок: чи означає 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
Я не думаю, що в цьому є "стандарти". OTOH, я ніколи не бачив системи, яка не була ні тим, ні іншим.
Рон Трунк

63 звучить як незвичайне значення для початкового TTL.
ЖанП'єр

2

Значення TTL визначаються віддаленою машиною. Наприклад, якщо ви запитуєте машину Linux, її початкове значення TTL дорівнює 64. Залежно від того, скільки мереж вона перетинає, щоб повернутися до вас, TTL віднімається значенням 1. Отже, якщо ви запитаєте 8.8.8.8, що є Сервер імен Googles, він має початкове значення 128. До того часу, коли він повернеться до вас, він може мати значення 121 (це для мене). Це означає, що він перетнув 7 мереж, щоб дістатися до мене, і це була машина Windows.

Загальні значення TTL

  • Маршрутизатор - 255
  • Windows - 128
  • Linux-Mac - 64

0

128-Windows, 64-ти Linux та маршрутизатори, 60-дуже рідкісні, 32-Windows 95.

І ніхто не використовує 63, ймовірно, він потрапляє на іншого маршрутизатора на зворотному шляху.


0

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

Якщо система починається з 64 TTL, тоді, якщо TRACERT пристрій одним ударом, ви отримаєте TTL = 63.

Я спробував, і ось що у мене вийшло. Мені завжди цікаво, що TTL ... хм круто 😎


Це не відповідає на поставлене запитання.
Teun Vink
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.