4 votos

USB reverse tethering - netcfg not found (marshmallow CM13)

He estado tratando de conseguir la inmovilización inversa de trabajo en mi teléfono. Tengo un Galaxy S5 (g900t), corriendo cyanogenmod 13 (malvavisco)...rooteado, y con busybox.

*Edición: He hecho algunos progresos. Corrí esto en mi máquina ubuntu:

sudo ip addr flush dev eth0
sudo ip addr flush dev usb0
sudo brctl addbr br0
sudo brctl addif br0 eth0 usb0
sudo ip link set dev br0 up
sudo dhclient br0

Y luego ejecuté esto en el shell adb:

dhcptool rndis0

Después de hacer esto, parece que tengo internet.

Puedo hacer wget -s google.com . Sin embargo, sólo funciona como su .

root@klte:/ # wget -s google.com
Connecting to google.com (4.59.40.99:80)
Connecting to www.google.com (4.59.40.99:80)

2000@klte:/ $ wget -s google.com
wget: bad address 'google.com'

He comprobado que puedo hacer wget como usuario habitual cuando estoy conectado a través de la red celular o wifi.

Así que mi pregunta es:

¿Por qué podría aparentemente acceder a Internet como su ¿pero no como usuario habitual? He comprobado mi ifconfig y route y todos tienen el mismo aspecto, ya sea como su o usuario normal. ¿Alguien ve lo que estoy haciendo mal?


Impresiones de los ajustes de configuración

Estos ajustes son todos iguales, tanto si los ejecuto como su o no. Aquí está mi ifconfig :

1|root@klte:/ # ifconfig rndis0
rndis0    Link encap:Ethernet  HWaddr 62:91:0C:85:FD:6B  
          inet addr:192.168.22.6  Bcast:192.168.22.255  Mask:255.255.255.0
          inet6 addr: fe80::6091:cff:fe85:fd6b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:582 errors:0 dropped:0 overruns:0 frame:0
          TX packets:126 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:62495 (61.0 KiB)  TX bytes:15839 (15.4 KiB)

Y aquí está mi route mesa:

root@klte:/ # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.22.1    0.0.0.0         UG    0      0        0 rndis0
192.168.22.0    *               255.255.255.0   U     0      0        0 rndis0

Y parece que mis servidores DNS están configurados correctamente:

root@klte:/ # cat /etc/resolv.conf  
nameserver 8.8.4.4
nameserver 8.8.8.8

3voto

gingras.ol Puntos 96

Recientemente me he topado con lo que me parece una solución mucho mejor (o al menos más fácil) para el tethering inverso: gnirehtet

Configura una VPN en el Android que redirige todo el tráfico a través de una adb reverse conexión de puerto. Ni siquiera requiere Root en absoluto.

1voto

Gro-Tsen Puntos 111

Sé que estoy respondiendo a una pregunta antigua aquí, pero me he encontrado con el mismo problema con Android Nougat (LineageOS 14.1), y también podría publicar la solución que encontré:

Ejecute lo siguiente como root en el teléfono (a través de adb ) después de iniciar el tethering:

dhcptool rndis0
ip rule add from all lookup main pref 99

(los comandos a ejecutar en el ordenador no están en cuestión aquí; en mi caso, tuve que modprobe usbnet y modprobe rndis-host para ver incluso el usb0 interfaz, pero ese es un problema completamente diferente).

La cuestión es que Android utiliza una configuración de enrutamiento bastante compleja, con diferentes tablas de enrutamiento (ver más abajo un volcado). El dhcptool rndis0 pone las líneas de enrutamiento apropiadas en el estándar main tabla de enrutamiento, pero el main La tabla sólo se consulta en virtud de una norma que dice uidrange 0-0 (es decir, para root ). Lo que hace la segunda línea de arriba es forzar el uso del main tabla de enrutamiento para todo. Esto debería deshacerse después con

ip rule del pref 99

