TTL: шпаргалка по Time To Live для обхода блокировок раздачи интернета

TTL: шпаргалка по Time To Live для обхода блокировок раздачи интернета

Вы раздали интернет с телефона на ноутбук. Через минуту оператор режет скорость или показывает «Купите пакет Мобильный Хотспот за 300₽/месяц».

Или вы просто увидели в выводе ping значение TTL=54 и задумались, что это вообще такое.

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

Эта шпаргалка для тех, кто:

  • хочет понять, что такое TTL и зачем он нужен
  • ищет таблицу стандартных значений для Windows, Linux, Android
  • хочет обойти блокировку раздачи интернета через спуфинг TTL
  • настраивает роутер на OpenWRT и не знает, какое значение TTL выставить
  • случайно сломал TTL на Windows и не знает, как вернуть обратно

Важно: Статья объясняет, как это работает технически. Она не призывает нарушать условия тарифа.

Когда это использовать

Реальные кейсы:

Вы раздаёте интернет с телефона. Оператор блокирует раздачу или снижает скорость. Подмена TTL на роутере/телефоне делает раздачу невидимой (первый уровень защиты).

Вы настраиваете домашнюю сеть через 4G-роутер. Тариф «Безлимитный для смартфона», но у вас роутер. Нужно выставить правильный TTL, чтобы оператор видел только одно устройство.

Вы диагностируете сеть. Видите странные значения TTL в ping — хотите понять, сколько хопов прошёл пакет и какая ОС на другом конце.

Вы системный администратор. Настраиваете firewall, работаете с iptables/nftables, оптимизируете маршрутизацию.

Когда НЕ использовать:

  • Оператор анализирует не только TTL, но и DPI, User-Agent, SNI — спуфинг TTL не поможет
  • У вас тариф с официальной раздачей — зачем усложнять?
  • Вы не понимаете, что делаете — лучше не трогать сетевые настройки

Быстрый старт

Задача: Обойти блокировку раздачи интернета с телефона на ноутбук.

Шаг 1. Проверить текущий TTL на ноутбуке:

# Windows
ping 127.0.0.1

# Ответ: TTL=128 (стандарт для Windows)

Шаг 2. Изменить TTL на ноутбуке (Windows):

# Открыть cmd от имени администратора
netsh int ipv4 set glob defaultcurhoplimit=65

# Проверка
ping 127.0.0.1
# Теперь TTL=65

Шаг 3. Раздать интернет с телефона и проверить:

# На ноутбуке через раздачу
ping ya.ru

# TTL должен быть 64 (65 - 1 хоп через телефон)

Шаг 4. Если не помогло — настроить спуфинг на роутере (см. раздел ниже).

Шаг 5. Как вернуть TTL обратно (Windows):

netsh int ipv4 set glob defaultcurhoplimit=128

Что такое TTL и как он работает

TTL (Time To Live) — это поле в заголовке IPv4-пакета размером 1 байт (значения от 0 до 255).

Оно показывает максимальное количество маршрутизаторов (хопов), которое пакет может пройти, прежде чем будет уничтожен.

Как работает:

  1. Ваш компьютер отправляет пакет с TTL=128 (если Windows)
  2. Первый роутер (ваш домашний) получает пакет, уменьшает TTL на 1 → TTL=127
  3. Второй роутер (провайдера) уменьшает ещё на 1 → TTL=126
  4. Пакет идёт дальше, пока не дойдёт до цели или TTL не станет 0
  5. Если TTL=0, пакет отбрасывается, а отправителю приходит ICMP-сообщение «Time Exceeded»

На этом основана работа traceroute/tracert.

Исторический факт:

Изначально TTL задумывался как время в секундах (RFC 791), но на практике это не прижилось. В IPv6 поле переименовали в Hop Limit («лимит переходов»).

Зачем нужен TTL:

  • Защита от маршрутных петель (когда пакет ходит по кругу)
  • Предотвращение захламления сети «вечными» пакетами

Стандартные значения TTL: таблица для всех ОС

