Como fazer com que as VMs do VirtualBox usem o DNS do host?


69

Eu uso o VirtualBox para minhas VMs. A configuração da rede do meu escritório é sem fio, ou seja, eu me conecto à rede WiFi da minha empresa, que possui um DNS local para resolver nomes locais (como algo.meuempresa.com, indo para 123.45.67.89). Quando crio uma nova VM, ela pode se conectar à Internet externa, herdando a conexão do host, mas não resolve nomes locais usando o DNS local. Portanto, tenho que entrar /etc/hostsna VM e fazer uma entrada manualmente depois de resolver o nome no host, o que é irritante.

Existe uma maneira de o VirtualBox conectar automaticamente o convidado ao DNS do host para que eu não precise executar esta etapa manual? Meu host é o OSX Mountain Lion , as VMs geralmente são Ubuntu, mas duvido que isso importe.

Respostas:


99

Para habilitar o Modo Proxy DNS usando o resolvedor do host , execute o seguinte comando:

VBoxManage modifyvm " <nome da VM> " --natdnshostresolver1 em

Como resultado, as solicitações de DNS do SO convidado serão interceptadas e resolvidas usando a API DNS do host, em vez de o SO convidado se conectar a servidores DNS externos como com --natdnsproxy1 on.

Você pode obter o nome da VM executando VBoxManage list runningvms.


9
Para mais informações para outras pessoas: isso precisa ser executado no host. Se o seu host for Windows, abra um prompt de comando, vá para "C: \ Arquivos de programas \ Oracle \ VirtualBox" e execute esse comando. Parece não haver nenhuma opção na GUI do VirtualBox Manager (pelo menos em todas as versões de 4. * a 5.0.20) que permite definir isso de qualquer outra maneira.
Graham

Gostaria de acrescentar que você precisa executar este comando como administrador. Eu tentei do meu cmd e não funcionou para mim, mas executei o cmd como administrador e tudo funcionou perfeitamente.
SergeyOvchinnik

3
Este costumava trabalhar para mim, mas não com o Ubuntu 16.04 e as últimas VirtualBox para Windows
Shanteva

Não está funcionando para mim também :(
Pavel Durov

11
Isso ainda funciona com o MacOs High Sierra como host, o VirtualBox 5.2.6, executando o Windows 7 na VM.
John Eikenberry

6

Sim, é possível. Existem muitos modos disponíveis no VirtualBox para estabelecer redes entre o convidado e o host. Em vez de usar o modo NAT (que é o padrão), você pode usar o modo de ponte no qual sua máquina convidada pode ser tratada como uma entidade totalmente separada em sua rede. Portanto, não apenas seu host, mas qualquer outra máquina (como o servidor DNS) verá seu convidado como uma máquina separada.

Depois de configurar o modo de ponte, basta ir ao seu convidado do ubuntu e fazê-lo usar o nome do servidor DNS ou IP da sua empresa. Leia este tutorial para obter mais informações: http://prahladyeri.wordpress.com/2012/08/02/how-to-setup-a-virtual-lan-on-your-machine-using-oracle-virtualbox/


5

Este foi um dos melhores resultados do Google, então eu queria esclarecer para outras pessoas. A solução de Josiah funcionou para mim com a adição da linha:

hosts: files dns para /etc/nsswitch.conf

Como outros apontaram, a solução original não funciona acima do Ubuntu 16.04. Minha VM convidada é o Ubuntu 16.04.

Referência Criando servidor Linux


2
Bem-vindo ao Super Usuário! Você poderia propor que, como uma edição para a resposta de Josias, o que ajudaria aqueles que procuram :)
bertieb

Obrigado pela dica! Tentei adicionar apenas um comentário, mas não foi permitido. Enviei a edição.
precisa

1

Também notei que minha conexão VPN interfere com a conexão de internet vagante.

Graças a essa troca de pilha, consegui resolver incorporando no meu arquivo Vagrant

config.vm.provider "virtualbox" do |vb|
  vb.cpus = 1
  vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  vb.memory = "2048"
end

E evitou o tédio de ter que desligar a caixa para modificar via linha de comando e reprovisionar

export PATH=$PATH:/c/Program\ Files/Oracle/VirtualBox/
VBoxManage list runningvms
export vbox=`VBoxManage list runningvms | cut -d '"' -f 2`
VBoxManage controlvm $vbox poweroff
VBoxManage modifyvm $vbox --natdnshostresolver1 on
vagrant.exe up --provision

0

Para mim, ajudou a adicionar outro adaptador com adaptador somente para host, mantendo o primeiro (modo NAT) lá também.

[screenshot1]

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.