Практические заметки. Как обойти ограничение на раздачу интернета мтс

Добрый день уважаемые читатели блога, сегодня я хочу вас спросить, а умеете ли вы по команде пинг определить какое устройство или операционная система вам отвечает, если нет, то вы пришли по адресу и я вам расскажу еще одно назначение утилиты ping . Думаю данный материал, будет полезен как новичкам, так и продвинутым пользователям, особенно когда вы ищите причину неисправности в сети или сервисе, встречал много раз, что вы думаете, что вам отвечает один сервер, а на самом деле это другой, так как кто то, что то поменял и не задокументировал.

Значение ttl

Именно время жизни пакета (TTL) нам и поможет, определить кто там с другой стороны. У каждой операционной системы этот показатель свой, так например

  • Cisco TTL > равен 255
  • ttl windows > равен 128
  • Unix ttl > равен 64
  • Android и IOS Apple> 65
  • Lumia > 130

Как видите у всех он разный, и давайте разбираться, для примера я пропингую коммутатор Cisco, для этого открываем командную строку Windows , у вас может и linux быть.

Пишем ping 10.152.1.1 (у вас может быть другой адрес)

Как видите значение ttl тут 255, что и показывает, что отвечает вам IOS у устройства Cisco, как видите команда ping отлично узнала операционную систему хоста с другой стороны.

Попробуем пропинговать unix систему, у меня например в локальной сети шлюзом выступает Kerio Control, на linux версии. Пингуем.

Пишем ping 192.168.5.1 (у вас может быть другой адрес)

Как видите тут значение ttl равно 64, что означает unix платформу, так могут отвечать различные D-link устройства и другие домашние роутеры.

Давайте еще проверим Windows платформы, например у меня есть Windows 8.1 в локальной сети, сделаем пинг. И видите, что оно равно 128, как я и говорил.

Вот вам. тогда загадка, пингуем Windows Server 2012 R2, на нем есть веб сайт relay.aetp.ru. Что вы видите, а то что значение ttl равно 120, но в Windows же 128 по умолчанию идет, не стыковка 🙂

Все дело в хопах, помните в определении я вам говорил, что значение ttl уменьшается на единицу при следующем шаге и проходе через маршрутизаторы, давайте произведем трассировку до данного адреса.

tracert relay.aetp.ru

Как видите сетевой пакет проходит не один хо до нужного адреса, и на определенных этапах он теряет от ttl по единичке. Все теперь вы знаете как узнать ttl windows.

Как изменить ttl windows

Давайте рассмотрим ситуацию, что вам нужно изменить ttl windows, поверьте бывают такие ситуации в жизни, примером может быть компания Yota, с ее дурацкой политикой ограничений Yota на раздачу Wi-Fi. Представим ситуацию, что взяли себе оператора Yota на телефон и решили раздать Wifi на ноутбук, но вы даже не знали подводных камней. в плане фильтрации пакетов со стороны Yota. Она жестко режет скорость, и режет она посредством значения ttl, оно должно быть 64, а если у вас дополнительное устройство, то это лишний хоп и значит ttl меньше, вот для обхода этой подставы с раздачей Wifi на ноутбук от Yota, мы и изменим ttl. Менять ttl мы будем в Windows 10, но данные действия подойдут и для Windows 7 и 8.1.

Нажимаем Win+R и вводим regedit

В итоге у вас откроется редактор реестра Windows. Вам нужно перейти в ветку реестра

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

В разделе вам нужно создать значение, все зависит от разрядности Windows , если 32 битная, то создаем параметр DWORD (32 бита), если 64 битная, то QWORD (64 бита). Я создаю QWORD.

Задаем ему имя DefaultTTL и значение и устанавливаем его значение 65 для Android и iOS или 130 - Lumia, Nokia, Microsoft Phone и обязательно перезагружаемся!!!

эта лишняя единица, как раз и пойдет на лишний скачок через ваш телефон с ноутбука и Yota ничего не увидит, как видите изменить ttl windows 10, очень просто.

Как изменить ttl Ubuntu, Debian

