1 votes

Pont TCP entre 2 interfaces pour un port spécifique (accès au localhost de l'hôte depuis l'intérieur d'une VM)

J'ai un démon ADB qui fonctionne sur localhost:5037 sur ma machine. J'ai une machine virtuelle qui fonctionne sur ma machine. Appelons ma machine hôte et la machine virtuelle invitée.

La VM invitée utilise l'interface de l'hôte :

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

pour se connecter à l'Internet. Je dois accéder au serveur ADB de mon hôte depuis l'invité. Si j'appelle simplement 192.168.122.1 depuis l'intérieur de l'invité, cela ne fonctionne pas car adb sur l'hôte est lié à localhost:5037, et non 192.168.122.1:5037, donc j'ai besoin d'un moyen de mapper

192.168.122.1:5037 <-> localhost:5037

sur la machine hôte de manière bidirectionnelle.

Si je me contente d'ajouter un pont entre tous les éléments, le fonctionnement de ma VM sera perturbé car elle dépend de cette interface pour se connecter à Internet.

Comment puis-je créer un pont TCP entre ces 2 IPs ? J'ai trouvé http://tcpreplay.synfin.net/wiki/tcpbridge mais son fonctionnement n'est pas clair. Peut-être qu'iptables peut résoudre ce problème ?

UPDATE :

comme recommandé dans la réponse, j'ai utilisé socat et maintenant ça marche :

#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

2voto

dirkt Points 15364

Si le démon ADB est realmente n'est lié qu'à l'interface loopback, alors peu importe les astuces que vous utilisez, il ne réagira qu'aux paquets provenant d'applications locales à l'hôte, car seules ces applications sont acheminées via loopback.

La première chose à faire est donc de regarder la configuration du démon ADB, et de voir si vous ne pouvez pas lui faire abandonner la liaison (il réagira alors à 192.168.122.1).

La deuxième chose à vérifier est la façon dont votre VM est configurée. De nombreuses VM (vous ne nous avez pas dit quel type de VM vous utilisez) permettent au client d'utiliser l'interface hôte sans pouvoir accéder à l'hôte . Si c'est le cas, reconfigurez votre VM, et testez que ping 192.168.122.1 etc. fonctionne dans le client.

Si rien de tout cela ne fonctionne, la prochaine chose que j'essaierais est d'utiliser socat sur l'hôte pour transférer les paquets, car alors il ressemblera à une application locale pour le démon ADB.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X