Каждая операционная система при отправке пакета присваивает ему начальный TTL.

Это значение — константа в ядре ОС. Вот таблица стандартных значений:

Устройство / ОС TTL (TCP/UDP)
Windows 95/98/NT 3.51 32
Windows NT 4.0/2000/XP/7/8/10/11 128
Linux (все дистрибутивы) 64
macOS / MacTCP 64
Android / iOS 64
FreeBSD, OpenBSD 64
Solaris, HP-UX 255
AIX, Irix 60
UNIX (общее) 255
Cisco IOS 255

Важно: Эти значения — TTL на выходе с устройства. В процессе прохождения сети он уменьшается.

Как определить ОС по TTL:

  • TTL ~115–128 → скорее всего Windows
  • TTL ~50–64 → скорее всего Linux/Android/macOS
  • TTL ~250 → Unix/Solaris/старые BSD/Cisco

Как проверить TTL и диагностировать сеть

Проверка через ping (самый быстрый способ)

# Windows / Linux / macOS
ping ya.ru

# Пример вывода:
# Ответ от 87.250.250.242: число байт=32 время=4мс TTL=54

Что это значит:

  • TTL=54 — это TTL на момент прихода пакета обратно к вам
  • Пакет прошёл несколько роутеров, каждый уменьшил TTL на 1

Как узнать, сколько хопов прошёл пакет

Формула:

Количество хопов = Начальный TTL (по таблице) - TTL в ответе

Пример:

Вы получили ответ с TTL=54. Предположим, что сервер — Linux (начальный TTL=64).

64 - 54 = 10 хопов (маршрутизаторов)

Если сервер — Windows (TTL=128):

128 - 54 = 74 хопа (очень маловероятно, скорее всего это не Windows)

Вывод: Сервер ya.ru работает на Linux, и пакет прошёл 10 маршрутизаторов.

Диагностика проблем по TTL

Проблема 1: TTL неожиданно маленький (например, TTL=3).

Причина: Возможна маршрутная петля или пакет прошёл очень много хопов (начальный TTL был низким).

Проблема 2: TTL прыгает (64 → 127 → 64).

Причина: Оператор видит раздачу интернета. Часть пакетов идёт с телефона (TTL=64), часть с ноутбука (TTL=127 после прохождения через телефон).

Проблема 3: TTL=0.

Причина: Пакет прошёл максимум хопов и был уничтожен. Отправитель получит ICMP «Time Exceeded».

Как оператор определяет раздачу интернета

Схема раздачи:

Ноутбук (Windows, TTL=128)
    ↓
Телефон (Android, TTL=64) — раздаёт интернет
    ↓
Оператор

Что видит оператор:

  1. Пакеты от самого телефона приходят с TTL=64 (стандарт Android)
  2. Пакеты от ноутбука приходят с TTL=127 (128 — 1 хоп через телефон)

Вывод оператора: Есть два разных TTL → включён режим модема → блокируем или требуем доплату.

Суть спуфинга TTL:

Мы заставляем телефон/роутер подменять TTL всех исходящих пакетов на единое значение (обычно 64 или 65).

Оператор видит только TTL=64 и думает, что работает только одно устройство.

Как изменить TTL на Windows

Способ 1: Через реестр (перманентно)

Шаг 1: Открыть редактор реестра:

Win + R → regedit → Enter

Шаг 2: Перейти к ключу:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Шаг 3: Создать новый параметр:

  • Правая кнопка мыши → Создать → Параметр DWORD (32 бита)
  • Имя: DefaultTTL
  • Значение: 65 (десятичное)

Шаг 4: Перезагрузить компьютер.

Проверка:

ping 127.0.0.1

# Теперь TTL должен быть 65

Способ 2: Через командную строку (без перезагрузки)

# Открыть cmd от имени администратора
netsh int ipv4 set glob defaultcurhoplimit=65

# Проверка
ping 127.0.0.1

Важно: Этот способ работает до перезагрузки. После перезагрузки TTL вернётся к 128 (если не изменён в реестре).

