Default ttl in android

/4te.me

Столкнулся с проблемой раздачи интернета с Android-телефона на другие устройства, через мобильную точку доступа, у некоторых операторов. Оператор или вообще запрещает раздавать интернет, или берет за это деньги. Однако есть способы обойти этот запрет. Здесь расскажу, что у меня получилось.

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

Оператор на своей стороне смотрит на значение TTL в заголовках IP-пакетов, приходящих от клиента. Схематично выглядит так:

Если на телефоне открывать в браузере какую-нибудь страничку, то провайдеру от телефона будут приходить пакеты с TTL 64. Такие пакеты он пропускает.

Но если включить мобильную точку доступа, подключиться к ней, например, с планшета, и на планшете открыть страницу, то, проходя через мобильную точку доступа на телефоне TTL будет уменьшаться на 1 и провайдеру будут уходить пакеты с TTL 63, которые он будет отбрасывать. Уменьшение TTL при прохождении через роутер — это стандартизированное поведение роутера, такое поведение предусмотрено стандартом RFC791.

В этой ситуации выхода два — либо на планшете выставлять TTL 65, чтобы, проходя через телефон, провайдеру приходили пакеты с TTL 64, либо на самом телефоне делать так, чтобы он не уменьшал TTL.

Если wi-fi клиент — дектоп-машина с Windows или MacOS, то выставить TTL 65 можно одной командой.

Windows

Создать в реестре ключ

типа REG_DWORD со значением 65 (в десятичной системе)

MacOS

Команда в консоле:

Но если клиент планшет на iOS или другое устройство, где нельзя просто так выставить TTL, то придется воспользоваться вторым способом — заставить телефон не уменьшать TTL для проходящих через него пакетов. Это может быть не совсем просто.

Учим телефон не уменьшать TTL

Этот способ потребует root-права (инструкция) на android-телефоне или jailbreak на iOS. Т.к. я делал это на Android, то опишу как делать для него. Про iOS здесь инструкции не будет.

Для разных устройств, процедура будет отличаться, я постараюсь рассказать в чем будут заключаться эти отличия. В данном примере я использую OnePlus 3 и Android 8.0 Oreo

Итак, у нас есть Android телефон с root-правами. Узнаем, умеет ли ядро системы работать с TTL. Для этого смотрим содержимое двух файлов на телефоне (например с помощью приложения ES Проводник, оно умеет смотреть системные файлы):

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

Как собрать модуль ядра

  • ОС — Linux или MacOS (можно собрать и на Windows — см.ниже)
  • исходники ядра для конкретного устройства
  • toolchain определенной версии и опредленной архитектуры

Я собирал модуль на Windows, но используя, Ubuntu-подсистему в Windows 10. Как ее включить я писал здесь. Если у вас не Win10, то придется ставить Ubuntu на VirtualBox-машину.

Для своего OnePlus 3 я брал исходники ядра здесь — https://github.com/OnePlusOSS/android_kernel_oneplus_msm8996 (msm8996 — это модель процессора Qualcomm Snapdragon 820 MSM8996). Исходники для Android 8.0 Oreo в ветке QC8996_O_8.0.0

Для других Oneplus-ов можно взять их рядом — https://github.com/OnePlusOSS. Для других моделей телефонов надо искать исходики где-то в интернете или на сайте производителя.

Toolchain — это утилиты для сборки кода под опредленную платформу. Узнать какая именно нужна для вашего телефона можно так:

В моем случае это aarch64 . Из этого вывода также понадобится версия gcc: 4.9 и версия ядра: 3.18.66-perf+

Далее идем сюда — https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/ и скачиваем нужный тулчейн. Версии для MacOS можно найти также по этой ссылке. В моем случае я скачал aarch64-linux-android-4.9 , здесь aarch64 и 4.9 совпадает с теми версиями которые мы узнали выше.

Теперь идем в консоль и готовимся к компиляции. Установим необходимые тулзы и склонируем репы с тулчейном и исходниками ядра в домашнюю папку:

