0 votos

no recibirá

Tengo la siguiente configuración:

Android Galaxy S5 Mini. Android versión 5.1.1.

Tengo 2 interfaces de red:

  1. Interfaz1 con ip: 192.168.5.1
  2. Interfaz2 con ip: 192.168.5.10

Puedo crear un DatagramSocket utilizando el SDK de Android y se unen a la dirección: 192.168.5.10(Interfaz 2), puerto 2525. Pongo este socket en recibir y esperar los paquetes. Yo uso otro dispositivo para enviar los paquetes.

Los paquetes de la dirección ip: 192.168.5.4 es recibido.

Los paquetes de una dirección ip(dispositivo diferente): 192.168.5.1 (igual a la del dispositivo Interfaz1 ip) es que nunca recibió.

Que las costuras que la pila de red rechaza los paquetes que tienen dirección ip de origen que existe en el dispositivo, independientemente de la interfaz en la que fue recibido.

Si puedo modificar la dirección ip para Interfaz1 a algo distinto de 192.168.5.1 funciona bien.

Los dispositivos en los que esto no suceda:

  1. Tableta de Samsung T113 Android 4.4.4 (rom Stock)
  2. LG G4 Android 6.0 (rom Stock)
  3. LG Nexus 5 Android 7.1.2 (rom Stock)

Los dispositivos en los que se hizo pasar:

  1. Galaxy S5 Mini Android 5.1.1 (rom Stock)
  2. Galaxy Note 3 Android 6.0.1 (CyanogenMod)
  3. Un+1 Para Android 6.0.1 (CyanogenMod)

¿Cuál es el mecanismo que rechaza el paquete con la dirección IP de origen 192.168.5.1(igual a la del dispositivo Interfaz1 ip)?

enter image description here

1voto

noti Puntos8

He encontrado por qué sucede esto, pero no estoy seguro si puedo hacer nada al respecto sin root. Hay un sistema de configuración de cada interfaz de red llamado accept_local. Por ejemplo: net.ipv4.conf.wlan0.accept_local. Cuando está ajustado a 0, no puede recibir paquetes de otro local de la interfaz. Probablemente cuando funciona en otros dispositivos, esta configuración se establece en 1. En Galaxy Note 3 fue fijado a 0. Una vez que hice esto, todo empezó a funcionar, pero a root de que se necesitaba.

Actualización

Encontré un sitio que lista las variables del sistema de valores: https://census.tsyrklevich.net/

Específicamente:

  1. https://census.tsyrklevich.net/sysctls/net.ipv4.conf.wlan0.accept_local
  2. https://census.tsyrklevich.net/sysctls/net.ipv4.conf.wlan0.rp_filter

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: