2 votes

Comment interroger/changer la passerelle par défaut via bash sur CM12 ?

Quand je fais un "busybox route" sur CM12 j'obtiens ceci :

localhost / # busybox route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   *               255.255.255.0   U     0      0        0 wlan0

Il n'y a pas de passerelle par défaut définie. En pratique, il doit y en avoir une puisque la connexion Internet fonctionne correctement (elle est également définie dans les paramètres WiFi d'Android). D'autres utilisateurs semblent avoir le même comportement dans la table de routage (par exemple aquí ). Il semble que ce comportement ait commencé avec Android5 car je peux voir des tables de routage standard "style linux" (avec une passerelle par défaut) sur les versions précédentes d'Android (comme KitKat) à plusieurs endroits sur le net.

Quelqu'un sait-il comment interroger/régler/modifier la passerelle par défaut sur CM12/Android 5 via shell/bash (pas simplement en ajoutant une autre route avec 'route add' - il s'agit plutôt de la route spécifique qui est déjà définie) ?

4voto

toomim Points 199

J'ai mis du temps à trouver cette réponse, alors je la partage ici... Lollipop utilise différentes tables de routage avec des règles par utilisateur et/ou interface. Voici un exemple lorsque je suis connecté en wifi :

root@hammerhead:/ # ip rule show
0:      from all lookup local
10000:  from all fwmark 0xc0000/0xd0000 lookup legacy_system
13000:  from all fwmark 0x10063/0x1ffff lookup local_network
13000:  from all fwmark 0x10064/0x1ffff lookup wlan0
14000:  from all oif wlan0 lookup wlan0
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
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
root@hammerhead:/ # ip route show
# As in your example, there's no default route here
192.168.0.0/24 dev wlan0  proto kernel  scope link  src 192.168.0.42
root@hammerhead:/ # ip route show table wlan0
#But here you find it in the wlan0 table
default via 192.168.0.253 dev wlan0  proto static
192.168.0.0/24 dev wlan0  proto static  scope link

Les tables de routage sont lues par priorité (la première colonne dans l'affichage ip rule show), en utilisant la première correspondance.

Vous pouvez modifier une table de routage donnée en ajoutant 'table_name' à la fin des commandes ip route ....

Et ainsi obtenir la première passerelle par défaut disponible :

for a in $(ip rule show | grep lookup | sed -r 's/.* lookup ([^ ]+).*/\1/'); do ip route show table $a | grep ^default | cut -d ' ' -f 2-5; done | head -1

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