¿Cómo consultar/cambiar la puerta de enlace predeterminada a través de bash en CM12?

Cuando hago una 'ruta de caja ocupada' en CM12 obtengo esto:

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

No hay una puerta de enlace predeterminada definida. Prácticamente debe haber uno ya que la conexión a Internet funciona correctamente (también está configurado en la configuración de WiFi de Android). Otros usuarios parecen tener el mismo comportamiento de la tabla de enrutamiento (como aquí ). Parece que este comportamiento comenzó con Android5, ya que puedo ver tablas de enrutamiento estándar de "estilo Linux" (con puerta de enlace predeterminada) en versiones anteriores de Android (como KitKat) en varios lugares de la red.

¿Alguien sabe cómo consultar/establecer/cambiar la puerta de enlace predeterminada en CM12/Android 5 a través de shell/bash (no solo agregar otra ruta con 'agregar ruta', se trata más de la específica que ya está configurada)?

Respuestas (1)

Me tomó un tiempo encontrar esta respuesta, así que comparto aquí... Lollipop usa diferentes tablas de enrutamiento con reglas por usuario y/o interfaz. Aquí hay una muestra cuando estoy conectado a 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

Las tablas de enrutamiento se leen por prioridad (la primera columna en la pantalla de visualización de la regla IP), utilizando la primera coincidencia.

Puede modificar una tabla de enrutamiento determinada agregando 'table table_name' al final de los comandos ip route...

Y así obtener la primera puerta de enlace predeterminada 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