¿Cómo configurar el anclaje inverso a través de USB?

  1. Mi teléfono HTC G2 está rooteado y ejecuta Cyanogenmod 7
  2. No tengo plan de datos.
  3. A veces quiero conectar el teléfono a Internet cuando no hay Wi-Fi, actualizar las aplicaciones de Market, respaldar mensajes SMS en Gmail, sincronizar nuevos contactos de Gmail, etc. Cosas que no puedo hacer con el modo de almacenamiento masivo USB.
  4. Tengo una computadora con Windows 7 Professional conectada a Internet, pero no puedo configurar una red Wi-Fi ad-hoc. (Si lo hago, se darán cuenta y me perseguirán).

¿Hay alguna forma de que el teléfono acceda a Internet a través de la conexión USB a la computadora? Si es así, ¿cómo lo configuro?

Esto parece una solución parcial: forum.xda-developers.com/showthread.php?t=1371345

Respuestas (7)

Recientemente descubrí SimpleRT que funciona muy bien con Linux (y aparentemente también con OSX). Simplemente habilite la depuración de USB en su dispositivo (no se requiere root), instale el APK vinculado desde esa página en su dispositivo y conéctelo a su PC a través de USB, y luego ejecute el binario en su PC.

Configurará la conexión como un túnel VPN ( tun0de manera predeterminada) y su dispositivo le pedirá que (a) permita que SimpleRT cree/supervise la conexión VPN y (b) si debe ejecutarla cuando el dispositivo esté configurado como un accesorio USB particular (que es lo que hace el binario).

El proyecto no incluye un binario preconstruido, así que subí uno que construí para Ubuntu (el archivo se descargará).


A continuación se muestra un método manual que debería funcionar en Linux o Windows: http://blog.mathieu.carbou.me/post/60454997009/reverse-usb-tethering-with-android-2-2

PASO 1:

Para Windows: Instale controladores USB desde Android SDK

Para Linux: Nada que hacer

PASO 2:

En Nexus One: conecta el cable USB y activa USB Tethering. Debería ver en Linux o Windows una nueva interfaz de red.

PASO 3:

En una computadora con Linux, configure un puente:

# 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

Consulte https://help.ubuntu.com/community/NetworkConnectionBridge para configurar puentes

En Windows, puentee las 2 interfaces de red

PASO 4:

Configure la interfaz usb0 de su teléfono. Tienes opciones:

  1. Desde su computadora, ejecute:

    ./adb shell netcfg usb0 dhcp
    
  2. O en una terminal raíz en su teléfono, escriba:

    su
    netcfg usb0 dhcp
    

Ahora debería poder conectarse a Internet en su teléfono usando la conexión a Internet de su computadora.

¡Intenta hacer un ping a www.google.com para asegurarte!

PASO 5:

Para desactivar el anclaje inverso, primero desconecte las interfaces de su computadora:

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

Luego, en su teléfono, desmarque la opción USB Tethering.

También puede usar Windows para crear una red WiFi (usando Connectify ) y conectar su dispositivo a ella: http://www.nexusoneforum.net/forum/nexus-one-faq-how-tos/3133-reverse-tether-getting -internet-tu-teléfono.html

En mi teléfono, "netcfg usb0 dhcp" debería ser "netcfg rdnis0 dhcp"
En mi cyanogenmod 13, no se puede encontrar netcfg :(
netcfg sigue faltando en LineageOS. Es posible que necesites busybox en su lugar. android.stackexchange.com/questions/141900/…
Al ejecutar sudo ifconfig usb0 0.0.0.0, obtengo SIOCSIFADDR: no existe tal dispositivo usb0: ERROR al obtener indicadores de interfaz: no existe tal dispositivo
@ user1917769 Tendrá que averiguar cómo llama su dispositivo a la interfaz USB si es diferente.
SimpleRT no funciona para mí, el error es "¡El dispositivo no es un accesorio compatible! Motivo: Recurso ocupado". Puede deberse a la forma diferente en que Linux accede a los dispositivos USB en la actualidad. La solución podría estar aquí , pero no lo intenté.

Hay algunas posibilidades más, pero todas las que conozco requieren un dispositivo rooteado.

Uso de la aplicación Reverse Tether

Primero, hay una aplicación llamada Reverse Tether disponible de forma gratuita en Play Store (es una prueba limitada, lo que restringe el tiempo que puede estar conectado, pero al menos puede probar de esta manera si su dispositivo es totalmente compatible; la versión completa es alrededor de USD 5). De acuerdo con un artículo en AndroidAuthority , la configuración debería ser tan fácil como 1-2-3: conecte el cable USB, inicie la aplicación, deje que se configure automáticamente (la configuración manual también está disponible) y listo. También puede dejar que le pida que se conecte cuando encuentre una conexión USB.

Métodos manuales usando Wifi

Lo sé, esto no es USB, pero para completar (y dar alternativas) pensé que también podría agregar estos:

jugando con el sistema y parcheando alrededor

Varios métodos manuales también están disponibles (y se describen, por ejemplo, en XDA ), pero en su mayoría son técnicamente complejos y esperan que parchee los archivos del sistema; no para el usuario de todos los días, sino para el fanático de la tecnología.

Terminal y listo

Sin embargo, otro buen método solo debería involucrar 3 líneas en la terminal, y se describe en una publicación aquí , para conectarse a una red Wifi ad-hoc. Básicamente, debería ir así:

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

manipulando algún archivo de configuración

Otro método bastante sencillo también se describe aquí , y consiste en editar el wpa_supplicant.confarchivo una vez (añadiendo manualmente su red Wifi ad-hoc).

Método Fácil-Peasy

¿Necesito decir, en serio? Usa un enrutador Wifi. Incluso hay algunos "enrutadores de viaje" pequeños por menos de USD 50. Y luego conecta tu teléfono como lo usas para conectarlo a otras redes Wifi...

Sé que esta es una respuesta incluso posterior, pero vale la pena mencionarla.

¡No se necesita enraizamiento!

¡No se necesita instalación de la aplicación!* Lo que ni siquiera es posible si no tienes otra conexión a Internet.

Hay un proyecto llamado gnirehtet .

  1. Instale adb en la PC host (Windows/Linux/Mac)
  2. Descargue el archivo zip gnirehtet en el host
  3. Descomprimirlo
  4. Ejecute el comando

¡Eso es! Para obtener más información, lea el archivo Léame de gnirehtet en su sitio web.

*=Detrás de escena instalará un archivo apk en su dispositivo a través de la conexión USB.

Solo una respuesta no comercial de trabajo completo multiplataforma aquí. Incluso se conecta Google Play (Android 9 Pie).
@cdlvcdlv: No hay razón para que no deba hacerlo :) FWIW, esto usa la API VPN de Android, por lo que cualquier cosa sobre TCP/IPv4 o UDP/IPv4 debería funcionar. (IPv6 no parece ser compatible)

