Vagrant: Conexão lenta à Internet no hóspede

23

Estou tentando montar um vagabundo. O host é o Ubuntu 12.10. Aqui está o meu arquivo vagrant:

Vagrant::Config.run do |config|

    config.vm.share_folder("v-root", "/vagrant", ".", :nfs => true)
    config.vm.network :bridged, :bridge => "eth0"

    config.vm.define "restserver" do |chefs_config|

        chefs_config.vm.box = "precise64"
        chefs_config.vm.box_url = "http://files.vagrantup.com/precise64.box"
        chefs_config.vm.host_name = "restserver"
        chefs_config.vm.network :hostonly, "192.168.20.50"
        chefs_config.vm.forward_port 80, 8080

        config.vm.provision :chef_solo do |chef|

            chef.log_level = :debug

            chef.cookbooks_path = "cookbooks"
            chef.run_list.clear

            chef.add_recipe "apt"
            chef.add_recipe "base"
            chef.add_recipe "mongodb::default"
            chef.add_recipe "nginx"
        end
    end
end

O problema é que meu acesso à Internet de dentro dos vagabundos é terrível. Está muito lento. Eu acho que as tabelas de roteamento podem estar bagunçadas. Aqui está a saída de route -n:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.0.2.2        0.0.0.0         UG    100    0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.20.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2

Existem 2 rotas para o destino padrão, embora na mesma NIC e no mesmo gateway. Mas talvez isso esteja causando um problema. Pelo menos foi o que pensei, mas excluir a primeira rota padrão não ajuda.

Eu preciso de rede somente host para que o compartilhamento nfs funcione. O NAT é usado para o encaminhamento de porta, e eu adicionei a rede em ponte para tentar conceder a este convidado acesso à Internet.

Alguém tem alguma idéia do que está errado? O DNS é muito lento para resolver e é lento para baixar qualquer coisa da Internet.

sarah
fonte

Respostas:

28

Executando a versão 2 da configuração do Vagrant?

A Sarah forneceu a resposta: usar o resolvedor de DNS dos hosts NAT, pois é mais rápido e ajudará a acelerar as coisas.

No entanto, na versão 2 da configuração vagrant, que é o que a maioria das pessoas está usando agora, você precisará adicionar o seguinte no seu 'Vagrantfile', que forçará a VM a usar o DNS NAT:

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

Você pode saber se está usando a configuração v2 se tiver as seguintes linhas ou algo na parte superior do seu Vagrantfile

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
Jujhar Singh
fonte
2
Esta deve ser a resposta certa #
Enrique Moreno Tent
Tentei aumentar minha rede vagante e funcionou, mas tive problemas com, por exemplo, puxar imagens do docker por causa de muitas pesquisas de DNS. Portanto, eu tive que remover essa linha, v.customize ["modifyvm", :id, "--natdnsproxy1", "on"] significa que apenas adicionei isso ao meu Vagrantfile v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] Aparência do resolvedor de host aumentar o desempenho da rede por algum motivo e o proxy DNS desgarra algumas ferramentas.
Xh3b4sd
1
OBRIGADO! Minha vm estava levando o FOREVER para cima e para o ssh - normalmente seria apenas o tempo limite - quando conectado à Internet / à rede. Isso consertou.
precisa
21

Responda:

Adicione o seguinte à configuração do vagrant:

config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]

Veja aqui para mais informações: Vagrant / VirtualBox DNS 10.0.2.3 não está funcionando

sarah
fonte
3
Isso quase o corrigiu para mim, exceto que não havia um customizemétodo config.vm. Em vez disso, na minha seção `config.vm.provider: virtualbox do | vb |`, adicionei isto: vb.customize ["modifyvm",: id, "--natdnshostresolver1", "on"]
Ovid
1
A resposta fornecida por 'sarah' é para a sintaxe de configuração antiga do VagrantFile, e a resposta fornecida por 'Ovid' é para a sintaxe de configuração mais recente. Você pode dizer se você está usando a mais recente sintaxe por ver se o seu arquivo de configuração inclui Vagrant.configure(2)no topo (note a 2)
caseyamcl
quase. Isso funciona para mim github.com/mitchellh/vagrant/issues/1807#issuecomment-19132198 vagabundo 1.4.3
choonkeat
Estou no Fedora 22 e defini-lo como "off"foi a minha solução.
Christopher Markieta
1

As configurações de NAT não melhoraram minha velocidade de download.

Eu tive que usar a seguinte configuração para obter taxas de download adequadas.

config.vm.provider "virtualbox" do |vb|
  vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
end
hennr
fonte