Как настроить обратный модем через USB?

  1. Мой телефон HTC G2 рутирован и работает под управлением Cyanogenmod 7.
  2. У меня нет тарифного плана.
  3. Иногда я хочу подключить телефон к Интернету, когда нет Wi-Fi, обновить приложения Market, создать резервную копию SMS-сообщений в Gmail, синхронизировать новые контакты из Gmail и т. д. То, что я не могу сделать в режиме USB-накопителя.
  4. У меня есть компьютер с Windows 7 Professional, подключенный к Интернету, но мне не разрешено настраивать специальную сеть Wi-Fi. (Если я это сделаю, они заметят и выследят меня.)

Есть ли способ для телефона получить доступ к Интернету через USB-подключение к компьютеру? Если да, то как мне его настроить?

Это похоже на частичное решение: forum.xda-developers.com/showthread.php?t=1371345

Ответы (7)

Недавно я обнаружил SimpleRT , который очень хорошо работает с Linux (и, по-видимому, с OSX). Просто включите отладку по USB на своем устройстве (рут не требуется), установите APK, связанный с этой страницы, на свое устройство и подключите его к компьютеру через USB, а затем запустите двоичный файл на своем компьютере.

Он настроит соединение как VPN-туннель ( tun0по умолчанию), и ваше устройство должно предложить вам (а) разрешить SimpleRT создавать/контролировать VPN-соединение, а также (б) запускать ли его, когда устройство настроено как конкретный USB-аксессуар (что и делает двоичный файл).

В проект не входит готовый двоичный файл, поэтому я загрузил тот, который собрал для Ubuntu (файл будет загружен).


Ниже приведен ручной метод, который должен работать в Linux или Windows: http://blog.mathieu.carbou.me/post/60454997009/reverse-usb-tethering-with-android-2-2 .

ШАГ 1:

Для Windows: установите USB-драйверы из Android SDK.

Для Linux: ничего не делать

ШАГ 2:

На Nexus One: подключите USB-кабель и активируйте USB-модем. Вы должны увидеть в Linux или Windows новый сетевой интерфейс.

ШАГ 3:

На компьютере с Linux настройте мост:

# usb0 is the new network interface
# eth0 is the main interface connected to internet (or a gateway)

sudo ifconfig eth0 0.0.0.0  
sudo ifconfig usb0 0.0.0.0  
sudo brctl addbr br0  
sudo brctl addif br0 eth0  
sudo brctl addif br0 usb0  
sudo ifconfig br0 up  
sudo dhclient br0

См. https://help.ubuntu.com/community/NetworkConnectionBridge для настройки мостов .

В Windows соедините 2 сетевых интерфейса.

ШАГ 4:

Настройте интерфейс usb0 вашего телефона. У вас есть варианты:

  1. Со своего компьютера выполните:

    ./adb shell netcfg usb0 dhcp
    
  2. Или в корневом терминале на телефоне введите:

    su
    netcfg usb0 dhcp
    

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

Попробуйте пропинговать www.google.com , чтобы быть уверенным!

ШАГ 5:

Чтобы отключить обратную модем, сначала отключите интерфейсы на вашем компьютере:

sudo ifconfig eth0 down  
sudo ifconfig usb0 down  
sudo ifconfig br0 down  
sudo brctl delbr br0  
sudo ifconfig eth0 up  
sudo dhclient eth0

Затем на телефоне снимите флажок «USB-модем»!

Вы также можете использовать Windows для создания сети Wi-Fi (используя Connectify ) и подключить к ней свое устройство: http://www.nexusoneforum.net/forum/nexus-one-faq-how-tos/3133-reverse-tether-getting -интернет-ваш-телефон.html

В моем телефоне «netcfg usb0 dhcp» должно быть «netcfg rdnis0 dhcp».
На моем cyanogenmod 13 netcfg не найден :(
netcfg по-прежнему отсутствует в LineageOS. Вместо этого вам может понадобиться busybox. android.stackexchange.com/questions/141900/…
При запуске sudo ifconfig usb0 0.0.0.0я получаю SIOCSIFADDR: нет такого устройства usb0: ОШИБКА при получении флагов интерфейса: нет такого устройства
@user1917769 user1917769 Вам придется выяснить, как ваше устройство называет интерфейс USB, если он отличается.
У меня SimpleRT не работает, ошибка "Устройство не поддерживает аксессуар! Причина: Ресурс занят". Возможно, это связано с тем, что в настоящее время Linux по-разному обращается к USB-устройствам. Решение может быть здесь , но я не пробовал.

Есть еще несколько возможностей, но все они, о которых я знаю, требуют рутированного устройства.

Использование приложения Reverse Tether

Во-первых, в Play Store доступно бесплатное приложение Reverse Tether (это ограниченная пробная версия, которая ограничивает время, в течение которого вы можете быть подключены, но, по крайней мере, таким образом вы можете проверить, полностью ли поддерживается ваше устройство; полная версия около 5 долларов США). Согласно статье на AndroidAuthority , установка должна быть простой, как 1-2-3: подключите USB-кабель, запустите приложение, дайте ему автоматическую настройку (также доступна ручная настройка) — и готово. Вы также можете разрешить ему запрашивать подключение, когда он находит USB-соединение.

Ручные методы с использованием Wi-Fi

Я знаю, что это не USB, но для полноты (и предоставления альтернатив) я подумал, что могу добавить и это:

возиться с системой и патчить вокруг

Также доступно несколько ручных методов (описанных, например, на XDA ), но они в основном технически сложны и предполагают, что вы исправите системные файлы; не для повседневного пользователя, а скорее для технаря.

Терминал и вперед

Тем не менее, еще один хороший метод должен включать 3 линии в терминале и описан в сообщении здесь для подключения к специальной сети Wi-Fi. В принципе, это должно быть так:

su
ifconfig wlan0 up
iwconfig mode auto;
iwconfig wlan0 essid "your SSID" channel 11 mode auto
ifconfig wlan0 10.0.0.x netmask 255.255.255.0

манипулирование некоторым файлом конфигурации

Еще один довольно простой способ также описан здесь и включает wpa_supplicant.confоднократное редактирование файла (вручную добавление вашей сети ad-hoc Wifi).

Метод Easy-Peasy

Я должен сказать, правда? Используйте Wi-Fi роутер. Есть даже несколько небольших «маршрутизаторов для путешествий» менее чем за 50 долларов США. А затем подключите свой телефон, как вы используете для подключения к другим сетям Wi-Fi...

Я знаю, что это еще более поздний ответ, но об этом стоит упомянуть.

Укоренение не требуется!

Установка приложения не требуется!* Это даже невозможно, если у вас нет другого подключения к Интернету.

Есть проект gnirehtet .

  1. Установите adb на хост-компьютер (Windows/Linux/Mac)
  2. Загрузите zip-файл gnirehtet на хост
  3. Разархивируйте его
  4. Запустите команду

Вот и все! Для получения дополнительной информации прочитайте файл readme gnirehtet на их веб-сайте.

*=За кулисами он установит файл apk на ваше устройство через USB-соединение.

Здесь только полноценный кроссплатформенный некоммерческий ответ. Подключается даже Google Play (Android 9 Pie).
@cdlvcdlv: Нет причин, по которым этого не должно быть :) FWIW, здесь используется Android VPN API, поэтому все, что работает через TCP / IPv4 или UDP / IPv4, должно работать. (Кажется, IPv6 не поддерживается)

