Зміна значень TTL
Важливо
Інформація, наведена в цій статті, призначена лише для досвідчених користувачів.
Починаючи з версії 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 (додаткову інформацію дивіться у статтях «Використання вбудованого модуля захоплення мережевих пакетів» та Захоплення мережевих пакетів за допомогою 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