Intento conectar mi emulador de Android (desde el SDK) a la red local a través de un puente de red y una interfaz de tap, con la opción -qemu. Necesito que use direcciones multicast en el código de la biblioteca nativa para comunicarme con dispositivos IoT conectados a la red local.
Pero dependiendo de la versión de la imagen y la arquitectura (x86 o ARM) tengo diferentes comportamientos.
Para la imagen ARM (Android 7.1.1 armeabi-v7a) el puente funciona perfectamente. El cliente DHCP funciona automáticamente después del inicio. Puedo hacer ping al gateway de la LAN, a Google... y el multicast funciona. Pero la tarjeta de red añadida al emulador no está presente a través de ip link o ifconfig, está oculta, ¡y la ruta predeterminada no está presente! ¡Cosa extraña! El emulador no es pingable desde el exterior.
Para la imagen X86 (Android 7.1.1 google_apis/x86), el puente funciona perfectamente. El cliente DHCP funciona y la tarjeta de red del invitado está configurada. Puedo hacer ping al gateway de la LAN, a Google..., el multicast funciona y la tarjeta de red es visible (eth1). Pero para hacer ping al gateway u otro host, debo usar ping -I para especificar la interfaz de la tarjeta de red, el emulador utiliza la red de slirp y no es pingable desde el exterior.
¿Es posible hacer que el emulador sea pingable desde el exterior?
¿Es posible utilizar el ping en el emulador x86 sin utilizar la opción -I para ping?
¿Es posible ver la interfaz de red conectada en el emulador ARM?
Gracias por tu ayuda.