И так с Windows мы уже научились, менять ttl, но не у всех стоит именно он, есть люди с Ubuntu например, давайте учиться как обойти ограничение на раздачу интернета через телефон на компьютер с Ubuntu на борту, в случае, если ваш оператор Йота, вы должны сделать несколько простых вещей.

1) Нажать одновременно Ctrl+Alt+T . Так вы вызовете терминал.

2) Ввести первую команду:

sudo vi /etc/init.d/local.autostart


Нажать Enter .

3) Попросит ваш пароль, вводим, жмем Enter , далее жмем i - это введет редактор vi в режим редактирования.

4) Вводим сам скрипт фиксирования TTL Ubuntu на значении 65, если у вас Android или iOS (у них стандартный TTL=64), если вы обладатель Люмии , где стандартный TTL равен 128, вам вместо 65 нужно прописать 129. Все это по простейшей формуле, ttl на компе должен быть на 1 больше, чем ttl на телефоне, с которого вы раздаете. Теорию я вам рассказал, а теперь сам скрипт:

#!/bin/bash
sudo iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65 (вот это значение меняйте сами, теория выше в помощь)

6) Теперь необходимо проставить скрипту права на запуск:

sudo chmod +x /etc/init.d/local.autostart


Нажимаем Enter .

7) Теперь последнее, добавляем все это дело в автозапуск:

sudo update-rc.d local.autostart defaults 80

8) Нажимаем Enter . Все будет делаться автоматически и без вашего участия.

Как изменить ttl MacOS

Ну и конечно, нельзя обижать яблочников 🙂 Для изменения ttl на mac делаем следующее

Идем в /Library/StartupItems . Открываем терминал и прописываем: ~> cd /Library/StartupItems/

Создаем там папку (например, это будет yota ). В терминале пишем: /Library/StartupItems> sudo mkdir yota

Идем туда. В терминал вставляем: /Library/StartupItems> cd yota/

4) Создаем там скрипт (он должен называться так же как и папка ), который хотим выполнять.
Для создания скрипта в терминал вбиваем:
/Library/StartupItems/yota> sudo vim yota
И тут откроется редактор Vim! Сюда копируем сам скрипт:

# Скрипт смены ttl на Mac OS X:

#!/bin/sh
sudo sysctl -w net.inet.ip.ttl=65

И закрываем Vim с сохранением результата, вводим в виме (редакторе): yota

5) Создаем файл параметров StartupParameters.plist.
/Library/StartupItems/yota> sudo vim StartupParameters.plist

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

{
Description = "Add static routing tables";
Provides = ("yota");
Requires = ("Network");
OrderPreference = "None";
}

И опять закрываем Vim с сохранением результата, для этого вводим: w! StartupParameters.plist

6) Выставляем права на выполнение нашему скрипту.
/Library/StartupItems/fuckingyota> sudo chmod 755 yota

7) в итоге получаем: /Library/StartupItems/yota> ll

9) А сейчас, мы не будем перезагружать комп , а просто стартанем скрипт, чтобы убедиться в его работоспособности:
/Library/StartupItems/yota> sudo SystemStarter start fyota

Резюмируя мы с вами рассмотрели какие значения ttl у каждой операционной системы, рассмотрели для чего они. Мы научились менять ttl на самых распространенных системах, если есть вопросы пишите их в комментариях.

TTLPatch - это небольшое приложение, которое позволяет снять ограничение на возможность "раздачи" интернета с мобильного устройства на компьютер. Подобные ограничения устанавливаются самыми разными операторами: Yota, МТС, Билайн, Теле2 и так далее.

О Программе

Если вы решили использовать свой портативный девайс на базе Android или iOS в качестве точки доступа для ПК или же подключили его "напрямую" с помощью USB-кабеля, то могли столкнуться со следующей проблемой. При попытке зайти на любой сайт в браузере открывается Captive-портал, на котором вас просят оплатить возможность "раздачи" интернета на компьютер. В отдельных случаях обозреватель просто "отказывается" подключаться к сети.

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

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

Прежде всего TTLPatch нужно скачать на компьютер. Устанавливать ее не требуется, потому как приложение прекрасно работает в портативном режиме. Важно отметить, что программа совместима со всеми версиями Windows, но на 7 и выше ее нужно запускать от имени администратора.