Как вернуть исходное значение TTL на Windows

Способ 1: Через реестр

  • Найти параметр DefaultTTL в реестре
  • Удалить его
  • Перезагрузиться

Способ 2: Через командную строку

netsh int ipv4 set glob defaultcurhoplimit=128

Способ 3: Готовый bat-скрипт

Создайте файл restore-ttl.bat:

@echo off
netsh int ipv4 set glob defaultcurhoplimit=128
echo TTL restored to 128
pause

Запустите от имени администратора.

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

Временное изменение (до перезагрузки)

Способ 1:

echo 65 > /proc/sys/net/ipv4/ip_default_ttl

Способ 2:

sysctl -w net.ipv4.ip_default_ttl=65

Проверка:

ping -c 1 127.0.0.1 | grep ttl

# Должно быть ttl=65

Постоянное изменение (сохраняется после перезагрузки)

Шаг 1: Редактировать файл конфигурации:

sudo nano /etc/sysctl.conf

Шаг 2: Добавить строку:

net.ipv4.ip_default_ttl = 65

Шаг 3: Применить изменения:

sudo sysctl -p

Проверка:

sysctl net.ipv4.ip_default_ttl

# Вывод: net.ipv4.ip_default_ttl = 65

Как вернуть TTL обратно на Linux

# Временно
echo 64 > /proc/sys/net/ipv4/ip_default_ttl

# Или
sysctl -w net.ipv4.ip_default_ttl=64

# Постоянно — удалить строку из /etc/sysctl.conf и выполнить:
sudo sysctl -p

Спуфинг TTL на роутере (OpenWRT, iptables, nftables)

Почему это лучший вариант

Преимущества спуфинга на роутере:

  • Не нужно настраивать каждое устройство (ноутбук, телефон, телевизор, приставку)
  • Оператор видит, что все пакеты приходят с одинаковым TTL
  • Работает на уровне ядра роутера — быстро и надёжно
  • Одна настройка для всей домашней сети

OpenWRT + nftables (современный способ)

Шаг 1: Подключиться к роутеру по SSH:

ssh root@192.168.1.1

Шаг 2: Создать файл правил:

nano /etc/nftables.d/90-mangle-ttl.nft

Шаг 3: Добавить правило:

chain mangle_ttl_out {
    type filter hook postrouting priority mangle;
    meta nfproto ipv4 oifname pppoe-wan ip ttl set 64
}

Важно: Замените pppoe-wan на ваш исходящий интерфейс (например, eth1, wwan0).

Шаг 4: Перезапустить nftables:

service nftables restart

Проверка:

# На компьютере в локальной сети
ping ya.ru

# TTL должен быть 64 (независимо от ОС компьютера)

Оптимизация: не трогать пакеты с TTL < 60

Чтобы не ломать traceroute, добавьте условие:

chain mangle_ttl_out {
    type filter hook postrouting priority mangle;
    meta nfproto ipv4 oifname pppoe-wan ip ttl > 60 ip ttl set 64
}

Это защитит служебные пакеты с низким TTL.

Если используете zapret (обход блокировок)

Добавьте исключение для маркированных пакетов:

chain mangle_ttl_out {
    type filter hook postrouting priority mangle;
    meta nfproto ipv4 oifname pppoe-wan meta mark & 0x40000000 == 0 ip ttl set 64
}

Источник: github.com/bol-van/zapret

iptables (для старых версий роутеров)

Способ 1: Установить TTL=64 для всех исходящих пакетов:

iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64

Способ 2: Только для определённого интерфейса:

iptables -t mangle -A POSTROUTING -o eth1 -j TTL --ttl-set 64

Сохранение правил (чтобы не пропали после перезагрузки):

# OpenWRT
/etc/init.d/firewall restart

# Debian/Ubuntu
iptables-save > /etc/iptables/rules.v4

Какое значение TTL выставить на роутере?

