Ich versuche, meinen Android-Emulator (von SDK) über eine Netzwerkbrücke und eine Tap-Schnittstelle und mit der Option -qemu mit dem LAN zu verbinden. Ich brauche es, um Multicast-Adressen im nativen Bibliothekscode für die Kommunikation mit IoT-Geräten zu verwenden, die mit dem LAN verbunden sind.
Aber je nach Image-Version und Architektur (x86 oder ARM) habe ich unterschiedliche Verhaltensweisen.
Für das ARM-Image (Android 7.1.1 armeabi-v7a) funktioniert die Bridge perfekt. Der DHCP-Client funktioniert nach dem Booten automatisch. Ich kann das Lan-Gateway anpingen, googlen ... und das Multicasting funktioniert. Aber das NIC-Add zum Emulator ist nicht über IP-Link oder ifconfig vorhanden, es ist versteckt und die Standardroute ist nicht vorhanden !! komische Sache. Der Emulator ist von außen nicht pingbar.
Für X86-Images (Android 7.1.1 google_apis/x86) funktioniert die Bridge einwandfrei. DHCP-Client funktioniert und die Gast-NIC ist konfiguriert. ich kann das lan-gateway anpingen, googlen..., das multicasting funktioniert, und die nic ist sichtbar (eth1). Aber um das Gateway oder einen anderen Host zu pingen, muss ich ping -I verwenden, um die nic-Schnittstelle anzugeben, der Emulator verwendet das slirp-Netzwerk und es ist nicht von außen pingbar.
Ist es möglich, den Emulator von außen pingbar zu machen?
Es ist möglich, Ping im x86-Emulator zu verwenden, ohne die Option -I für Ping zu verwenden?
Ist es möglich, den Netzwerk-NIC-Anhang im ARM-Emulator zu sehen?
Danke für deine Hilfe.
Ich denke, wenn Sie die IP des Servers in Ihrem LAN-Netzwerk hinzufügen, können Sie vom Emulator darauf zugreifen. In Ihrem Fall ist also ein Kampf mit iptables erforderlich
Nützliche Links https://developer.android.com/studio/run/emulator-networking.html
und es gibt eine Menge Dokumentation darüber, wie man den Netzwerkverkehr mit iptables auf eine neue IP-Adresse umleitet
Viel Glück, ich hoffe, meine Antwort war hilfreich!
Benutzer254255