Wie kann ich das Standard-Gateway über Bash auf CM12 abfragen / ändern?

Wenn ich auf CM12 eine 'Busybox-Route' mache, bekomme ich Folgendes:

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

Es ist kein Standard-Gateway definiert. Praktischerweise muss eine vorhanden sein, da die Internetverbindung ordnungsgemäß funktioniert (sie wird auch in den Android-WLAN-Einstellungen festgelegt). Andere Benutzer scheinen das gleiche Routing-Tabellenverhalten zu haben (wie hier ). Es scheint, dass dieses Verhalten mit Android5 begann, da ich Standard-Routing-Tabellen im "Linux-Stil" (mit Standard-Gateway) in früheren Android-Versionen (wie KitKat) an mehreren Stellen im Internet sehen kann.

Weiß jemand, wie man das Standard-Gateway auf CM12/Android 5 über Shell/Bash abfragt/einstellt/ändert (nicht nur eine weitere Route mit 'route add' hinzufügt - es geht mehr um die bereits festgelegte Route)?

Antworten (1)

Ich habe eine Weile gebraucht, um diese Antwort zu finden, also hier teilen ... Lollipop verwendet verschiedene Routing-Tabellen mit Regeln pro Benutzer und / oder Schnittstelle. Hier ist ein Beispiel, wenn ich mit WLAN verbunden bin:

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

Routing-Tabellen werden nach Priorität gelesen (die erste Spalte in der Anzeige der IP-Regeln), wobei die erste Übereinstimmung verwendet wird.

Sie können eine bestimmte Routing-Tabelle ändern, indem Sie am Ende der ip route ...-Befehle „table table_name“ hinzufügen.

Und so erhalten Sie das erste verfügbare Standardgateway:

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