Tengo la siguiente configuración:
Android Galaxy S5 Mini. Versión de Android 5.1.1.
Tengo 2 interfaces de red:
- Interfaz1 con ip: 192.168.5.1
- Interfaz2 con ip: 192.168.5.10
Creo un DatagramSocket usando el SDK de Android y lo enlazo a la dirección: 192.168.5.10(Interfaz 2), puerto 2525. Pongo este socket en recepción y espero los paquetes. Utilizo otro dispositivo para enviar los paquetes.
Paquetes de la dirección ip: 192.168.5.4 se recibe.
Paquetes desde la dirección ip (dispositivo diferente): 192.168.5.1 (igual que la ip de la interfaz 1 del dispositivo) nunca se recibe.
Parece que la pila de red rechaza los paquetes que tienen una dirección ip de origen que existe en el dispositivo, independientemente de la interfaz en la que se recibió.
Si modifico la dirección ip de la interfaz 1 a algo distinto de 192.168.5.1, funciona bien.
Dispositivos en los que no lo hizo pasar:
- Samsung tablet T113 Android 4.4.4 (rom de stock)
- LG G4 Android 6.0 (rom de stock)
- LG Nexus 5X Android 7.1.2 (rom de stock)
Dispositivos en los que hizo pasar:
- Galaxy S5 Mini Android 5.1.1 (rom de stock)
- Galaxy Note 3 Android 6.0.1 (CyanogenMod)
- One+1 Android 6.0.1 (CyanogenMod)
Cuál es el mecanismo que rechaza el paquete con IP de origen 192.168.5.1 (igual que la ip de la interfaz 1 del dispositivo)?
0 votos
Sospecho que hay un conflicto de direcciones IP, además no se puede hacer coincidir la dirección ip del gateway con la del cliente.
0 votos
@xavier_fakerat He conseguido utilizar el VPNService de Android e inyectar un paquete al sistema. Si tiene la ip de origen de cualquier interfaz - se produce el problema. No parece estar relacionado con el problema de GW/Client.
1 votos
+1 Sí, tienes razón, de hecho me topé con esto aquí: unix.stackexchange.com/questions/106291/ . Creo que esto necesita Root