Como eu alcanço o loopback do host 127.0.0.1 de um VMplayer?

3

Estou usando o VM Player 4.0.2 executando o sistema operacional Ubuntu 11.10 no host WinXP, com configuração de conexão de rede NAT.

Eu tenho um aplicativo em execução no Win XP que se comunica com um serviço de gerenciador de dispositivos usando soquetes TCP no endereço do servidor 127.0.0.1:4401. Gostaria que o serviço do dispositivo fosse executado em um sistema operacional convidado da VM (Ubuntu) e ainda será capaz de se comunicar com o aplicativo no sistema operacional host.

Consigo alcançar o host local do sistema operacional host usando o endereço IP (192.168.1.100) da NIC do host. Mas se eu uso 127.0.0.1 ele não funciona. Parece que os pacotes são consumidos pelo loopback lo do sistema operacional convidado.

Configuração do anfitrião do Win:

    Windows IP Configuration

    Ethernet adapter VMware Network Adapter VMnet8:

            Connection-specific DNS Suffix  . :
            IP Address. . . . . . . . . . . . : 192.168.59.1
            Subnet Mask . . . . . . . . . . . : 255.255.255.0
            Default Gateway . . . . . . . . . :

    Ethernet adapter VMware Network Adapter VMnet1:

            Connection-specific DNS Suffix  . :
            IP Address. . . . . . . . . . . . : 192.168.48.1
            Subnet Mask . . . . . . . . . . . : 255.255.255.0
            Default Gateway . . . . . . . . . :

    Ethernet adapter LoopBack:

            Connection-specific DNS Suffix  . :
            IP Address. . . . . . . . . . . . : 192.168.1.121
            Subnet Mask . . . . . . . . . . . : 255.255.255.0
            Default Gateway . . . . . . . . . : 192.168.1.2

    Ethernet adapter EtherLAN:

            Connection-specific DNS Suffix  . :
            IP Address. . . . . . . . . . . . : 192.168.1.100
            Subnet Mask . . . . . . . . . . . : 255.255.255.0
            Default Gateway . . . . . . . . . : 192.168.1.1

Configuração do sistema operacional convidado do Ubuntu:

    eth0      Link encap:Ethernet  HWaddr 00:0c:29:5f:4f:c1  
              inet addr:192.168.59.129  Bcast:192.168.59.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe5f:4fc1/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:6108 errors:0 dropped:0 overruns:0 frame:0
              TX packets:4745 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:6638533 (6.6 MB)  TX bytes:371359 (371.3 KB)
              Interrupt:19 Base address:0x2024 

    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:42 errors:0 dropped:0 overruns:0 frame:0
              TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:2916 (2.9 KB)  TX bytes:2916 (2.9 KB)

Alguém pode me dizer se isso é possível e qual é a maneira recomendada configurá-lo?

Eu tenho o openssh-server instalado na VM e escutando

    rootuser@ubuntu:~$ sudo netstat -tap | grep sshd
    tcp        0      0 *:ssh                   *:*                     LISTEN      3469/sshd       
    
por Mano 16.03.2012 / 08:17

2 respostas

2

Você pode considerar uma máquina virtual como a mesma que uma máquina física. O intervalo de loopback 127.x.x.x não é roteado de qualquer forma e, portanto, só pode ser acessado a partir da máquina na qual eles estão configurados. Esta é uma parte e uma garantia da especificação IP, e o acesso a um endereço 127.xxx de um dispositivo diferente daquele em que ele está configurado exigiria uma implementação de IP que estava muito quebrada e, portanto, não é algo que você encontrará facilmente.

Como podemos considerar que uma máquina virtual é a mesma que uma máquina física, segue-se que ela é separada do host e, portanto, não pode acessar um endereço 127.0.0.1 em seu host.

Suas opções são alterar a configuração do serviço para que ele ouça em um endereço IP roteável, como seu endereço de interface de interface.

Outra opção seria usar o encaminhamento de porta sobre o ssh. Portanto, se o serviço estava escutando em 127.0.0.1:4401 em um dispositivo com endereço IP 192.168.1.100, você poderia criar uma porta encaminhada para ele de outro dispositivo usando o comando:

ssh -L4401:127.0.0.1:4401 192.168.1.100

Portanto, isso abriria uma sessão ssh para 192.168.1.100 e, no processo, criaria uma porta local 127.0.0.1:4401 na máquina que iniciava a conexão. Qualquer tráfego de e para 127.0.0.1:4401 na máquina local passaria pelo túnel ssh para 127.0.0.1:4401 na máquina remota.

    
por 16.03.2012 / 09:13
0

Isso não é possível. 127.0.0.1 é local para o host.

Isso significa que seu host XP tem um 127.0.0.1 que é local apenas para esse host do XP,
e o seu convidado vm tem o seu próprio 127.0.0.1 whioch é local apenas para esse convidado.

Nem é suposto que ele deixe seu host, e em muitos casos isso é codificado nos drivers (não tenho certeza sobre o XP, mas tanto o hardware do Linux quanto o Win7, isso em dlls e kernel).

Se você quiser comunicação entre ambos, vincule o programa a IPs diferentes.

    
por 11.02.2016 / 23:27