Auf meinem Rechner läuft ein ADB-Daemon auf localhost:5037. Auf meinem Rechner läuft eine virtuelle Maschine. Nennen wir meinen Rechner Host und die virtuelle Maschine Gast.
Die Gast-VM verwendet die Schnittstelle des Hosts:
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
um eine Verbindung zum Internet herzustellen. Ich muss vom Gast aus auf den ADB-Server auf meinem Host zugreifen. Wenn ich nur 192.168.122.1
vom Gast aus anrufe, funktioniert es nicht, da ADB auf dem Host an localhost:5037 und nicht an 192.168.122.1:5037 gebunden ist. Daher brauche ich eine Möglichkeit zum Zuordnen
192.168.122.1:5037 <-> localhost:5037
auf dem Hostcomputer in bidirektionaler Weise.
Wenn ich einfach eine Brücke zwischen allem hinzufüge, bringt das die Funktionsweise meiner VM durcheinander, da sie für die Verbindung mit dem Internet von dieser Schnittstelle abhängig ist.
Wie kann ich eine TCP-Brücke zwischen diesen beiden IPs erstellen? Ich habe gefundenhttp://tcpreplay.synfin.net/wiki/tcpbridgeaber es ist unklar, wie es funktioniert. Vielleicht kann iptables das Problem lösen?
AKTUALISIEREN:
wie in der Antwort empfohlen, habe ich Socat verwendet und jetzt funktioniert es:
#on host machine:
socat tcp-listen:5037,bind=192.168.122.1,reuseaddr,fork tcp:localhost:5037
#on virtual machine:
socat tcp-listen:5037,bind=localhost,reuseaddr,fork tcp:192.168.122.1:5037
Antwort1
Wenn der ADB-DämonWirklichnur an die Loopback-Schnittstelle gebunden ist, dann wird es, egal welche Tricks Sie verwenden, nur auf Pakete reagieren, die von hostlokalen Anwendungen kommen, weil nur diese über Loopback geroutet werden.
Sehen Sie sich also zunächst die Konfiguration des ADB-Dämons an und prüfen Sie, ob Sie ihn dazu bringen können, die Bindung aufzuheben (dann reagiert er auf 192.168.122.1).
Als zweites sollten Sie überprüfen, wie Ihre VM konfiguriert ist. Viele VMs (Sie haben uns nicht gesagt, welche Art von VM Sie verwenden) ermöglichen dem Client die Verwendung der Host-Schnittstelleohne Zugriff auf den Host. Wenn dies der Fall ist, konfigurieren Sie Ihre VM neu und testen Sie, ob ping 192.168.122.1
usw. im Client funktioniert.
Wenn nichts davon funktioniert, würde ich als Nächstes versuchen, es socat
auf dem Host zum Weiterleiten von Paketen zu verwenden, da es dann für den ADB-Dämon wie eine lokale Anwendung aussieht.