¡Oye! Hay una aplicación para eso

Reenvío de puertos USB de Android
http://www.codeproject.com/kb/android/usbportforwarding.aspx

Estoy un poco confundido sobre cómo usarlo, por favor informe si lo hace funcionar perfectamente.

Aparentemente, esto requiere un proxy que no sea la computadora en sí, ¿y solo admite la navegación web?
Dice que usa el puerto 8080, lo que no necesariamente lo restringe a la navegación web, ¿verdad? Pensé que Market podría usar esto, sin embargo, Market usa la publicación 5228.

Encontré una buena herramienta para el anclaje inverso en el foro xda-developers. Se llama Tethering inverso de Android . Funciona con Windows y requiere un teléfono rooteado.
Funciona bien en mi HTC Desire HD con MIUI v4.

Estoy usando este software, funciona perfectamente bien en mt galaxy s duosgts7562. Puedo usar todas las cosas relacionadas con Internet a través de la conexión inversa.
Para usar youtube y otras aplicaciones similares, debe hacer clic en el botón instalar hack y luego está listo para comenzar.

Pasos de anclaje inverso de Android:

Nota: Funciona solo en un teléfono Android rooteado.

  1. Conecte el dispositivo Android a través de USB.
  2. Habilite la conexión USB. Para hacerlo, vaya a Configuración → Más... → Anclaje a red y punto de acceso móvil → Anclaje a red USB .

  3. En la máquina host, el administrador de la red puede detectar la conexión de anclaje USB.
    Su nombre será algo así como "Conexión por cable 2" (o 3).
    Debe editar su "IPV4/Método" a "Compartido con otras computadoras".

3.1. Sin el administrador de red, tendrás que hacerlo manualmente:

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

Ahora, como se explica aquí al final del Paso 1 , debe modificar iptablescon sudo iptables -t nat -A POSTROUTING -j MASQUERADE. Pero... prefiera permitir que el administrador de la red lo haga si es posible.

  1. En el dispositivo Android, puede emitir estos comandos usando una terminal suallí, o desde su máquina host usando ADB:

    $ adb shell su -c "netcfg rndis0 dhcp"
    

    Si no obtiene la dirección IP, o si está utilizando alguna aplicación en la que es deseable una dirección IP estática como la aplicación "Webkey para Android", asígnela manualmente:

    $ 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"
    

Ahora Internet estaría funcionando en el teléfono Android.

Para verificar, en adb shellla terminal de Android, pruebe el comando ping www.google.com.

Esto funciona para mi.

El netcfg de mi dispositivo parece ser más limitado y la versión manual del paso 4 falla:no such action '10.42.0.2' usage: netcfg [<interface> {dhcp|up|down}]
@MatthewRead el comando es incorrecto, en realidad es ifconfig rndis0 10.42.0.2 netmask 255.255.255.0, por cierto, para ver que todas las interfaces están netcfgsolas. instrucciones similares se detallan aquí

Para dispositivos no rooteados

Sé que esta es una respuesta tardía, pero como todas las respuestas existentes sugieren que la conexión inversa USB solo es posible si su dispositivo está rooteado o tiene soporte del sistema para conexión inversa, pensé que valdría la pena señalar que hay una opción más:

Estaba buscando una solución de anclaje inverso que funcionara en mis dispositivos no rooteados y con una MacBook, pero simplemente no pude encontrar nada. Eventualmente, comencé a desarrollar mi propia solución. El resultado es una aplicación que funciona en dispositivos con Android 4.0 o superior en el lado del cliente y en todos los principales sistemas operativos de escritorio en el lado del host.

La aplicación ReverseTethering NoRoot

La aplicación está disponible en Google Play: ReverseTethering NoRoot

No pude hacer que esto se conectara en Windows o Ubuntu, pero parecía funcionar en OSX.