После запуска нужно изменить значение TTL на "65", нажать на клавишу "Применить" и перезагрузить компьютер. Дождавшись перезагрузки, можно подключать свой смартфон или планшета компьютеру и запускать раздачу. При необходимости разрешается "откатить" все изменения кнопкой "Вернуть все как было" или же просто задав стандартное значение TTL - "128". Эта операция также требует перезапуска ПК.

В общем, использовать TTLPatch довольно просто. Если вы не доверяете подобным программам, то можете самостоятельно открыть редактор реестра и изменить необходимые ключи (инструкции есть в сети). Но сделать это при помощи данной утилиты гораздо проще и быстрее.

Ключевые особенности

  • возможность снять ограничение на "раздачу" интернета с портативных устройств нажатием одной клавиши;
  • быстрый откат внесенных изменений;
  • работа с любыми операторами (МТС, Теле2, Yota, Билайн и так далее);
  • запуск в портативном режиме без предварительной установки;
  • совместимость со всеми версиями Windows.
30 сентября 2014 в 11:54

Универсальный метод обхода запрета Yota раздавать интернет с телефона или собираем модуль ядра Android

Старые методы и их недостатки

Я думаю, никому уже не интересно читать во второй раз (а может быть и в третий), о том, как Yota определяет, пользуется ли человек телефоном в режиме модема или точки доступа. «Зачем нам ещё одна статья?» - спросите вы.

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

Именно эти причины мотивировали меня копать дальше в поисках ответа на вечный вопрос «Как же всё-таки нахаляву раздать интернет всему офису?». И найти такой ответ удалось (только для android, у меня нет яблока).

Готовая программа

Когда я узнал, что Yota следит за TTL, то предположил, что наверняка где-то в других странах есть провайдеры, которые поступают так же. Пробуем ввести TTL в поиске Play Market"а.

Я был прав: тут же нашлась программа TTLEditor . Очень приятно, что она мало того, что бесплатная, так ещё и с открытым исходным кодом .
Пользоваться очень просто: выбрать интерфейс (лучше всего выбирать интерфейс через который телефон связан с провайдером, у меня это rmnet0 ) и нажать кнопку OK. Можно также поставить программу срабатывать при загрузке телефона.

Только одна проблема возникла: программа выдала ошибку «TTL update failed ». Прежде чем ругать автора в комментариях и минусовать на Play Market"е, я решил почитать исходный код.

Примечание. Возможно, на вашей модели телефона программа заработает сразу. Значит вам сильно повезло, закрывайте эту статью и радуйтесь жизни.

Причина ошибки

Основное действие программы - запуск от имени root следующей команды:
iptables -t mangle -A POSTROUTING -o <интерфейс> -j TTL --ttl-set <значение TTL>
Много мозгов не нужно, чтобы понять, что делает эта команда (к тому же в программе написано об этом): она устанавливает заданное значение TTL всем пакетам, проходящим через определённый интерфейс (то есть как раз то, что нам требуется).

Я попробовал выполнить команду вручную и увидел вот такую ошибку: iptables: No chain/target/match by that name . Пара минут гугления показала, что эту ошибку iptables готов выдать почти на любые неверные параметры. Гуглим применительно к TTL и что-то всё же находим. Смотрим, насколько подходящую информацию мы нашли.

Команда cat /proc/net/ip_tables_matches выдаёт список, в котором есть ttl , то есть проверять TTL наше ядро умеет. А вот в списке, который выдаёт команда cat /proc/net/ip_tables_targets , нет TTL , поэтому модифицировать TTL наше ядро не умеет . Сдаваться перед таким наглым сговором мобильных провайдеров и производителей мы не станем, поэтому идём собирать модуль ядра, которого не хватает.

Я думаю, на этом этапе пользователи CyanogenMod уже злобно похихикивают, но мне не хотелось так просто отказываться от штатной системы, а хотелось добавить именно в неё новые возможности (даже не заменяя ядро).

Отступление