Ситуация Рекомендуемый TTL Почему
Только Android/iOS/Linux/macOS 64 Стандарт для этих ОС
Только Windows 65 После вычитания 1 станет 64
Смешанная сеть (Windows + Linux) 65 Универсально: 65-1=64 для всех
Раздача с телефона 65 Компенсирует -1 на телефоне

Рекомендация: Ставьте 65 — это универсальное значение.

Частые ошибки и как их исправить

Ошибка 1: Изменил TTL на компьютере, но раздаю с телефона

Симптом: Оператор всё равно блокирует раздачу.

Причина: Настраивать нужно устройство-раздатчик (телефон или роутер), а не конечное устройство.

Решение: Настроить спуфинг на телефоне (если есть root) или на роутере.

Ошибка 2: Поставил TTL=64 на роутере, но пакеты с Windows всё равно идут с 127

Симптом: Проверяете ping на оператора — видите TTL=127 вместо 64.

Причина: Роутер не подменяет TTL транзитных пакетов. Проверьте правило mangle.

Решение:

# Убедитесь, что правило применяется к POSTROUTING
iptables -t mangle -L -v -n

# Должно быть правило с target TTL

Ошибка 3: После удаления настроек TTL остался 65

Симптом: Удалили параметр из реестра, перезагрузились, но TTL всё равно 65.

Причина: Возможно, настройка осталась в другом месте (групповые политики, сторонние программы).

Решение:

# Принудительно вернуть TTL
netsh int ipv4 set glob defaultcurhoplimit=128

# Или поискать в реестре все упоминания DefaultTTL
# Win + R → regedit → Ctrl + F → DefaultTTL

Ошибка 4: Роутер OpenWRT не применяет правила nftables

Симптом: Создали файл, перезапустили nftables, но TTL не меняется.

Причина: Неверный путь к файлу или синтаксическая ошибка.

Решение:

# Проверить синтаксис
nft -f /etc/nftables.d/90-mangle-ttl.nft

# Посмотреть текущие правила
nft list ruleset | grep ttl

# Перезапустить firewall
/etc/init.d/firewall restart

Ошибка 5: Оператор всё равно видит раздачу

Симптом: Настроили спуфинг TTL, но оператор всё равно блокирует.

Причина: Современные операторы используют DPI (Deep Packet Inspection) и анализируют:

  • User-Agent браузера
  • SNI (Server Name Indication) в HTTPS
  • Размеры пакетов
  • Паттерны поведения (Android vs Windows)

Решение: TTL — это только первый уровень защиты. Для полного обхода нужны дополнительные методы (VPN, User-Agent Switcher, SNI подмена).

Полезные хаки

Хак 1: Определить ОС удалённого сервера по TTL

ping google.com

# Получили TTL=117
# Вероятно, это Windows (128 - 11 хопов = 117)

ping yandex.ru

# Получили TTL=56
# Вероятно, это Linux (64 - 8 хопов = 56)

Хак 2: Проверить, сколько хопов до сервера

# Windows
tracert ya.ru

# Linux/macOS
traceroute ya.ru

# Посчитать строки в выводе = количество хопов

Хак 3: Узнать TTL роутера

# Пинговать роутер изнутри сети
ping 192.168.1.1

# TTL обычно 64 (Linux) или 255 (старые роутеры на VxWorks)

Хак 4: Проверить, работает ли спуфинг на роутере

# На компьютере в локальной сети (Windows)
# Сначала узнать свой TTL
ping 127.0.0.1
# Допустим, TTL=128

# Теперь пинговать внешний сервер
ping 8.8.8.8

# Если спуфинг работает, в ответе будет TTL=64 (или 65)
# Если спуфинг НЕ работает, будет TTL=127 (128 - 1 хоп)

Хак 5: Автоматическая установка TTL на Android (с root)

# Через adb или Termux
su
echo 65 > /proc/sys/net/ipv4/ip_default_ttl

Или через приложение TTL Master (требует root).

Проверка и диагностика

Чек-лист: Проверить, что спуфинг работает

Шаг 1: Проверить TTL на локальном устройстве:

