- How to change the default TTL of TCP/IP packets?
- 2 Answers 2
- Как навсегда изменить время жизни пакета (TTL) в Ubuntu
- Как изменить TTL в Linux
- Изменение TTL в Linux
- Артём Санников
- Обход ограничений на раздачу интернета (фиксация TTL) в Ubuntu
- Изменение значения TTL в операционной системе Ubuntu
- Записи по теме
- Меняем TTL в Linux
- Как изменить TTL в Linux
How to change the default TTL of TCP/IP packets?
The question is how should I translate this solution for Ubuntu?
2 Answers 2
To change the default TTL of TCP/IP packets sent from your Linux computer you can run the following command:
sudo sysctl -w net.ipv4.ip_default_ttl=129
echo 129 | sudo tee /proc/sys/net/ipv4/ip_default_ttl
sudo bash -c 'echo 129 > /proc/sys/net/ipv4/ip_default_ttl'
But you have to run one of those commands whenever the computer boots. To make this setting persistent across reboots you could append the following line to the file /etc/sysctl.conf :
You should do the same with ipv6 instead of ipv4 if you want to change the settings for ipv6 as well.
Not true for ipv6; in ipv6 they don’t call it ttl anymore. The correct variable name for sysctl is net.ipv6.conf.default.hop_limit .
The other answer here says, «You should do the same with ipv6» but this does not work. IPv6 uses net.ipv6.conf.all.hop_limit and net.ipv6.conf.default.hop_limit . However, these values are overwritten by interface-specific names such as net.ipv6.conf.eth0.hop_limit . To change them all, use:
for N in $(sudo sysctl --all 2>/dev/null |grep -Eo "^net\.ipv6\.conf\.[^\.]+\.hop_limit"); do sudo sysctl --write "$N=128" done
where 128 is the desired new value.
To make this permanent (survive reboot) for IPv4 and IPv6:
sudo sysctl --all 2>/dev/null |grep -E -e "^net\.ipv6\.conf\.[^\.]+\.hop_limit" -e "net.ipv4.ip_default_ttl" |sudo tee /etc/sysctl.d/11-custom-ttl-hop.conf
Как навсегда изменить время жизни пакета (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 сбросится после перезагрузки. Для того, чтобы этого не происходило, нужно добавить данную настройку в автозагрузку. Производится эта настройка из-под пользователя 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. Введите нужную нам настройку, а именно:
и нажмите enter. Комбинации Ctrl + D или Ctrl + C запишут изменения в файл. Затем применяем настройки командой
На скриншоте ниже виден весь описанный тут процесс.
Как видите, значение TTL в команде ping также изменилось. И данная настройка сохранится после перезагрузки.
Как изменить TTL в Linux
Данные по сети передаются пакетами. При чём эти пакеты, прежде чем попадут адресату, проходят несколько других сетевых узлов чтобы добраться сначала в локальную сеть адресата, а потом уже непосредственно к нему. Иногда такие пакеты могут выбирать неверный маршрут и блудить. Чтобы они не блудили по сети вечность создавая ненужную нагрузку, у каждого пакета есть своё время жизни.
За время жизни пакета отвечает параметр TTL. Это количество узлов, которые может пройти пакет, прежде, чем он будет уничтожен. При прохождении каждого узла значение TTL для пакета уменьшается, пока не будет равным нулю. Таким образом чем больше TTL, тем более запутанные сети может проходить пакет. В этой статье мы рассмотрим как изменить TTL Linux.
Изменение TTL в Linux
Такими низкоуровневыми параметрами сети как TTL в Linux управляет ядро. Поэтому и настраивать его надо с помощью интерфейса настройки ядра. Но давайте сначала посмотрим какой TTL используется сейчас в вашей системе. Для этого можно воспользоваться командой ping:
В информации об отправке каждого пакета отображается 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:
После этого ваш TTL будет 65:
Если вы не хотите менять параметры ядра, можно модифицировать TTL в пакеты при его прохождении через сетевой фильтр iptables. Для этого выполните такую команду:
iptables -t mangle -A POSTROUTING -j TTL —ttl-set 65
Это тоже будет работать. Как видите, смена TTL Linux выполняется совсем не сложно. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Артём Санников
Данная книга является руководством для начинающих специалистов в области анализа и обработки данных. В книге рассматривается язык SQL и его процедурное расширение PL/SQL от компании Oracle.
Главная › Операционные системы › Ubuntu › Руководства › Обход ограничений на раздачу интернета (фиксация TTL) в Ubuntu
Обход ограничений на раздачу интернета (фиксация TTL) в Ubuntu
Большинство современных операторов мобильной связи, такие как МТС и Yota предоставляют тарифы, которые позволяют пользоваться интернетом без ограничения трафика. Всё вроде бы хорошо, и удобно. Но если рассмотреть этот вопрос более подробно, то всё будет не так уж и хорошо.
Изначально условия тарифа звучат следующим образом: вы можете пользоваться интернетом в любое время суток и без ограничения трафика, но за раздачу интернет-соединения через Wi-Fi, Usb-модем или Bluetooth с вас будет списана абонентская плата в размере N рублей.
P.S: я пользуюсь услугами оператора МТС, и за раздачу интернета раньше снимали 30 рублей в сутки, теперь же снимают по 50 рублей.
Но как быть, если нужно раздать интернет по Wi-Fi, а лишних денежных средств на балансе нет? Всё очень просто! нужно зафиксировать значение TTL файла на определённом значении в операционной системе: Linux, Windows или Mac OS.
P.S.S: данная статья носит исключительно ознакомительный характер, я никого не призываю использовать данную информацию в практических целях.
Изменение значения TTL в операционной системе Ubuntu
Чтобы обойти ограничение на раздачу интернета через телефон на компьютер с Ubuntu на борту, в случае, если ваш оператор Йота, вы должны сделать несколько простых вещей.
1. Открываем терминал сочетанием клавиш Ctrl + Alt + T .
2. Вводим следующую команду от супер-пользователя:
sudo vi /etc/init.d/local.autostart
3. Система потребует ввести пароль от учётной записи администратора, вводим его и нажимаем Enter . Далее жмем кнопку i — это укажет редактору vi, что нужно перейти в режим редактирования.
4. Сейчас мы должны ввести скрипт с учётом особенности операционной системы вашего смартфона. Если у вас Android или iOS — нужно указать значение TTL=65 (вместо 64), а если Windows — то указываем TTL=129 (вместо 128).
Почему значение на 1 больше? Всё очень просто, значение TTL на компьютере должно быть на 1 больше, чем значение TTL на телефоне, с которого вы раздаете.
Скрипт для обхода ограничений на раздачу интернета для Android и iOS:
#!/bin/bash sudo iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65
Скрипт для обхода ограничений на раздачу интернета для Windows Phone:
#!/bin/bash sudo iptables -t mangle -A POSTROUTING -j TTL --ttl-set 129
5. Для завершения редактирования нажимаем Esc. Затем сохраняем внесённые изменения нажатием клавиш: Shift + ZZ (два раза нажать Z).
6. Присваиваем скрипту права на запуск:
sudo chmod +x /etc/init.d/local.autostart
7. Добавляем скрипт в автозапуск:
sudo update-rc.d local.autostart defaults 80
Всё готово! Мы успешно зафиксировали значение TTL в операционной системе Ubuntu, и обошли ограничение операторов мобильной связи: МТС и Yota, на раздачу интернет соединения по Wi-Fi, Usb-модем b Bluetooth.
С уважением, Артём Санников
Записи по теме
Меняем TTL в Linux
Эти сети передаются пакетами. Пакеты перед тем как попасть адресату проходят несколько других сетевых узлов, чтобы оказаться в начале локальной сети адресата, а потом уже непосредственно к нему. Нередко подобные пакеты сбиваются с маршрута. Чтобы их направить на верный путь в сети, каждому пакету придали определенное время жизни.
За время своей жизни он отвечает параметр TTL. Это число узлов, которые может пройти пакет, перед уничтожением. Во время прохождения каждого узла значение TTL снижается до тех пор, пока время не достигнет значения нуль Чем больше TTL, тем более запутанные сети может проходить пакет.
Как изменить TTL в Linux
Низкоуровневые параметры сети TTL в Linux управляются ядром. Настраивать его можно при помощи интерфейса настройки ядра. Какой TTL используется в системе.? Воспользуемся командой ping:
В данных об отправке пакета виден 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 в пакеты при его прохождении через сетевой фильтр iptables. Для этого выполните такую команду:
$ iptables -t mangle -A POSTROUTING -j TTL —ttl-set 65
Это тоже будет работать. Смена TTL Linux выполняется совсем не сложно.