klink0v (klink0v) wrote,
klink0v
klink0v

Categories:

Reverse Tethering

Я вот тут внезапно задумался. Если Android-ный телефон умеет раздавать интернет на компьютер по USB-шнуру, то возможно ли обратное? То есть PC или ноутбук уже подключены к интернету, а хочется этот же линк использовать и на телефоне посредством USB-шланга. Бывает полезно, когда сигнал сотовой сети крайне нестабилен, а вай-фая нет (привет, donz_ru).

Оказалось, таки да. Велосипеда изобретать не требуется. Reverse Tethering существует. Но из-за каких-то странных особенностей архитектуры Android-а, его реализация в последних версиях возможна почему-то только с танцами и бубнами, хоть и не требует рутования телефона. Наиболее распространенный способ: на стороне "андрюши" создается VPN-соединение, а на стороне PC оно "разбирается" либо при помощи tun-устройства (Linux), либо самописной софтиной-ретранслятором (Windows).

Интересно то, что в телефонах Xiaomi такая фича присутствует "из коробки", но нужно устанавливать его "родной" Mi PC Suite, который есть только под винду. Еще есть вот такая интересная софтинка, но мне по некоторым причинам она не очень понравилась.

Хороший обзор различных вариантов исполнения этого самого Reverse Tethering есть вот у этого товарища, одного из разработчиков Geny Motion. У него же есть ссылки на проекты, которые ему по каким-то причинам не подошли (объясняется почему). И он написал собственный ретранслятор для PC под названием gnirehtet сначала на Java, который потом переписал на Rust-е.

Но поскольку я линуксоид и user-space не очень жалую, то мне больше приглянулся проект нашего соотечественника Константина Меняева под названием SimpleRT. И действительно, проще уже некуда. Минимальная APK-шка для телефона, которая сама настраивает VPN соединение и заворачивает поток данных из него на типа "USB-аксессуар", в роли которого выступает комп. Где оный разворачивается мелкой сишной приблудой на пару десятков строк кода и выпускается в ядро Linux-а через tun-интерфейс.

Единственное, автор зачем-то жестко зашил в исходники название исходящего ethernet-интерфейса, поэтому на современных дистрибутивах оно "из коробки" не взлетит. С другой стороны, найти место где надо поменять нужные буковки, вообще не составит никакого труда даже незнакомому с синтаксисом человеку. Там реально полтора файла с кодом.

Я себе собрал, работает. Прикольно. Можно слушать Яндекс.Музыку и не загаживать Wi-Fi эфир. :) Всякие там eMotion через это дело тоже работают. Так что вот вам пища к размышлению. На случай, если вы сидите за компом в каком-нибудь подвале, а точки доступа либо нет, либо она анально огорожена. Вполне себе вариант.

Tags: android, сети
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 14 comments