Skip to main content

Руководство пользователя

Управление значением TTL

Важно

Информация, приведенная в данной статье, предназначена только для опытных пользователей.

Начиная с версии KeeneticOS 3.1 настройка TTL доступна только из интерфейса командной строки (CLI) интернет-центра.

Time To Live (TTL) в компьютерных сетях — предельный период времени или число итераций или переходов, за который набор данных (пакет) может существовать до своего исчезновения. Значение TTL может рассматриваться как верхняя граница времени существования IP-датаграммы в сети. Поле TTL устанавливается отправителем датаграммы и уменьшается каждым узлом (например, маршрутизатором) на пути его следования, в соответствии со временем пребывания в данном устройстве или согласно протоколу обработки. Если поле TTL становится равным нулю до того, как датаграмма прибудет в пункт назначения, то такая датаграмма отбрасывается и отправителю отсылается ICMP-пакет с кодом 11 — Превышение TTL (ICMP Time Exceeded). Отбрасывание пакетов с истекшим временем жизни позволяет избежать ситуаций, когда недоставленные датаграммы продолжают "вечно" циркулировать в системе Интернет, перегружая сеть (например, при образовании зацикленных маршрутов из-за некорректной маршрутизации).

В интернет-центрах Keenetic существует возможность управления значением TTL для входящих (от провайдера) и исходящих (к провайдеру) пакетов. По умолчанию, если мы подключимся к интернет-центру для выхода в Интернет, значение TTL будет уменьшаться на 1 при прохождении пакета через маршрутизатор как для входящих пакетов (WAN>LAN), так и для исходящих (LAN>WAN).

Для примера, посмотрим дампы сетевых пакетов в программе анализаторе трафика Wireshark (дополнительную информацию вы найдете в статьях «Использование встроенного модуля захвата сетевых пакетов» и «Захват сетевых пакетов с помощью программы Wireshark») и увидим изменения TTL для входящего пакета (от провайдера).

Так, при подключении напрямую к провайдеру TTL имеет значение 56 (дамп снят с сетевого интерфейса ПК, подключенного напрямую к провайдеру):

ttl-change-01-en.jpg

При подключении этого ПК через интернет-центр это значение уменьшится и станет равным 55 (дамп снят с сетевого интерфейса ПК, подключенного к интернет-центру):

ttl-change-02-en.jpg

В некоторых случаях данное уменьшение может быть критичным (например, некоторые провайдеры выставляют TTL=1 на пакеты, идущие уже к абоненту для предотвращения использования маршрутизаторов в своей сети), поэтому в настройках интернет-центра Keenetic (до версии KeeneticOS 3.1) есть опция "Не уменьшать TTL". Эта опция была доступна в веб-интерфейсе интернет-центра на странице "Проводной" в разделе "Параметры IP и DNS", нажав "Показать дополнительные настройки IPoE".

Для управления значением TTL для исходящих пакетов на выбранном интерфейсе используется команда:

interface {name} ip adjust-ttl send {ttl}

{ttl} — величина изменения TTL. Может принимать значения от 1 до 255 включительно.

Например, если необходимо, чтобы уходящие в сторону провайдера (ISP) пакеты имели такой же TTL, как если бы компьютер на ОС Windows был подключен к провайдеру напрямую, а не через маршрутизатор, дайте следующую команду:

interface ISP ip adjust-ttl send 128

Начиная с версии KeeneticOS 3.7 для изменения параметра TTL всех пакетов для входящих соединений используется команда:

interface {name} ip adjust-ttl recv {ttl}

{ttl} — величина изменения TTL. Может принимать значения от 1 до 255 включительно.

Например, если необходимо, чтобы для входящих соединений на интерфейсе UsbQmi0 пакеты имели TTL=65, используйте следующую команду:

interface UsbQmi0 ip adjust-ttl recv 65

Для отмены настроек, связанных с изменением TTL, на интерфейсе {name} используйте команды:

(config-if)> no ip adjust-ttl recv
(config-if)> no ip adjust-ttl send