Как поменять ttl на linux
Перейти к содержимому

Как поменять ttl на linux

  • автор:

Как навсегда изменить TTL в Ubuntu?

Пробовал делать вот так, но увы, после перезагрузки ttl=64.

Deleted
12.05.18 11:51:53 MSK
Deleted
( 12.05.18 11:53:22 MSK )
Ответ на: комментарий от Deleted 12.05.18 11:53:22 MSK

Попробовал вот так:

sudo sysctl -w net.ipv4.ip_default_ttl=65

Но после перезагрузки все равно 64.
Deleted
( 12.05.18 11:56:08 MSK )

В нормальных дистрах есть /etc/sysctl.conf, не знаю как там в убунте.

ass ★★★★
( 12.05.18 11:58:47 MSK )
Ответ на: комментарий от Deleted 12.05.18 11:56:08 MSK

А, да, извини. Это временная установка.

Лучший вариант, наверное, это создать файл, какой-нибудь /etc/sysctl.d/99_default_ttl.conf, в который добавить net.ipv4.ip_default_ttl=65. Затем sudo sysctl —system.

Deleted
( 12.05.18 12:09:12 MSK )
Ответ на: комментарий от Deleted 12.05.18 12:09:12 MSK

Спасибо, это помогло =)

Deleted
( 12.05.18 16:04:52 MSK )
Ответ на: комментарий от ass 12.05.18 11:58:47 MSK

Это во всех дистрах

das_tier ★★★★★
( 12.05.18 18:26:14 MSK )
Ответ на: комментарий от das_tier 12.05.18 18:26:14 MSK

% cat /etc/sysctl.conf cat: /etc/sysctl.conf: No such file or directory 

RazrFalcon ★★★★★
( 12.05.18 18:43:40 MSK )
Ответ на: комментарий от RazrFalcon 12.05.18 18:43:40 MSK

Это linux? Ща я с Соляры вывод принесу.

das_tier ★★★★★
( 13.05.18 00:36:17 MSK )
Ответ на: комментарий от das_tier 13.05.18 00:36:17 MSK
RazrFalcon ★★★★★
( 13.05.18 12:40:21 MSK )
Ответ на: комментарий от RazrFalcon 13.05.18 12:40:21 MSK

Ого, в Генту файл /etc/sysctl.conf считается legacy. А современным подходом считаются конфиги в /etc/sysctl.d/ ?

das_tier ★★★★★
( 13.05.18 14:13:10 MSK )
Ответ на: комментарий от RazrFalcon 13.05.18 12:40:21 MSK

Хз почему у тебя так, но вот:

$ qfile /etc/sysctl.conf sys-apps/baselayout (/etc/sysctl.conf) 

Deleted
( 13.05.18 14:16:41 MSK )
Ответ на: комментарий от Deleted 13.05.18 14:16:41 MSK

Понятно, причина в этом:

$ equery d baselayout * These packages depend on baselayout: sys-fs/lvm2-2.02.166-r2 (>=sys-apps/baselayout-2.2) 

Видимо по каким-то причинам его не убрали из baselayout

Deleted
( 13.05.18 14:22:59 MSK )
Последнее исправление: Deleted 13.05.18 14:26:21 MSK (всего исправлений: 1)

30 ноября 2018 г.
Ответ на: комментарий от Deleted 12.05.18 12:09:12 MSK

жизнь спас 🙂 Спасибо

pwnz434
( 30.11.18 17:32:15 MSK )
8 февраля 2019 г.
Ответ на: комментарий от Deleted 12.05.18 12:09:12 MSK
anonymous
( 08.02.19 17:39:46 MSK )
Ответ на: комментарий от ass 12.05.18 11:58:47 MSK

нормальные это те, с которыми ты сталкивался?

chenbr0
( 08.02.19 18:09:21 MSK )
21 августа 2019 г.
Ответ на: комментарий от Deleted 12.05.18 12:09:12 MSK

Всё помогло лучший вариант что можно было придумать

