NOTE: Важливо! Інформація в цій статті призначена лише для досвідчених користувачів. Починаючи з KeeneticOS 3.1, налаштування TTL доступні лише з маршрутизатора інтерфейсу командного рядка (CLI).
Time To Live (TTL) у комп’ютерних мережах – це обмеження в часі, або кількість ітерацій або переходів, протягом яких набір даних (пакет) може існувати до того, як він зникне. Значення TTL можна розуміти як верхню межу для часу IP-дейтаграми в мережі. Поле TTL встановлюється відправником дейтаграми і зменшується кожним вузлом (наприклад, маршрутизатором) на своєму шляху відповідно до часу, проведеного в цьому пристрої або протоколі обробки. Якщо поле TTL стає нульовим до того, як дейтаграма прибуде до місця призначення, дейтаграма відкидається, а ICMP-пакет з кодом 11 — ICMP Time Exceeded надсилається відправнику. Відкидання прострочених пакетів дозволяє уникнути ситуацій, коли недоставлені дейтаграми продовжують циркулювати в Інтернеті безперервно, перевантажуючи мережу (наприклад, коли формуються зациклені маршрути через неправильну маршрутизацію).
Маршрутизатори Keenetic мають можливість керувати значенням TTL для вхідних (від вашого провайдера) і вихідних (до вашого провайдера) пакетів. За замовчуванням, якщо ми підключаємося до маршрутизатора для доступу до Інтернету, значення TTL зменшиться на 1, коли пакет проходить через маршрутизатор як для вхідних (WAN>LAN), так і для вихідних (LAN>WAN) пакетів.
Наприклад, розглянемо дамп мережевих пакетів у програмі аналізатора трафіку Wireshark (додаткову інформацію див. у статтях Захоплення мережевих пакетів та Capturing network packets with Wireshark) і подивимося на зміни TTL для вхідного пакета (від провайдера).
При підключенні безпосередньо до провайдера TTL дорівнює 56 (дамп береться з мережевого інтерфейсу ПК, підключеного безпосередньо до провайдера):
Коли ви підключите цей ПК через роутер, це значення зменшиться і стане 55 (дамп береться з мережевого інтерфейсу ПК, підключеного до маршрутизатора):
У деяких випадках це зниження може бути критичним (наприклад, деякі провайдери встановлюють TTL=1 для пакетів, що надходять безпосередньо до абонента, щоб запобігти використанню маршрутизаторів у своїй мережі).
Щоб контролювати значення TTL для вихідних пакетів на вибраному інтерфейсі, скористайтеся командою:
interface {name} ip adjust-ttl send {ttl}
{ttl} — значення, на яке змінююється TTL. Може приймати значення від 1 до 255 включно.
Наприклад, якщо ви хочете, щоб пакети, що надходять до провайдера, мали такий самий TTL, як якщо б комп’ютер Windows був підключений безпосередньо до провайдера, а не через маршрутизатор, виконайте таку команду:
interface ISP ip adjust-ttl send 128
У KeeneticOS 3.7 і вище, щоб змінити параметр TTL всіх пакетів для вхідних підключень, скористайтеся командою:
interface {name} ip adjust-ttl recv {ttl}
{ttl} — значення, на яке змінююється TTL. Може приймати значення від 1 до 255 включно.
Наприклад, якщо ви хочете, щоб пакети мали TTL=65 для вхідних підключень на інтерфейсі UsbQmi0, використовуйте таку команду:
interface UsbQmi0 ip adjust-ttl recv 65
Щоб відмінити налаштування, пов’язані зі зміною TTL в інтерфейсі {name}, скористайтеся командами:
(config-if)> no ip adjust-ttl recv (config-if)> no ip adjust-ttl send