4 votes

USB reverse tethering - netcfg non trouvé (marshmallow CM13)

J'ai essayé de faire fonctionner le reverse tethering sur mon téléphone. J'ai un Galaxy S5 (g900t), fonctionnant sous cyanogenmod 13 (marshmallow)...rooté, et avec busybox.

*Edit : J'ai fait quelques progrès. Je l'ai fait tourner sur ma machine 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

Et ensuite j'ai lancé ça dans le shell adb :

dhcptool rndis0

Après avoir fait cela, il semble que je dispose d'Internet.

Je peux le faire. wget -s google.com . Cependant, il ne fonctionne que comme 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'

J'ai vérifié que je peux faire wget en tant qu'utilisateur régulier lorsque je suis connecté par réseau cellulaire ou wifi.

Donc ma question est :

Pourquoi pourrais-je apparemment accéder à l'internet en tant que su mais pas en tant qu'utilisateur régulier ? J'ai vérifié mon ifconfig y route et ils se ressemblent tous, que ce soit en tant que su ou utilisateur régulier. Quelqu'un voit-il ce que je fais mal ?


Impressions des paramètres de configuration

Ces paramètres sont tous les mêmes, que je les exécute en tant que su ou pas. Voici mon 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)

Et voici mon route table :

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

Et il semble que mes serveurs DNS soient correctement configurés :

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

3voto

David784 Points 171

Je suis récemment tombé sur ce qui me semble être une bien meilleure (ou du moins plus facile) solution pour le reverse tethering : gnirehtet

Il met en place un VPN sur Android qui redirige tout le trafic à travers une adb reverse connexion au port. Il n'y a même pas besoin de Root.

1voto

Gro-Tsen Points 111

Je sais que je réponds à une vieille question ici, mais j'ai rencontré le même problème avec Android Nougat (LineageOS 14.1), et je pourrais aussi bien poster la solution que j'ai trouvée :

Exécutez ce qui suit en tant que root sur le téléphone (par adb ) après avoir commencé le tethering :

dhcptool rndis0
ip rule add from all lookup main pref 99

(les commandes à exécuter sur l'ordinateur ne sont pas en question ici ; dans mon cas, j'ai dû modprobe usbnet y modprobe rndis-host pour même voir le usb0 mais c'est un tout autre problème).

Le problème est qu'Android utilise une configuration de routage assez complexe, avec différentes tables de routage (voir ci-dessous pour un aperçu). Le site dhcptool rndis0 met les lignes de routage appropriées dans le standard main table de routage, mais le main La table n'est consultée qu'en vertu d'une règle qui dit uidrange 0-0 (c'est-à-dire pour root ). Ce que la deuxième ligne ci-dessus fait, c'est forcer l'utilisation de l'option main table de routage pour tout. Ceci doit être annulé après coup avec

ip rule del pref 99

Cela semble fonctionner pour moi, mais je ne suis pas sûr de sa robustesse. Peut-être que cela casse subtilement quelque chose que je n'avais pas réalisé. Peut-être existe-t-il une commande de niveau supérieur spécifique à Android qui est meilleure et que je ne connais pas.

Pour rappel, on peut utiliser ip rule show pour afficher les règles de routage actuelles, et ip route show table wlan0 pour afficher le contenu du tableau wlan0 (dire).

Pour référence, voici les règles de routage que j'ai trouvées sur mon Android une fois le tethering configuré :

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 Points 131

Je peux juste confirmer que 'Android 6.0.1' a le même comportement. Le reverse tethering USB ne fonctionne que pour l'utilisateur 'Root'. Pour l'utilisateur 'shell' il ne fonctionne pas.

  1. Le câble USB se branche sur un PC équipé de Windows 7.
  2. Activation de la fonction "USB tethering" sur le téléphone.
  3. La fenêtre a automatiquement installé 'Remote Ndis Driver'.
  4. Activez manuellement le partage de la connexion Internet sur mon Ndis LAN (d'où je reçois l'Internet) pour le 'Ndis distant USB'. Ce faisant, Windows attribue au "Ndis distant USB" l'adresse IP 192.168.137.1.
    ^ par cette installation sur le PC est terminée

Maintenant j'utilise "adb.exe shell" pour me connecter à Android -> su -> ifconfig rndis0 192.168.137.2 netmask 255.255.255.0 -> route add default gw 192.168.137.1 dev rndis0 Maintenant, testez-le :

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

Ici, il se bloque juste wget ne donne aucune réponse et après un certain temps : wget : bad address 'google.com' (mauvaise adresse)

Mise à jour : Dans le registre, changez le paramètre ICS HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\services\SharedAccess\Parameters ScopeAddress "192.168.137.1" => "192.168.42.1".

puisque Android l'utilise par défaut comme vous pouvez le voir ici : 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

maintenant la seule ligne qui reste pour activer le reverse tethering USB pour au moins Root est :

route add default gw 192.168.42.1 dev rndis0

Maintenant, j'expérimente juste avec ip route Aide pour ip route ....

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X