Rocker
( 21.08.19 00:17:12 MSK )
Ответ на: комментарий от das_tier 12.05.18 18:26:14 MSK

Не во всех, в генту делали так что этот файл не читался. Там патч для какого-то древнего бага в procps был, из генту патч выкинули и всё, файл больше не считывается. Обнаружить это конечно можно только постфактум и опытным путём.

Как навсегда изменить время жизни пакета (TTL) в Ubuntu

В статье о времени жизни пакета был приведён пример изменения TTL в Windows. Сегодня поговорим о том, как поменять значение TTL по умолчанию в Ubuntu-подобных дистрибутивах Linux. Здесь основной нюанс заключается в следующем — поменять значение TTL просто, но нужно его ещё и сохранить.

Для того, чтобы проверить время жизни пакетов в Linux, достаточно также запустить ping localhost. По умолчанию в Linux TTL=64. Для изменения этого значения в Ubuntu и других похожих дистрибутивах используйте команду

sysctl -w net.ipv4.ip_default_ttl=65

Конечно, можно указать и другое значение, кроме 65. На скриншоте ниже видно, что теперь команда ping отображает TTL=65.

Как навсегда изменить время жизни пакета (TTL) в Ubuntu

Однако настройка TTL сбросится после перезагрузки. Для того, чтобы этого не происходило, нужно добавить данную настройку в автозагрузку. Производится эта настройка из-под пользователя root.

Помните, что постоянно работать под пользователем root нельзя. Используйте его только для настройки системы.

Нам нужно создать файл в каталоге /etc/sysctl.d, я дал ему имя 99_default_ttl.conf, но оно не обязательно должно быть именно таким. Для создания файла я использую удобную мне команду cat (подробнее о командах для создания файлов в Linux можно прочитать по этой ссылке):

cat > /etc/sysctl.d/99_default_ttl.conf

После нажатия enter данные со стандартного ввода (т.е. с клавиатуры) будут перенаправлены в файл /etc/sysctl.d/99_default_ttl.conf. Введите нужную нам настройку, а именно:

net.ipv4.ip_default_ttl=65

и нажмите enter. Комбинации Ctrl + D или Ctrl + C запишут изменения в файл. Затем применяем настройки командой

sysctl --system

На скриншоте ниже виден весь описанный тут процесс.

Как навсегда изменить время жизни пакета (TTL) в Ubuntu

Как видите, значение TTL в команде ping также изменилось. И данная настройка сохранится после перезагрузки.

Что такое TTL в Linux

В Linux TTL (Time to Live) — это значение, которое определяет время жизни пакета в сети. Это поле содержится в заголовке IP-пакета и определяет максимальное количество шагов (количество узлов, через которые может пройти пакет), которое пакет может сделать, прежде чем он будет отброшен.

Подробней о TTL

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

В Linux, вы можете установить значение TTL для исходящих пакетов, используя утилиту ping с опцией -t. Например, команда «ping -t 10.0.0.1» отправит ICMP-пакеты на хост 10.0.0.1 с TTL, установленным на значение по умолчанию, обычно 64. Если вы хотите изменить значение TTL, вы можете использовать опцию -i, например, «ping -t 10.0.0.1 -i 128» установит TTL равным 128.

Для чего?

Во-первых, TTL используется для предотвращения бесконечного циркулирования пакетов в сети, которые не могут достичь своего назначения. Если пакет проходит через маршрутизатор в сети и TTL достигает нуля, пакет удаляется из сети и отправляется обратно отправителю с сообщением «время жизни истекло». Это помогает предотвратить потерю пакетов и снизить нагрузку на сеть.

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

Наконец, в Linux TTL может быть использован для тестирования сетевых подключений и диагностики проблем с сетью. Например, команда ping с опцией -t позволяет отправить пакеты с заданным значением TTL на удаленный хост и измерить время, необходимое для получения ответа. Если ответ не получен, это может указывать на проблемы в сети или на то, что удаленный хост недоступен.

Меняем TTL в Linux

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

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

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

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

Меняем 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 выполняется совсем не сложно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *