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 (дамп снят с сетевого интерфейса ПК, подключенного к интернет-центру):

interface ISP ip adjust-ttl inc 1
в интерфейсе командной строки (CLI) интернет-центра.
Также микропрограмма KeeneticOS позволяет управлять значением TTL, уменьшая или увеличивая его на определенное значение.
Допустим, если вы знаете значение параметра TTL в пакетах приходящих от провайдера, то с помощью интернет-центра серии Keenetic можно отрегулировать значение TTL для использования в вашей сети.
Чтобы увеличить значение TTL, нужно использовать команду
interface ISP ip adjust-ttl inc x
Чтобы уменьшить значение TTL, нужно использовать команду
interface ISP ip adjust-ttl dec x
Чтобы установить значение TTL, нужно использовать команду
interface ISP ip adjust-ttl set x
где x – величина изменения или устанавливаемого значения TTL (может принимать значения от 1 до 255 включительно).
interface Home ip adjust-ttl (inc | dec | set) ‹value›
interface Home ip adjust-ttl inc 1
interface {name} ip adjust-ttl send {ttl}
interface ISP ip adjust-ttl send 128
interface {name} no ip adjust-ttl
Комментарии
если сделать общий сброс на роутере, останутся ли ttl как задавал, или заново вводить команду?
Нужно будет устанавливать заново. При сбросе настроек роутера на заводские все пользовательские настройки удаляются.
Как сохранить изменения в роутере? Редактирую параметры TTL через telnet, но после перезагрузки роутера все сбрасывается.
Сохранить изменения можно командой:
system configuration save
где найти название интерфейса
Имена интерфейсов интернет-центра можно посмотреть выполнив команду show interface затем нажав Пробел и клавишу Tab.
Обратите внимание на имена интерфейсов. Нужно обязательно учитывать регистр букв при использовании имени интерфейса в командах. Например, имена интерфейсов ISP, PPTP0, L2TP0 нужно указывать только большими (прописными) буквами, а интерфейсы PPPoE0 или OpenVPN0 содержат как прописные, так и строчные буквы.
Подскажите пожалуйста, команда "interface Home ip adjust-ttl set ‹value›" будет жёстко фиксировать TTL всех исходящих пакетов в сторону провайдера, независимо от отправляющего интерфейса (win - 128; ios, android - 64)? И какое значение нужно задать, чтобы получить на выходе WAN 64? 64 или 65?
Анатолий, команда 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.
Большое спасибо! Да, скопировал не ту команду при написании сообщения. И в этом случае будет уже не важно, какие устройства стоят за роутером?
В разделе "Параметры IP и DNS" отсутствует опция "Не уменьшать TTL".
Версия ОС 3.3.16. Как включить данную опцию?
Ответ на ввод команды
(config)> show interface interface UsbLte0 ip adjust-ttl send 65
Command::Base error[7405602]: argument parse error.
Геннадий, эта настройка была убрана из веб-конфигуратора как не нужная для большинства подключений, ее активация отключает все аппаратные ускорители, что серьезно снижает скорости работы Интернета через роутер.
Настройка с помощью команд осталась (например: interface UsbLte0 ip adjust-ttl send 65).
Войдите в службу, чтобы оставить комментарий.