Вы раздали интернет с телефона на ноутбук. Через минуту оператор режет скорость или показывает «Купите пакет Мобильный Хотспот за 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).
Оно показывает максимальное количество маршрутизаторов (хопов), которое пакет может пройти, прежде чем будет уничтожен.
Как работает:
- Ваш компьютер отправляет пакет с TTL=128 (если Windows)
- Первый роутер (ваш домашний) получает пакет, уменьшает TTL на 1 → TTL=127
- Второй роутер (провайдера) уменьшает ещё на 1 → TTL=126
- Пакет идёт дальше, пока не дойдёт до цели или TTL не станет 0
- Если 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) — раздаёт интернет
↓
Оператор
Что видит оператор:
- Пакеты от самого телефона приходят с TTL=64 (стандарт Android)
- Пакеты от ноутбука приходят с 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:
- 65 — если в сети есть Windows
- 64 — если только Linux/Android
✅ Проверьте:
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 и другие методы.
Сохраните эту шпаргалку. В следующий раз, когда оператор заблокирует раздачу, вы будете знать, что делать.


