Я працюю у постачальника послуг 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 щось надійне?