Привет! для этого есть приложение

Переадресация USB-портов Android
http://www.codeproject.com/kb/android/usbportforwarding.aspx

Я немного смущен, как его использовать, пожалуйста, сообщите, если у вас все работает отлично.

Очевидно, для этого требуется прокси-сервер, отличный от самого компьютера, и поддерживает только просмотр веб-страниц?
В нем говорится, что он использует порт 8080, что не обязательно ограничивает его просмотром веб-страниц, не так ли? Я думал, что Маркет может использовать это, однако Маркет использует пост 5228.

Я нашел хороший инструмент для обратного подключения на форуме xda-developers. Это называется Android Reverse Tethering . Он работает с Windows и требует рутированного телефона.
Он отлично работает на моем HTC Desire HD с MIUI v4.

Я использую это программное обеспечение, оно отлично работает на mt galaxy s duosgts7562. Я могу пользоваться всеми вещами, связанными с Интернетом, через реверсивный модем.
Чтобы использовать YouTube и другие подобные приложения, вам нужно нажать кнопку «Установить хак», после чего вы готовы к работе.

Шаги обратной привязки Android:

Примечание. Работает только на рутированном телефоне Android.

  1. Подключите Android-устройство через USB.
  2. Включите USB-модем. Для этого перейдите в «Настройки» → «Дополнительно…» → «Модем и мобильная точка доступа» → «Модем через USB» .

  3. На хост-компьютере сетевым менеджером может быть обнаружено USB-модемное соединение.
    Его название будет что-то вроде «Проводное соединение 2» (или 3).
    Вы должны отредактировать его «IPV4/Метод» на «Общий доступ к другим компьютерам».

3.1. Без сетевого менеджера вам придется делать это вручную:

    $ sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0 
    $ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Теперь, как объяснялось здесь в конце Шага 1 , вам нужно изменить iptablesс помощью sudo iptables -t nat -A POSTROUTING -j MASQUERADE. Но... предпочтительнее разрешить сетевому менеджеру сделать это, если это возможно.

  1. На устройстве Android вы можете выполнять эти команды с помощью терминала suили с вашего хост-компьютера с помощью ADB:

    $ adb shell su -c "netcfg rndis0 dhcp"
    

    Если он не получает IP-адрес или если вы используете какое-либо приложение, для которого желателен статический IP-адрес, например приложение «Webkey для Android», назначьте его вручную:

    $ adb shell su -c "ifconfig rndis0 10.42.0.2 netmask 255.255.255.0"
    $ adb shell su -c "route add default gw 10.42.0.1 dev rndis0"
    

Теперь интернет будет работать в телефоне Android.

Чтобы проверить, на adb shellтерминале Android или Android, попробуйте команду ping www.google.com.

Меня устраивает.

netcfg моего устройства кажется более ограниченным, и ручная версия шага 4 терпит неудачу:no such action '10.42.0.2' usage: netcfg [<interface> {dhcp|up|down}]
@MatthewRead команда неверна, на самом деле это так ifconfig rndis0 10.42.0.2 netmask 255.255.255.0, кстати, чтобы увидеть все интерфейсы в netcfgодиночку. подобные инструкции подробно описаны здесь

Для нерутированных устройств

Я знаю, что это поздний ответ, но, поскольку все существующие ответы предполагают, что обратная привязка USB возможна только в том случае, если ваше устройство рутировано или имеет системную поддержку обратной привязки, я думаю, что стоит указать, что есть еще один вариант:

Я искал решение для обратного модема, которое работало бы на моих устройствах без рута и на MacBook, но ничего не нашел. В конце концов, я начал разрабатывать собственное решение. В результате получилось приложение, которое работает на устройствах под управлением Android 4.0 или выше на стороне клиента и на всех основных настольных операционных системах на стороне хоста.

Приложение ReverseTethering NoRoot

Приложение доступно в Google Play: ReverseTethering NoRoot

Я не мог заставить это подключиться к Windows или Ubuntu, но, похоже, это работало на OSX.