Меняем TTL в Linux

25.10.2022, 02:28

Эти сети передаются пакетами. Пакеты перед тем как попасть адресату проходят несколько других сетевых узлов, чтобы оказаться в начале локальной сети адресата, а потом уже непосредственно к нему. Нередко подобные пакеты сбиваются с маршрута. Чтобы их направить на верный путь в сети, каждому пакету придали определенное время жизни.

За время своей жизни он отвечает параметр TTL. Это число узлов, которые может пройти пакет, перед уничтожением. Во время прохождения каждого узла значение TTL снижается до тех пор, пока время не достигнет значения нуль Чем больше TTL, тем более запутанные сети может проходить пакет.

Как изменить TTL в Linux

Низкоуровневые параметры сети TTL в Linux управляются ядром. Настраивать его можно при помощи интерфейса настройки ядра. Какой TTL используется в системе.? Воспользуемся командой ping:

$ ping 127.0.0.1

Меняем TTL в Linux

В данных об отправке пакета виден TTL, с которым он был отправлен. Видим,что используется значение 64. Для Windows применяется значение TTL 128. Обычно этого хватит, так как между узлами сети минимум 20-30 маршрутизаторов. Не всегда стоит менять TTL, чтобы пакеты смогли достигать цели.

Изменение TTL возможно с корректировкой параметра net.ipv4.ip_default_ttl.

Пробуем такую команду:

$ sudo sysctl -w net.ipv4.ip_default_ttl=65

Для того чтобы изменения сохранились после перезагрузки можно прописать эту строчку настроек в файл /etc/sysctl.conf:

$ sudo vi /etc/sysctl.conf

net.ipv4.ip_default_ttl=65

После TTL будет 65:

Меняем TTL в Linux

Если вы не хотите менять параметры ядра, можно модифицировать TTL в пакеты при его прохождении через сетевой фильтр iptables. Для этого выполните такую команду:

$ iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65

Это тоже будет работать. Смена TTL Linux выполняется совсем не сложно.