Conectar-se à máquina host de um sistema operacional convidado do VirtualBox?


214

Eu gostaria essencialmente de acessar meu computador host a partir do convidado no VirtualBox. Existe um endereço IP fornecido para o meu host que eu possa usar do convidado? Existem etapas extras necessárias para configurar isso? Gostaria de acessar os serviços Apache, FTP e SSH do meu host.


1
Difícil de resolver sem nenhuma dica de qual confiuguração da rede seu convidado realmente possui. Alguns não permitem acesso ao host. Experimente o endereço de gateway padrão do convidado.
Turbo J

7
Acontece que posso acessá-lo através do meu gateway padrão na 10.0.2.2.
Naftuli Kay

Respostas:


258

Esta resposta é basicamente sobre uma configuração de sistema operacional convidado no VirtualBox; você só precisa usar o endereço do gateway de rede no sistema operacional convidado para se conectar ao sistema operacional host a partir de um sistema operacional convidado.

Na configuração padrão do Vagrant, você deve conseguir acessar seu host através do gateway padrão.

Em convidados baseados no Windows, você pode determinar facilmente esse endereço IP executando o comando:

ipconfig

Deve despejar algo como isto:

Windows IP Configuration

Ethernet adapter Local Area Connection:

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

Neste exemplo, o convidado pode acessar a máquina host 10.0.2.2.


Em convidados baseados em Unix / Linux, use o comando:

netstat -rn

Deve despejar algo como isto:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

Neste exemplo, o convidado pode acessar a máquina host 192.168.1.1.


Alguma idéia de por que a conectividade seria terrivelmente lenta ao se conectar usando o gateway padrão conforme sua resposta?
Ben Swinburne

Isso não pareceu funcionar para mim (Ubuntu 12.04, Vagrant 1.0). O gateway padrão dentro do convidado mostrou como 10.0.2.2e um nmap desse IP falhou. 192.168.33.1 parece ser o IP certo. (Eu tinha config.vm.network :hostonly, "192.168.33.52"na minha configuração).
Ajedi32

Na verdade, não importa. Funcionou. o nmap simplesmente não estava funcionando por algum motivo; não sei por que. Eu ainda podia me conectar aos serviços em execução no host a partir desse IP, mesmo que o nmap não os estivesse mostrando.
precisa saber é o seguinte

1
netstat -rnno CentOS 7.2, o Docker 1.11 exibia um 172.17endereço como meu gateway, mas esse IP não correspondia ao meu host. Acontece que 10.0.2.2sim.
Spencer Williams

1
Como sabemos qual dessas entradas é o gateway?
Kramer

36

É fácil acessar o servidor web do computador host a partir do hóspede. Isso pode ser feito facilmente usando dois métodos. Primeiro faça o seguinte

  • Vá para Dispositivos e selecione Adaptadores de rede ...
  • Nas configurações do adaptador, verifique Anexado a .
  • Se o valor for NAT , faça o seguinte

  • O gateway padrão quando você configura a caixa Virtual geralmente é 10.0.2.2o valor padrão. Se você não mudou nada, isso funcionará. Mas se você a alterou e a máquina convidada que você está executando é executada pelo Windows seguindo o comando e encontre o gateway padrão

    ipconfig /all

    Se você estiver no Linux, Unix ou Mac OS, execute o seguinte comando para obtê-lo

    netstat -rn | grep 'default' | awk '{print $2}'

  • Vá para o navegador da web, digite este gateway padrão e pressione enter. O servidor da web pode ser acessado.

  • Se o valor for Bridged Adapter , faça o seguinte
    • encontre o endereço IP do host e convidado
      • Se você estiver no Windows, execute ipconfige obtenha o endereço IP
      • se você estiver no Linux, Unix ou Mac OS, execute ifconfig | grep 'inet' e obtenha o endereço IP
      • o endereço IP é como 192.168.1.1
    • se você deseja acessar o host, execute o navegador no convidado e insira o endereço IP do host
    • se você quiser acessar o convidado, execute o navegador no host e insira o endereço IP do convidado

9

Outra maneira de fazer isso é usar um tipo de rede virtual "Host". Isso fornece uma interface no sistema operacional convidado com um endereço em uma sub-rede local diferente das sub-rede "mundo externo" em que sua máquina host está. Para fazer isso funcionar, você precisa se certificar de algumas coisas:

  • Sua VM possui um adaptador "somente host" configurado;
  • Seus serviços de host precisam estar atendendo a todos os adaptadores locais, ou pelo menos os que você deseja entrar em contato;
  • Seu host terá seu próprio adaptador virtual e você desejará descobrir seu endereço IP e adicioná-lo ao arquivo "hosts" no sistema operacional convidado (no entanto, isso funciona para o sistema operacional convidado; no Windows XP, é apenas o " hosts "enterrado em C: / WINDOWS / system32 / drivers / etc). Dê um nome que você deseja usar para o nome do host do host.

Depois de fazer isso, você poderá "ver" o host da VM através do nome que você codificou no arquivo do host.

Por exemplo, no meu host Ubuntu 11.04, recebo uma interface virtual "vboxnet0" em 192.168.56.1. Os adaptadores nas máquinas vêm com algo como 192.168.56.101. Eu não preciso de ir no meu VMs, mas presumo que seria possível através de uma mudança simétrica para arquivo host do hospedeiro. Eu adiciono

192.168.56.1 mymachine

aos arquivos host do sistema operacional convidado e eles podem (por exemplo) ver o servidor da web da minha máquina host em

http://mymachine/whatever

É claro que você pode ter adaptadores em ponte e somente host.


0

Você pode criar pastas compartilhadas no VirtualBox. Isso criará automaticamente um 'compartilhamento de rede' dentro do Virtual Box para acessar pastas no seu sistema operacional host.

Aqui está um passo a passo decente em um sistema operacional convidado do Windows XP:

http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/


Para que eu possa acessar meu host em / vboxsvr / ShareName?
Naftuli Kay

Sim, você definiria uma pasta como C: \ STUFF para ser compartilhada com o VirtualBox. No SO VirtualBox Guest, você pode acessar esse servidor vbox e acessar as pastas compartilhadas.
Klobaltz

Na verdade, eu não quero a pasta compartilhada. Quero um endereço IP para minha máquina host. Quando eu entendi, eu gostaria de usá-lo para usar os serviços na minha máquina host, ou seja: echo "GET /\r\n\r\n" | nc 192.168.100.100 80(enviar uma solicitação HTTP GET para a minha máquina host do convidado.)
Naftuli Kay

1
Nesse caso, pode ser necessário definir o adaptador de rede do SO convidado como um Bridge. Isso puxará um endereço IP do seu DHCP ou roteador. Você seria capaz de acessar nativamente sua máquina host através do endereço IP em vez da pasta compartilhada VBox.
kobaltz

0

Aqui está outra solução para esse problema, usando uma interface de rede adicional e configurando o tráfego destinado ao host para rotear por uma interface adicional.


4
Bem-vindo ao Super Usuário! Seria bom incluir aqui as partes essenciais da resposta e fornecer o link apenas para referência futura.
28812 slhck
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.