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


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


186


origem


Difícil de resolver sem qualquer dica de qual confiuguração de rede seu convidado realmente possui. Alguns não permitem acesso ao host. Tente o endereço do gateway padrão do convidado. - Turbo J
Acontece que eu posso alcançá-lo através do meu gateway padrão em 10.0.2.2. - Naftuli Kay
Relacionado: stackoverflow.com/q/19933550/1157054  stackoverflow.com/q/16244601/1157054 - Ajedi32


Respostas:


Esta resposta é praticamente uma configuração do 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 ser capaz de alcançar seu host através do gateway padrão.

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

ipconfig

Deve despejar algo assim:

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 alcançar a máquina host 10.0.2.2.


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

netstat -rn

Deve despejar algo assim:

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 alcançar a máquina host 192.168.1.1.


236



Alguma idéia de por que a conectividade seria terrivelmente lenta ao conectar usando o gateway padrão de acordo com sua resposta? - Ben Swinburne
Isso não parece funcionar para mim (Ubuntu 12.04, Vagrant 1.0). Gateway padrão dentro do convidado mostrado como 10.0.2.2e um nmap desse IP falhou. 192.168.33.1 parece ser o IP correto. (Eu tinha config.vm.network :hostonly, "192.168.33.52" na minha configuração.) - Ajedi32
Na verdade, não importa. Isso funcionou. O nmap simplesmente não estava funcionando por algum motivo; Não tenho certeza porque. Eu ainda podia me conectar a serviços em execução no host daquele IP, mesmo que o nmap não os estivesse mostrando. - Ajedi32
netstat -rn no CentOS 7.2, o Docker 1.11 exibia um 172.17 endereço como meu gateway, mas esse IP não correspondia ao meu host. Acontece que 10.0.2.2 fez. - Spencer Williams


Acessar o servidor web do computador host do convidado é fácil. Isso pode ser feito facilmente usando dois métodos. Primeiro faça o seguinte

  • Vamos para Devices e selecione Adaptadores de rede... 
  • Nas configurações do adaptador, verifique Anexado a.
  • Se o valor for NATfaça o seguinte

  • O gateway padrão quando você configura a caixa virtual é geralmente 10.0.2.2 como valor padrão. Se você não mudou nada, isso vai funcionar. Mas se você mudou e a máquina convidada você estão correndo é janelas execute o seguinte comando e encontre o padrão porta de entrada

    ipconfig /all

    Se você está em Linux, Unix ou Mac OS, execute o seguinte comando para pegue

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

  • Vá para o navegador da Web e digite esse gateway padrão e pressione Enter. O servidor da web pode ser acessado.

  • Se o valor for Adaptador em pontefaça o seguinte
    • encontre o endereço IP do host e do convidado
      • se você está no windows, corra ipconfig e 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ê quiser acessar o host, execute o navegador no convidado e digite o endereço IP do host
    • Se você quiser acessar o convidado, execute o navegador no host e digite o endereço IP do convidado

29





Outra maneira de fazer isso é usar um tipo de rede virtual "Host". Isso lhe dá uma interface no sistema operacional convidado com um endereço em uma sub-rede local diferente da (s) sub-rede (s) "mundo externo" em que sua máquina host está ligada. 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 escutando em todos os adaptadores locais, ou pelo menos aqueles que você deseja poder contatar;
  • Seu host receberá 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 "arquivo enterrado em C: / WINDOWS / system32 / drivers / etc). Dê-lhe um nome que você deseja usar para o nome do host do host.

Depois de fazer isso, você poderá "ver" o host da VM por meio do nome codificado no arquivo host.

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

192.168.56.1 mymachine

para os arquivos host do sistema operacional convidado, e eles podem (por exemplo) ver o servidor da Web da máquina host em

http://mymachine/whatever

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


8





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

Aqui está um decente passo a passo 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/


0



Então eu posso acessar meu host em / vboxsvr / ShareName? - Naftuli Kay
Sim, você configuraria uma pasta como C: \ STUFF para ser compartilhada com o VirtualBox. No VirtualBox Guest OS, você pode ir para esse vboxserver e acessar as pastas compartilhadas. - kobaltz
Eu realmente não quero a pasta compartilhada. Eu quero um endereço IP para minha máquina host. Quando eu entendi, eu gostaria de usá-lo para usar serviços na minha máquina host, ou seja: echo "GET /\r\n\r\n" | nc 192.168.100.100 80 (envia uma solicitação HTTP GET para minha máquina host do convidado.) - Naftuli Kay
Nesse caso, você pode precisar configurar seu adaptador de rede do SO Guest para um Bridge. Isso irá puxar um endereço IP do seu DHCP ou roteador. Você poderá então acessar nativamente sua máquina host através do endereço IP, em vez da pasta compartilhada VBox. - kobaltz


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


0



Bem-vindo ao superusuário! Seria bom para incluir aqui as partes essenciais da resposta e fornecer o link apenas para referência futura. - slhck