В исходниках ядра смотрим в папку arch и подбираем нужную архитектуру. В моем случае в этой папке, нет aarch64 , но есть arm64 . Это то же самое, просто называется по другому. Буду использовать эту архитектуру. Указываем ее и путь до бинарей тулчейна в переменных окружения:

Читайте также:  Менеджер шрифтов андроид что это такое

Теперь надо создать конфиг для будущей сборки. Возможные варианты конфигов в моем случае лежат в папке с исходниками ядра в arch/arm64/configs (вместо arm64 может быть ваша архитектура). Вспоминая версию ядра, которая установлена в телефоне, выбираю конфиг msm-perf_defconfig :

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

Появится интерактиваная утилита, в которой нужно найти нужный модуль.

Переходя по дереву внутрь, и, найдя TTL Target support , нажать M, чтобы указать, что нужно скомпилировать этот модуль.

Сохраняем конфиг, выходим и собираем ядро с модулями:

Если ошибок не было, то в папке с исходниками должен появится файл net/netfilter/xt_HL.ko

Вот мой скомпилированный файл для OnePlus 3, Android 8.0.0 — xt_HL.ko. Можно сразу взять его, если совпадает модель телефона и версия системы.

Копируем его на телефон, и через adb shell пытаемся включить его (чтобы в adb shell работал su, надо в /system/build.prop добавить строку ro.debuggable=1 , например с помощью ES Проводника):

Если модуль загрузился, можно пробовать зафиксировать TTL:

И наконец, добавляем в автозагрузку телефона скрипт, который будет включать фиксацию TTL:

Такой скрипт я положил в /sdcard/fixttl.sh , и с помощью приложения ScriptManager, добавил в автозагрузку.

Всё! Теперь с этого телефона можно раздавать интернет!

Источник

Как изменить TTL на Андроид

Возможности современных смартфонов позволяют делиться доступом к мобильному интернету с другими устройствами при помощи модуля Wi-Fi, Bluetooth или USB.

Как изменить TTL на Андроид

СодержаниеКак изменить TTL на Андроид

Однако не все так просто — жадные операторы сотовой связи, предоставляющие «безлимитные» пакеты услуг, часто ограничивают раздачу интернета. Чтобы обнаружить подключенные устройства, они пользуются значением параметра TTL, который автоматически передается на их основной сервер. В этой статье-инструкции мы разберемся, что такое TTL в телефоне, и как его изменить для обхода ограничений раздачи интернета.

Что такое TTL и зачем он нужен?

TTL (Time to live) — предельный период времени жизни пакета данных или максимальное количество его переходов от одного устройства к другому. В компьютерных сетях такой параметр является обыкновенным числовым значением в диапазоне от 0 до 255. Основная его цель заключается в том, чтобы не позволять набору цифровой информации бесконечно «блуждать» по сети. Перемещаясь между различными маршрутизаторами, параметр TTL постоянно меняется.

Для большинства мобильных устройств (iOS и Android) начальное значение TTL равно 64, а на Windows-компьютерах он стартует с отметки 128. Каждый переход через беспроводной канал связи уменьшает это число ровно на 1. Когда после множества скачков от одного клиента к другому TTL становится равным 0, все данные в пакете, который он сопровождает, автоматически уничтожаются.

Поскольку значение TTL всегда возвращается изначальному адресанту (провайдеру), он может узнать, был ли пропущен трафик через сторонние маршрутизаторы, то есть другие устройства.

Операторы сотовой связи пользуются TTL для ограничения доступа к безлимитному интернету, когда их клиент подключается к нему с нескольких разных гаджетов. После того, как смартфон на Android переходит в режим модема, он передает через себя трафик с параметром TTL, равным 64. Устройства, которые получают эти сведения, автоматически уменьшают изначальный TTL на 1. В результате, провайдеру приходят пакеты, помеченные временем жизни 64 и 63, после чего он блокирует сеть. В большинстве случаев, это делает невозможным раздачу интернета по Wi-Fi.

