1 votos

Android no puede reenviar paquetes

Objetivo:

Realiza el reenvío de IP para dispositivos dentro de la misma red local. (El objetivo real es el proxy transparente, pero el reenvío de IP es un requisito previo).

Configuración de la red:

Todos los dispositivos están en la misma red local 192.168.0.0/16 .

  • router principal 192.168.1.1
  • Teléfono Android 192.168.2.1 (interfaz de red wlan0 )
  • ordenador 192.168.2.10 puerta de enlace establecida como 192.168.2.1
  • otros como Raspberry Pi en 192.168.1.11

Configuración de Android:

  • Datos desactivados, sólo se conecta el WiFi.
  • Android 10 rooteado (Pixel 2 XL)
  • habilitado el reenvío de ip por sysctl -w net.ipv4.ip_forward=1
  • netfilter: en todas las tablas de nat, mangle, filter y raw, ejecutar iptables -F -t <table_name> y iptables -X -t <table_name>
  • rp_filter: Desactivado por sysctl -w net.ipv4.conf.all.rp_filter=0 y sysctl -w net.ipv4.conf.wlan0.rp_filter=0

Resultado:

  • el ordenador no puede acceder a Internet, ping , dig , navegador, no funciona nada.
  • el ordenador se conecta a los dispositivos locales sin ningún problema (como el ping al router 192.168.1.1 SSH a la Raspberry Pi, o usar FireFox a través del proxy SOCK5 alojado en la Pi).
  • El teléfono Android se conecta a Internet perfectamente.

Depurar:

  • utilizando iptables -t <table_name> -L -v para mostrar el recuento de paquetes, todas las cadenas tienen algunos paquetes, *excepto la FORWARD cadena de ambos raw , mangle tablas muestra Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) . Después de googlear un poco, rp_filter es el sospechoso pero seguro que está desactivado.

0 votos

NetFilter ( iptables ) opera en la capa OSI superior. ¿Qué pasa con el enrutamiento IP ( ip rule y ip route )? ¿Están configurados correctamente? Android no utiliza main por defecto, a diferencia de las distros Linux normales. Relacionado: ¿Cómo enviar todo el tráfico de Internet a un servidor proxy SOCKS5 en la red local? y ¿Cómo transferir Internet a través de Android Hotspot al PC?

0voto

Idna Corbett Puntos 1

Gracias a @Irfan Latif He encontrado la solución por mí mismo. Es correcto que los paquetes se envíen al último unreachable regla de ip rule porque no coinciden con ninguna regla anterior:

# result of `ip rule`
... (no rules match)
22000:  from all fwmark 0x0/0xffff iif lo lookup wlan0 
32000:  from all unreachable

Así que añadí una regla para enrutar el tráfico entrante de la red local a la tabla de rutas wlan0 por:
ip rule add from 192.168.0.0/16 iif wlan0 table wlan0

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X