Ponte TCP entre 2 interfaces para porta específica (acessando o host local do host de dentro de uma VM)

Ponte TCP entre 2 interfaces para porta específica (acessando o host local do host de dentro de uma VM)

Eu tenho um daemon ADB em execução localhost:5037 na minha máquina. Eu tenho uma máquina virtual em execução na minha máquina. Vamos chamar o host da minha máquina e o convidado virtual.

A VM convidada usa a interface do host:

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

para se conectar à internet. Preciso acessar o servidor ADB no meu host de dentro do convidado. Se eu apenas ligar 192.168.122.1de dentro do guest, não funcionará porque o adb no host está vinculado a localhost: 5037, não a 192.168.122.1:5037, portanto, preciso de uma maneira de mapear

192.168.122.1:5037 <-> localhost:5037

na máquina host de maneira bidirecional.

Se eu apenas adicionar uma ponte entre tudo, isso vai atrapalhar o funcionamento da minha VM, porque depende dessa interface para se conectar à Internet.

Como posso criar uma ponte TCP entre esses 2 IPs? eu encontreihttp://tcpreplay.synfin.net/wiki/tcpbridgemas não está claro como isso funciona. Talvez o iptables possa resolver isso?

ATUALIZAR:

conforme recomendado na resposta, usei socat e agora funciona:

#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

Responder1

Se o demônio ADB forrealmentevinculado apenas à interface de loopback, não importa quais truques você use, ele reagirá apenas aos pacotes provenientes de aplicativos locais do host, porque somente esses são roteados via loopback.

Portanto, a primeira coisa a fazer é examinar a configuração do demônio ADB e ver se você não consegue eliminar a ligação (então ele reagirá a 192.168.122.1).

A segunda coisa a verificar é como sua VM está configurada. Muitas VMs (você não nos informou que tipo de VM usa) permitem que o cliente use a interface do hostsem poder acessar o host. Se for esse o caso, reconfigure sua VM e teste se ping 192.168.122.1etc. funciona no cliente.

Se nada disso funcionar, a próxima coisa que tentarei é usar socatno host para encaminhar pacotes, porque então parecerá um aplicativo local para o demônio ADB.

informação relacionada