Можно ли изменить TTL?

Как уже можно было догадаться, чтобы разблокировать доступ сторонним устройствам к мобильной сети, необходимо должным образом настроить значение TTL. На Android это делается несколькими способами в зависимости от наличия на смартфоне root-прав. Также необходимо выбрать устройство, на котором будут внесены изменения параметра TTL: на раздающем трафик или на получающем его.

Далее мы будем рассматривать исключительно мобильную платформу Android.

Как узнать TTL на телефоне?

Стоит сразу отметить, что получить доступ к неограниченному количеству сторонних подключений к мобильной сети без прав администратора практически невозможно. Чтобы узнать значение TTL на телефоне, следуйте инструкции:

1. Сначала нужно установить приложение Terminal Emulator .

2. После запуска этой небольшой утилиты откроется командная консоль, в которую необходимо ввести следующую строку: cat /proc/sys/net/ipv4/ip_default_ttl

3. В результате появится значение TTL.

Как изменить TLL на Android с root-правами?

Получив права администратора (рут) на Android, нужно установить один из файловых менеджеров, например, ES Проводник . Далее потребуется активировать авиарежим на смартфоне, чтобы временно прервать соединение с сетью. Теперь запустите Terminal Emulator и перейдите файлу по адресу: proc/sys/net/ipv4/ip_default_ttl . В нем содержится значение параметра TTL, которое можно изменить по своему усмотрению. Сохранив новое число и перезагрузив телефон, можно спокойно раздавать интернет.

Читайте также:  Как быстро удалить все номера с андроида

Существует и более комфортный способ настройки множественного подключения к мобильной сети. Для его реализации потребуется загрузить специальное приложение TTL Master . После запуска программы можно сразу увидеть текущее значение данного параметра и настроить его для эффективной раздачи как на мобильные устройства, так и на Windows-компьютеры. После перезагрузки смартфона можно не беспокоится, что сотовый оператор как-то узнает об общем использовании его трафика.

Изменение TLL на Android — простая задача для пользователей смартфонов с рут-правами, которые могут обойти ограничение раздачи интернета в пару кликов. Если же «суперправ» нет, то с высокой долей вероятности ничего не выйдет.

Источник

Как изменить TTL на андроид — пошаговая инструкция

Практически у всех мобильных операторов предусмотрены ограничения на раздачу интернета с телефона. Поэтому может полностью отсутствовать интернет на подключенном к точке доступа смартфоне, или за раздачу трафика будет списываться предусмотренная провайдером посуточная абонентская плата. Часто разрешают бесплатно раздавать 30-50 Мб в сутки, после чего списывают посуточную оплату в размере 30-50 руб.* Не каждому по карману платить 1500 руб. в месяц за Интернет, да и его скорость не всегда высокая и стабильная. Из-за этого многие стараются обойти данное ограничение. Поэтому ниже в статье описаны все способы редактирования TTL, позволяющие бесплатно раздавать мобильный трафик на андроид-телефонах.

Что такое TTL на Android

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

Определение Time to live

TTL — период жизни пакета данных или количество его переходов от одного гаджета к другому. В коммуникационных сетях он выражается числовыми значениями от 0 до 255.

Раздача мобильного Интернета

Главная смысл использования TTL — не позволять пакетам данных долго ходить по сети. При этом в процессе перемещения пакета между различными устройствами этот параметр постоянно изменяется. В iOS и Android гаджетах используется TTL 64, на ПК и телефонах Windows Mobile разработчики устанавливают TTL 128.

Обратите внимание! После каждого перехода от гаджета к гаджету он уменьшается на 1 (при первом переходе 64 — 1 = 63, 128 — 1 = 127). Если после множества переходов данный параметр уменьшается до 0, сопровождаемый им пакет трафика уничтожается.

Принцип уменьшения ТТЛ в процессе передачи данных от различных устройств к точке доступа и далее к провайдеру