Esto parece funcionar para mí, pero no estoy seguro de lo robusto que es. Tal vez rompe sutilmente algo que no me di cuenta de que lo haría. Tal vez hay un comando específico de Android de más alto nivel que es mejor y que no conozco.

A modo de recordatorio, se puede utilizar ip rule show para mostrar las reglas de enrutamiento actuales, y ip route show table wlan0 para mostrar el contenido de la tabla wlan0 (decir).

Como referencia, aquí están las reglas de enrutamiento que encontré en mi Android una vez que se configuró el tethering:

0:      from all lookup local 
10000:  from all fwmark 0xc0000/0xd0000 lookup legacy_system 
10500:  from all oif wlan0 uidrange 0-0 lookup wlan0 
10500:  from all oif rndis0 uidrange 0-0 lookup local_network 
13000:  from all fwmark 0x10063/0x1ffff lookup local_network 
13000:  from all fwmark 0x10064/0x1ffff lookup wlan0 
14000:  from all oif wlan0 lookup wlan0 
14000:  from all oif rndis0 lookup local_network 
15000:  from all fwmark 0x0/0x10000 lookup legacy_system 
16000:  from all fwmark 0x0/0x10000 lookup legacy_network 
17000:  from all fwmark 0x0/0x10000 lookup local_network 
18000:  from all iif rndis0 lookup wlan0 
19000:  from all fwmark 0x64/0x1ffff lookup wlan0 
22000:  from all fwmark 0x0/0xffff lookup wlan0 
23000:  from all fwmark 0x0/0xffff uidrange 0-0 lookup main 
32000:  from all unreachable

1voto

Nadu Puntos 121

Sólo puedo confirmar que 'Android 6.0.1' tiene el mismo comportamiento. USB reverse tethering sólo funciona para el usuario 'Root'. Para el usuario 'shell' no funciona.

  1. El cable USB está conectado al PC con Windows 7
  2. Activado el "USB tethering" en el teléfono
  3. Window instaló automáticamente el 'Remote Ndis Driver'
  4. Habilitar manualmente la "Conexión compartida a Internet" en mi LAN Ndis (de la que obtengo Internet) para el "USB Remote Ndis". Haciendo esto Windows asigna a la 'Ndis Remota USB' la IP 192.168.137.1
    ^ por esta configuración en el PC es completa

Ahora uso "adb.exe shell" para entrar en Android -> su -> ifconfig rndis0 192.168.137.2 netmask 255.255.255.0 -> route add default gw 192.168.137.1 dev rndis0 Ahora pruébalo:

shell@j5nlte:/ $ su
root@j5nlte:/ #
root@j5nlte:/ # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.137.1   0.0.0.0         UG    0      0        0 rndis0
192.168.137.0   *               255.255.255.0   U     0      0        0 rndis0

root@j5nlte:/ # wget --s google.com
wget --s google.com
Connecting to google.com (216.58.205.238:80)
Connecting to www.google.de (172.217.20.67:80)

root@j5nlte:/ # exit
shell@j5nlte:/ $ wget --s google.com
wget --s google.com

Aquí sólo se cuelga wget no da respuesta y después de algún tiempo: wget: mala dirección 'google.com'

Actualizar: En el registro cambie la configuración de ICS HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\services\SharedAccess\Parameters ScopeAddress "192.168.137.1" => "192.168.42.1"

ya que Android lo utiliza por defecto como puedes ver aquí: shell@j5nlte:/ $ ifconfig rndis0 rndis0 Link encap:Ethernet HWaddr E6:D3:B6:BC:7B:D4 inet addr:192.168.42.129 Bcast:192.168.42.255 Mask:255.255.255.0

ahora la única línea que queda para habilitar el USB reverse tethering para al menos Root es:

route add default gw 192.168.42.1 dev rndis0

Ahora estoy experimentando con ruta ip ayuda de ip route ....

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X