Como acessar o servidor rodando no VirtualBox a partir do host?

Como acessar o servidor rodando no VirtualBox a partir do host?

Estou executando um aplicativo web na VM.

Posso ver o aplicativo por localhost:8888meio de um navegador na VM.

Não consigo ver o aplicativo do host no mesmo URL. Esse é o objetivo.

Eu tentei VBoxManage modifyvm "VM name" --natdnshostresolver1 on, mas não teve impacto.

Minha configuração é:

  • Hospedar:Janelas 7
  • Convidado:Ubuntu 16.04.1LTS
  • Caixa Virtual:5.1.4r110228

Configuração de convidado

(Convidado) ifconfigquando em NAT

kirkland@GC:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:d0:fc:0e  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::4c67:70b5:c37b:8fa8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7431 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3587 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7444830 (7.4 MB)  TX bytes:731870 (731.8 KB)

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:65536  Metric:1
          RX packets:1566 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1566 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:655936 (655.9 KB)  TX bytes:655936 (655.9 KB)

(Convidado) /etc/hosts

127.0.0.1   localhost
127.0.1.1   GC

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Responder1

O localhost:8888URL é apenas um URL válido dentro da sua VM. Fora dessa VM você terá que usar ip.ad.dr.ess:8888ou hostname:8888. Neste último caso, ip.ad.dr.essé introduzida uma dependência da resolução do nome do host na sua rede.

Por padrão, quando você cria uma VM no VirtualBox, o adaptador de rede 1 é definido como NAT. Isso dará à VM um endereço IP 10.0.2.15/24e uma rota padrão 10.0.2.2(que deve ser o seu host). Resumindo, o Windows não irá encaminhar para um endereço para o qual está fornecendo NAT, sem passar por mais obstáculos primeiro.

Desligar a VM e alterar a configuração do adaptador de rede da VM 1 para "em ponte" permitirá que seu host (e qualquer host em sua rede local) se comunique com essa VM sem nenhuma rota especial adicionada ou obstáculos para saltar.

Reinicie a VM. Verifique sua conectividade com o localhost:8888. Verifique também sua conectividade com hostname:8888(assumindo que o nome do host foi notadicionado ao endereço loopback/localhost no arquivo /etc/hosts) e ip-address:8888. EDIT: Com base nos detalhes de /etc/hosts postados, você arevincula sua VM e, portanto, o webapp à rede de loopback. Esta configuração não pode ser usada fora da VM.

Se o seu servidor web e aplicativo não dependem do IP em que foi configurado/instalado pela primeira vez, e você tem um servidor DHCP em sua LAN, a única outra informação que você precisa para se conectar à VM é o endereço IP que foi atribuído a ele via DHCP.

Para encontrar o endereço IP da VM: Abra uma janela de terminal/console na área de trabalho do Ubuntu (ctrl-alt-T), usamos os /etc/hostscomandos hostname, ifconfig e grep para juntar as peças e encontrar seu endereço. No terminal aberto, digite hostnamee pressione Enter. Provavelmente é gc. Nesse mesmo terminal, digitar ifconfig eth0 | awk '/Bcast/{print $2}'mostrará o endereço. Você deve ter uma linha em /etc/hosts com o endereço seguido do nome do host. grep [hostname] /etc/hostsou grep [address] /etc/hostsdeve encontrar a linha que você precisa. Se você encontrar algo diferente do seu endereço atual seguido do nome do host, será necessário modificar o arquivo /etc/hosts para adicionar as informações corretas.

Os hosts em sua LAN agora devem ser capazes de se conectar ao IP de sua VM na porta 8888. O acesso desses hosts/clientes ao webapp hostname:8888dependerá dos arquivos de hosts do cliente, DNS local ou até mesmo dos serviços mDNS possivelmente fornecidos em seu servidor DHCP .

Responder2

Aqui está uma solução rápida usando encaminhamento de porta se você não quiser que a VM seja exposta à rede externa. Basta criar esses perfis de encaminhamento de porta para web e ssh conforme mostrado abaixo nas configurações NAT da VM

insira a descrição da imagem aqui

Responder3

Para conseguir isso, acho que seria muito melhor usar o modo de ponte. Se isso não for possível ou desejável, você precisará de uma rota estática no seu host.

Para adicionar uma rota estática, faça o seguinte: Procure nas propriedades de rede do seu host. Você deve encontrar um adaptador chamado VirtualBox Host-Only Network. Encontre seu endereço IP. Provavelmente é 192.168.56.1, que considero o padrão, mas poderia ser outra coisa. Chame isso de abcd. Em seguida, obtenha o endereço IP do seu convidado. Chame isso de wxyz (os primeiros 3 octetos devem ser iguais em ambos os endereços). Quando tiver isso, abra um prompt do DOS em seu host e digite este comando:

route add w.x.y.z mask 255.255.255.0 a.b.c.d

Se funcionar, você pode executar o mesmo comando com a opção -p para torná-lo permanente (caso contrário, ele desaparecerá na próxima vez que você reinicializar o host).

informação relacionada