Как влияет TTL на раздачу Интернета с телефона

Благодаря этому параметру провайдеры быстро определяют несанкционированную раздачу Интернета, что позволяет им оперативно ограничивать клиентам доступ к Глобальной сети и требовать с них дополнительную плату. Это связано с тем, что в условиях многих тарифов сотовой связи не предусмотрена раздача Интернета.

После подключения клиентами к одному мобильному гаджету, раздающему Интернет нескольким устройствам, провайдер получает от точки доступа TTL 64 или 128, а от остальных гаджетов уменьшенное на 1 значение 63 или 127. Поэтому необходимо сделать так, чтобы этот параметр совпадал на всех подключенных к Wi-Fi сети гаджетах.

Для этого требуется на подключенных к точке доступа устройствах повысить TTL на 1. Например, если модемом является Android-устройство, то необходимо устанавливать на подсоединяемых к нему гаджетах TTL 65. Если точкой доступа является телефон с Windows Mobile или ПК, то на подключенных к ним устройствах требуется устанавливать TTL 129.

Важно! Сначала необходимо проверить на всех смартфонах текущий TTL и только после этого вносить корректировки в работу системы.

Как узнать значение TTL на андроиде

Узнать используемый на гаджете TTL можно с помощью утилиты Terminal Emulator.

Проверка значения параметра в терминале

Делается это так:

  1. Устанавливают на смартфон утилиту Terminal Emulator (лучше загружать в Play Маркете).
  2. Запускают программу.
  3. Вводят в ней — cat /proc/sys/net/ipv4/ip_default_ttl. В терминале отобразится действующий на гаджете TTL.

Выбор в настойках смартфона пункта Wi-Fi

Узнают значение TTL также с помощью ПК.

Параметры текущего Wi-Fi соединения

Делается это так:

  1. Подключают гаджет к ПК по Wi-Fi.
  2. Переходят в настройки смартфона.
  3. После чего выбирают пункт «Wi-Fi».
  4. Далее открывают свойства текущего подключения, откуда выписывают IP-адрес телефона.
  5. Потом запускают командную строку на ПК.
  6. Далее вводят в ней команду «ping», пробел IP-адрес устройства (это может выглядеть так — ping 192.168.238.101) и жмут «Enter». После этого система покажет TTL гаджета.

Проверка значения TTL с помощью командной строки

Как изменить TTL на андроид через права суперпользователя

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

Читайте также:  Android emulator small screen

Обратите внимание! Это проще сделать с помощью Root Checker или Terminal Emulator. Меню первой программы довольно простое, поэтому сложностей данная процедура не должна вызывать. При использовании второй программы требуется ввести в ней команду «SU», после чего символы # или $ подтвердят наличие root-прав на сотовом телефоне.

Редактирование данного параметра с помощью TTL Master

Если владелец не представляет, как изменить TTL на андроид с помощью TTL Master, то требуется выполнить несколько шагов.

Установить программу из Play Маркета. Открыть ее (в основном окне утилиты будет отображаться используемый на смартфоне параметр).

Далее в настройках утилиты необходимо выбрать подходящий метод переподключения к сети. На нижней картинке выбран режим «Полета».

Выбор в настройках программы типа переподключения к сети

Далее в строку «Введите TTL» нужно вручную ввести требуемое цифровое значение (например, 65 или 129) и нажать вкладку «Применить».

Также нужно в настройках программы включить «Автозапуск», чтобы после перезапуска телефона TTL автоматически изменялся.

Включение «Автозапуска» в настройках утилиты

Потом желательно перезагрузить аппарат.

Важно! Если выхода в Интернет нет, то необходимо переподключить передачу данных на раздающем аппарате. Это связано с тем, что провайдер может временно заблокировать выход в Глобальную сеть.

Также изменить TTL на андроидах позволяет утилита Change TTL.

Использование Change TTL

