Configuración de la conexión de red por cable con WiFi aún habilitado

Tengo una tablet Nexus y un USB-OTG + USB/ethernet conectado. He probado que el hardware funciona desactivando WIFI y configurando eth0 con

netcfg eth0 dhcp

ping, traceroute todo funciona como se esperaba.

Si en cambio dejo WIFI habilitado, pero luego hago un simple

ifconfig eth0 172.16.100.1 netmask 255.255.0.0 dev eth0

y conecte la red Ethernet por cable a una máquina configurada en 172.16.100.2 No puedo hacer ping.

# ifconfig wlan0                                                
wlan0: ip 10.1.10.238 mask 255.255.0.0 flags [up broadcast running multicast]
# ifconfig eth0 
eth0: ip 172.16.100.1 mask 255.255.0.0 flags [up broadcast running multicast]

# netcfg
<snip>
p2p0     UP                                     0.0.0.0/0   0x00001003 da:50:e6:2d:b2:14
eth0     UP                                172.16.100.1/16  0x00001043 50:1a:c5:fd:83:dc
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
wlan0    UP                                 10.1.10.238/16  0x00001043 d8:50:e6:2d:b2:14

# cat /proc/net/route                                               
Iface   Destination     Gateway         Flags   RefCnt  Use     Metric  Mask            MTU     Window  IRTT                                                       
wlan0   0000010A        00000000        0001    0       0       0       0000FFFF        0       0       0                                                                              
eth0    000010AC        00000000        0001    0       0       0       0000FFFF        0       0       0                                                                               

traceroute parece mostrar que los paquetes aún se están enrutando a través de 10.1.0.1 (wlan0)

# traceroute 172.16.100.2                                         
traceroute to 172.16.100.2 (172.16.100.2), 30 hops max, 38 byte packets
1  10.1.0.1 (10.1.0.1)  1.648 ms  1.220 ms  1.526 ms
^C

La replicación manual de la ruta -net 172.16.0.0 no hace ninguna diferencia.

¿Qué me he perdido para configurar el enrutamiento correctamente?

¿Está interactuando la interfaz p2p0 de alguna manera inesperada?

Respuestas (1)

En sistemas con dos interfaces (como este dispositivo Android con wlan0 y eth0), el enrutamiento no se configura automáticamente para usar dos puertas de enlace. Esta es la razón por la que 'traceroute' muestra que el tráfico que le gustaría salir en 'eth0' en realidad está saliendo en 'wlan0'.

Otra forma de confirmar esto es:

# ip route get 172.16.100.2
172.16.100.2 via 10.1.0.1 dev wlan0 <snip>

La solución es configurar múltiples rutas predeterminadas agregando una nueva tabla de enrutamiento para el tráfico en 'eth0' y luego agregando las reglas apropiadas al conjunto de reglas de enrutamiento. Consulte este artículo para ver un ejemplo. (Aunque el artículo describe un sistema Linux, los dos comandos que debe usar, a saber, 'ip route' y 'ip rule', están disponibles en Android).