¿Cómo usar la interfaz de red como usuario no root?

Quiero comunicarme entre mi dispositivo Android y mi caja Linux sobre IP a través del modo de interfaz de red USB. El dispositivo que estoy usando es un OnePlus One que ejecuta compilaciones nocturnas CM12.1. Está enraizado y SELinux está configurado en PERMISSIVE. La separación del espacio de nombres de montaje también está deshabilitada.

Conecté mi OPO a mi caja de Linux y lo puse en modo de interfaz de red a través de algún tipo de piratería de reflejo de Java y el permiso MANAGE_USB solo del sistema. (No estoy usando la configuración de conexión estándar porque quiero usar mi caja de Linux como puerta de enlace y no al revés). Solía ip addr add​​​​agregar una dirección IP en ambos extremos (Linux box y OPO) y luego agregué una ruta a ip routetravés de mi Linux box para acceder a Internet. También he habilitado el reenvío de IPv4 en el lado de la caja de Linux, además de habilitar todas las iptablesreglas necesarias.

Mi problema es este: solo rootpuedo comunicarme a través de la interfaz. Por ejemplo, con mi caja de Linux en 10.42.0.1y mi OPO 10.42.0.2en la interfaz de red USB, ejecutar ping 10.42.0.1o ping 8.8.8.8en el lado de Android sin ejecutar desde un sushell no funcionará . Ejecutar exactamente los mismos comandos que rootfunciones perfectamente. Los mismos comandos sobre la interfaz WiFi en el lado de Android funcionan bien sin root.

Supongo que esta es una nueva función de seguridad implementada en Android 5.0/5.1, ya que funcionó bien en KitKat. ¿Alguien sabe exactamente qué puede ser?

Respuestas (1)

Me encontré con esto también. Tiene que ver con las políticas de enrutamiento que hacen que la tabla de enrutamiento "principal" no se active para ningún usuario además del root.

Esto funcionó para mí, pero todavía estoy investigando las implicaciones de hacerlo de manera tan amplia. Sin embargo, no es peor que lo que hace mi caja de Linux, así que eso es todo.

 ip rule add from all lookup main pref 99