ping 127.0.0.1

# Windows: должно быть 65 (если изменили)
# Linux: должно быть 65 (если изменили)

Шаг 2: Проверить TTL на выходе из сети:

ping 8.8.8.8

# Должно быть 64 (независимо от ОС локального устройства)

Шаг 3: Проверить на нескольких устройствах:

  • Windows: ping 8.8.8.8
  • Android: через Termux или PingTools
  • Linux: ping -c 1 8.8.8.8

Все должны показывать одинаковый TTL (64).

Шаг 4: Проверить раздачу интернета:

  • Раздать интернет с телефона на ноутбук
  • На ноутбуке: ping 8.8.8.8
  • TTL должен быть 64 (а не 127)

Логи и отладка

OpenWRT — проверить правила nftables:

nft list ruleset | grep ttl

OpenWRT — проверить правила iptables:

iptables -t mangle -L -v -n

Linux — логи sysctl:

dmesg | grep ttl

Краткий чек-лист

✅ Узнайте свой тариф: Есть ли вообще запрет на раздачу?

✅ Проверьте TTL устройств:

  • Windows → 128
  • Linux/Android/iOS → 64

✅ Выберите стратегию:

  • Менять TTL на каждом устройстве — долго, неудобно
  • Настроить спуфинг на роутере — один раз и навсегда

✅ Выставите значение TTL:

✅ Проверьте:

ping ya.ru

# TTL должен быть одинаковым (64) на всех устройствах

✅ Сохраните инструкцию, как вернуть исходное значение (на случай продажи роутера или смены провайдера).

FAQ: Быстрые ответы

В: TTL = 114 — это нормально?

О: Да. Скорее всего, это Windows (128) минус 14 хопов.


В: Можно ли изменить TTL на iPhone без джейлбрейка?

О: Нет. Только если настроить подмену на роутере.


В: Оператор всё равно блокирует раздачу после спуфинга TTL. Почему?

О: Современные операторы также анализируют User-Agent, SNI, DPI-сигнатуры. TTL — не панацея, но первый уровень защиты.


В: Вредно ли менять TTL?

О: Нет, это законная настройка. Вы не взламываете сеть, а меняете параметры своих пакетов.


В: Как узнать TTL роутера?

О: Пропинговать его изнутри сети. Обычно 64 (Linux) или 255 (старые VxWorks).


В: Почему ставят TTL=65, а не 64?

О: Чтобы скомпенсировать вычитание 1 на первом хопе. После роутера будет 64.


В: Можно ли поставить TTL=1?

О: Технически — да. Практически — нет. Пакет умрёт на первом же роутере.


В: Работает ли спуфинг TTL на IPv6?

О: Да, но поле называется Hop Limit. Настройка аналогична.


В: Есть ли легальные способы обойти блокировку раздачи?

О: Да — купить тариф с официальной раздачей или VPN с отдельным тарифом.


В: Как вернуть TTL на Windows 11?

О: netsh int ipv4 set glob defaultcurhoplimit=128

Резюме

TTL (Time To Live) — это поле в IP-пакете, которое показывает, сколько маршрутизаторов пакет может пройти.

Стандартные значения:

  • Windows — 128
  • Linux/Android/macOS — 64
  • Unix/Cisco — 255

Как изменить:

  • Windows: netsh int ipv4 set glob defaultcurhoplimit=65
  • Linux: sysctl -w net.ipv4.ip_default_ttl=65
  • Роутер: правила iptables/nftables

Зачем менять:

  • Обход блокировки раздачи интернета (оператор видит единый TTL)
  • Диагностика сети
  • Оптимизация маршрутизации

Главная мысль:

Спуфинг TTL на роутере — это универсальное решение для обхода ограничений раздачи. Один раз настроил — работает для всех устройств.

Но помните: это только первый уровень защиты. Современные операторы используют DPI и другие методы.

Сохраните эту шпаргалку. В следующий раз, когда оператор заблокирует раздачу, вы будете знать, что делать.

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

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

Прокрутить вверх