Управление значением TTL для входящих (от провайдера) и исходящих (к провайдеру) пакетов

NOTE: Важно! Информация, приведенная в данной статье, предназначена только для опытных пользователей.
Начиная с версии 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 (дамп снят с сетевого интерфейса ПК, подключенного напрямую к провайдеру):

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

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

ttl2.png

Если установить галочку в указанной опции, значение TTL не будет уменьшаться для приходящих от провайдера сетевых пакетов.

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

Для управления значением 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 включительно.

Например, если необходимо, чтобы для входящих соединений на интерфейсе 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

 

 

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 126 из 132

Еще есть вопросы? Отправить запрос

Комментарии

Комментариев: 12
  • если сделать общий сброс на роутере, останутся ли ttl как задавал, или заново вводить команду?

    0
    Действия с комментариями Постоянная ссылка
  • Нужно будет устанавливать заново. При сбросе настроек роутера на заводские все пользовательские настройки удаляются.

    0
    Действия с комментариями Постоянная ссылка
  • Как сохранить изменения в роутере? Редактирую параметры TTL через telnet, но после перезагрузки роутера все сбрасывается.

    -1
    Действия с комментариями Постоянная ссылка
  • Сохранить изменения можно командой:
    system configuration save

    1
    Действия с комментариями Постоянная ссылка
  • где найти название интерфейса

    0
    Действия с комментариями Постоянная ссылка
  • Имена интерфейсов интернет-центра можно посмотреть выполнив команду show interface затем нажав Пробел и клавишу Tab.
    Обратите внимание на имена интерфейсов. Нужно обязательно учитывать регистр букв при использовании имени интерфейса в командах. Например, имена интерфейсов ISP, PPTP0, L2TP0 нужно указывать только большими (прописными) буквами, а интерфейсы PPPoE0 или OpenVPN0 содержат как прописные, так и строчные буквы.

    0
    Действия с комментариями Постоянная ссылка
  • Подскажите пожалуйста, команда "interface Home ip adjust-ttl set ‹value›" будет жёстко фиксировать TTL всех исходящих пакетов в сторону провайдера, независимо от отправляющего интерфейса (win - 128; ios, android - 64)? И какое значение нужно задать, чтобы получить на выходе WAN 64? 64 или 65?

    0
    Действия с комментариями Постоянная ссылка
  • Анатолий, команда interface ip adjust-ttl set x устанавливает TTL для входящего трафика, а для исходящего нужно использовать команду interface ip adjust-ttl send x
    Если на WAN-интерфейсе Keenetic нужно получить TTL 64, используйте команду interface ISP ip adjust-ttl send 64
    Но если для доступа в Интернет вы используете USB-модем, то для интерфейса модема нужно использовать команду interface ip adjust-ttl send 65, т.к. роутер будет отправлять в модем все пакеты с TTL равным 64, а дальше модем при отправке к оператору, уменьшит это значение на 1, т.е. на выходе будет TTL 64.

    1
    Действия с комментариями Постоянная ссылка
  • Большое спасибо! Да, скопировал не ту команду при написании сообщения. И в этом случае будет уже не важно, какие устройства стоят за роутером?

    0
    Действия с комментариями Постоянная ссылка
  • В разделе "Параметры IP и DNS" отсутствует опция "Не уменьшать TTL".
    Версия ОС 3.3.16. Как включить данную опцию?

    Ответ на ввод команды

    (config)> show interface interface UsbLte0 ip adjust-ttl send 65
    Command::Base error[7405602]: argument parse error.

    0
    Действия с комментариями Постоянная ссылка
  • Геннадий, эта настройка была убрана из веб-конфигуратора как не нужная для большинства подключений, ее активация отключает все аппаратные ускорители, что серьезно снижает скорости работы Интернета через роутер.
    Настройка с помощью команд осталась (например: interface UsbLte0 ip adjust-ttl send 65).

    4
    Действия с комментариями Постоянная ссылка
  • Из последнего комментария/ответа "Denis Kurkov" для "Геннадий" следует, что включение опции "не уменьшать TTL" всегда (на любом интерфейсе) отключало всё аппаратное ускорение (значительно снижает производительность роутера).
    1) Я правильно понял?
    2) Почему это не встречалось нигде ранее в описании?
    3) А значительное снижение только от манипуляции с TTL это сколько: 1-3% или 10-20%?
    4) Аппаратного ускорения, также перестанет работать и для всего остального? Значит общая производительность может снизится и на 50% под большой нагрузкой?

    2
    Действия с комментариями Постоянная ссылка

Войдите в службу, чтобы оставить комментарий.