Как проверить ттл андроид

/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. Для других моделей телефонов надо искать исходики где-то в интернете или на сайте производителя.

Читайте также:  Android ice cream sandwich theme iphone

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 на андроид — пошаговая инструкция

Практически у всех мобильных операторов предусмотрены ограничения на раздачу интернета с телефона. Поэтому может полностью отсутствовать интернет на подключенном к точке доступа смартфоне, или за раздачу трафика будет списываться предусмотренная провайдером посуточная абонентская плата. Часто разрешают бесплатно раздавать 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-доступом можно многими способами. Причем некоторые изменяют его на раздающем гаджете, но лучше этого не делать. Провайдеры знают используемые в гаджетах параметры, поэтому могут в любое время заблокировать доступ к Интернету. В любом случае сначала необходимо проверить, активирован ли на телефоне режим суперпользователя.

Обратите внимание! Это проще сделать с помощью 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 г.

Источник

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