Далее я предполагаю, что читатель умеет пользоваться Linux, понимает, что такое ядро и модули ядра, а также знает, как с помощью adb перекидывать файлы (adb push/pull) и как открыть на компьютере терминал телефона (adb shell). Если нет - срочно в гугл! Если да - не забудьте включить отладку по USB.

Из чего собирать и чем

Это самый сложный шаг : нужно найти подходящий кросс-компилятор и исходники ядра. Старайтесь искать именно для своего телефона, так как иначе, скорее всего, ничего не заработает (а об этом станет известно только на последнем шаге). Я сделал несколько неудачных попыток, допустив ошибку именно на этом этапе.

Модель моего телефона Sony Xperia Z1 Compact, операционная система моего компьютера Ubuntu 14.04. Ниже на их примере я покажу, как можно действовать.

  • Скачиваем подходящий кросс-компилятор (toolchain). Я нашёл его . Выполняю на компьютере команду:
    git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7 и он у меня в папке arm-eabi-4.7 (для клонирования git-репозитория не забудьте установить git).
  • Номер сборки прошивки можно посмотреть в настройках телефона «О телефоне». У меня: 14.4.A.0.108 .
    Найти нужные исходники ядра удалось в соответствующем архиве и в репозитории . Я взял из архива, потому что раньше отыскал.
    Если я хоть что-то понимаю в мире лицензий, то производитель обязан предоставлять исходные коды ядра, работающего на андроидофоне.

Настройка и сборка

Те, кто сталкивается с процессом сборки ядра впервые, не поддавайтесь панике, с гуглом мы богоподобны всегда.
  • Для начала, открываем консоль в папке с исходниками ядра и настраиваем среду окружения, чтобы ядро собиралось добытым кросс-компилятором:
    export ARCH=arm export CROSS_COMPILE=/путь/к/arm-eabi-4.7/bin/arm-eabi- На конце переменной среды CROSS_COMPILE должен находиться общий префикс большинства (или всех) исполняемых файлов в папке bin .
  • Затем нужно создать для вашей модели телефона дефолтную конфигурацию ядра (файл.config). Нужная для этого команда обычно написана в каком-нибудь README поблизости. В моём случае, в папке с исходниками ядра был файл README_Xperia .
    make rhine_amami_row_defconfig # создание дефолтной конфигурации ядра для Sony Xperia Z1 Compact

  • Собираем ядро и модули:
    make -j8 make modules Если произошли какие-то ошибки, то это значит, что вы, скорее всего, нашли неподходящие исходники ядра или кросс-компилятор.
  • Нужный нам собранный модуль находится здесь: net/netfilter/xt_HL.ko

Использование модуля на телефоне

Перекидываем модуль xt_HL.ko на телефон и пытаемся подключить его к ядру командой insmod .
Если эта команда выдаёт ошибку, то подробности можно узнать в выводе команды dmesg (скорее всего, это будет конфликт версий ядра и модуля или что-то похожее - это значит, что были взяты неподходящие исходники ядра или кросс-компилятор).

Если команда insmod выполнится успешно, то значит модуль удалось подключить к ядру (проверить можно командой lsmod).
После этого попробуем запустить команду, которую безуспешно пытался использовать TTLEditor. Ошибку не выдаёт? Значит правило добавилось в список. Можно проверить командой iptables -t mangle -L:

Пробуем раздавать интернет любым устройствам и радуемся.

Настройка автозагрузки

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

Создадим файл setup_ttl_editing.sh со следующий содержимым:
#!/system/bin/sh insmod /storage/sdcard0/xt_HL.ko iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set 64
Закидываем его на телефон, ставим программу Script Manager и в ней настраиваем, чтобы скрипт запускался при загрузке системы и от пользователя root.

Всё настроено, можно забыть о проблеме раздачи интернета с телефона!

Примечание. Программа TTLEditor нам не нужна. Всё необходимое уже написано в скрипте.

Заключение

Я не буду писать « йота, не будьте жадинами », потому что по сравнению со многими другими мобильными провайдерами они всё-таки достаточно щедрые. Я лучше скажу: йота, оставайтесь такими же как вы есть.

Поделиться