Vagrant / VirtualBox DNS 10.0.2.3 não está funcionando

78

Estou executando uma nova instalação do Linux Mint Nadia (14). Estou seguindo as instruções do Vagrant Getting Started, mas fiquei preso no provisionamento . Parece que a caixa do Vagrant não pode se conectar do lado de fora e, portanto, não consigo instalar nada usando o Chef ou o Puppet.

No Vagrant básico resolve.confcontém nameserver 10.0.2.3. Mas com esse conjunto, não consigo executar ping us.archive.ubuntu.com.

Se eu alterá-lo para 8.8.8.8, posso executar ping, us.archive.ubuntu.commas ele não permanece definido e, após uma reinicialização, ele volta para 10.0.2.3- o provisionamento falha novamente.

Idealmente, gostaria de 10.0.2.3trabalhar na minha configuração. Na falta de uma maneira de alterar permanentemente resolv.confpara que eu possa fazer o provisionamento.

Rudolf Vavruch
fonte
2
Para sua informação, acabei de acertar o mesmo problema com a ubuntu/xenial64caixa e acabou sendo um bug na própria caixa .
Aidan Feldman
@AidanFeldman o mesmo para mim. Apenas mudei bento/ubuntu-16.04e o DNS funciona bem sem outras correções.
HenningCash 11/01

Respostas:

84

Você pode solucionar esse problema de duas maneiras, ambas no manual do VirtualBox :

Habilitando o proxy DNS no modo NAT

O mecanismo NAT, por padrão, oferece os mesmos servidores DNS para o convidado configurado no host. Em alguns cenários, pode ser desejável ocultar os IPs do servidor DNS do convidado, por exemplo, quando essas informações podem ser alteradas no host devido a concessões de DHCP expiradas. Nesse caso, você pode dizer ao mecanismo NAT para agir como proxy DNS usando o seguinte comando:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

Usando o resolvedor do host como um proxy DNS no modo NAT

Para resolver nomes de rede, o servidor DHCP do mecanismo NAT oferece uma lista de servidores DNS registrados do host. Se, por algum motivo, você precisar ocultar esta lista de servidores DNS e usar as configurações do resolvedor do host, forçando o mecanismo NAT do VirtualBox a interceptar solicitações de DNS e encaminhá-las para o resolvedor do host, use o seguinte comando:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on

Observe que essa configuração é semelhante ao modo de proxy DNS, no entanto, enquanto o modo proxy apenas encaminha solicitações de DNS para os servidores apropriados, o modo resolvedor interpreta as solicitações de DNS e usa a API DNS do host para consultar as informações e devolvê-las ao convidado .

Michael Hampton
fonte
1
Obrigado. "Usar o resolvedor do host como proxy DNS no modo NAT" fez o truque. É uma pena que eu tenha que fazer isso em cada instalação do Vagrant.
Rudolf Vavruch
1
Eu quase sempre uso o modo de ponte para VMs, o que elimina o problema (e vários outros problemas).
Michael Hampton
3
Apenas tive o problema com uma atualização para o 4.2.20, "Usar o resolvedor do host como um proxy DNS no modo NAT" também funcionou. Valeu !
edomaur
73

Seguindo em https://serverfault.com/a/453260/14832 , se você estiver usando um formato de configuração do Vagrantfile versão 2, o que é iniciado:

Vagrant.configure("2") do |config|

Então você pode querer adicionar isso ao arquivo de configuração:

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

Se você estiver usando o formato de configuração antigo, mas estiver usando o Vagrant 1.1+, você pode anexá-lo no final do arquivo:

Vagrant.configure("2") do |config|
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end
end
JonTheNiceGuy
fonte
2
Adicionando isso ao meu Vagrantfilecorrigido o problema em que eu não podia executar gem install...sem obter erros DNS tolos :) Obrigado!
Nick