Делается это так:

  1. Устанавливают софт на смартфон.
  2. Отключают гаджет от точки доступа.
  3. Открывают утилиту. В основном окне отобразится установленный на смартфоне параметр.
  4. Изменяют этот параметр (необходимы права суперпользователя).
  5. Перезагружают аппарат.

Обратите внимание! Если не получается изменить данный параметр с помощью этого софта, то требуется в программе, дающей права суперпользователя, разрешить данному софту вносить изменения в работу системы.

Изменить это параметр позволяют и другие аналогичные программы, например, можно использовать утилиту TTL Editor.

Использование файловых менеджеров с поддержкой Root

Также можно быстро изменять TTL файловыми менеджерами, которые поддерживают рут-доступ. Поэтому стоит подробно разобрать процесс изменения TTL Android с помощью самых популярных у пользователей проводников.

Включение режима «Полета» и активация функции рут-проводник

Если не устраивает TTL, смена на андроид с помощью ES File Explorer выглядит так:

  1. Устанавливают «ES Проводник».
  2. Включают режим «Полета».
  3. Запускают утилиту и включают в ней root-доступ.
  4. Открывают внутреннюю файловую структуру смартфона и переходят в директорию — proc / sys / net / ipv4.
  5. Находят в этой папке файл ip_default_ttl и открывают его текстовым редактором.
  6. Изменяют параметр.
  7. Закрывают файл и сохраняют введенные данные.
  8. На финальном этапе отключают режим «Полета».

Переход в нужную директорию

Теперь гаджет можно сразу подключать к точке доступа, которая раздает мобильный интернет-трафик.

Как изменить ТТЛ на андроидах с помощью X-Plore File Manager

Делается это так:

  1. Инсталлируют на гаджет X-plore File Manager.
  2. Переводят смартфон в режим «Полета».
  3. Запускают данный файл-менеджер.
  4. Для фиксации параметра выбирают там Root и переходят в директорию proc / sys / net / ipv4.
  5. Далее находят в этой папке файл ip_default_ttl и открывают его тестовым редактором.
  6. Потом меняют цифровое значение, закрывают файл, выключают режим «Полета» и перезапускают гаджет.

Поиск нужного файла

Теперь можно подключать его к раздающему интернет-трафик смартфону.

Таким же образом можно использовать Root Explorer и другие подобные утилиты.

Обратите внимание! Если проблема с ограничением не пропадет, то на основном устройстве необходимо переподключить передачу данных, а на остальных Wi-Fi адаптер. Также нужно активировать режим суперпользователя в проводнике.

Возможно ли поменять ТТЛ на андроиде без рут-прав

Корректировать значение TTL без рут-прав можно, но на многих устройствах эта функция недоступна.

Если владелец смартфона не знает, как поменять ттл на андроиде без прав суперпользователя, то ему нужно сделать следующее:

  1. Инсталлировать на гаджет Terminal Emulator.
  2. Открыть терминал и ввести в нем — cat /proс /sys / nеt / ipv4 / ip_dеfаult_ttl.
  3. Если система гаджета позволяет изменять TTL без root, то этот параметр будет доступен. Необходимо добавить к нему единицу (64 + 1 = 65).
  4. Перезагрузить аппарат, чтобы настойки вступили в силу.

Важно! Этот способ подходит редко, поэтому проще получить рут-права для внесения изменений в работу OS Android.

Менять TTL в OS андроид можно различными способами, но чаще всего для этого требуются права суперпользователя. Поэтому первым делом необходимо их получить и только после этого изменять параметр. На некоторых смартфонах это удается сделать без рут-прав, но такие модели попадаются редко. В любом случае перед этим необходимо точно определить действующий на раздающем и подключаемом к нему устройстве TTL (на Android-гаджетах этот показатель равен 64, на ПК и телефонах с Windows Mobile — 128, на Cisco устройствах — 255). Также нужно отключать устройство от точки доступа, чтобы провайдер мобильной связи не заблокировал доступ к Сети.

*Цены в статье указаны на апрель 2020 г.

Источник

Оцените статью