Vagrant:来宾的互联网连接速度较慢

sar*_*rah 23 virtualbox vagrant

我正在尝试建立一个流浪者。主机是 Ubuntu 12.10。这是我的流浪文件:

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
Run Code Online (Sandbox Code Playgroud)

问题是我从流浪者内部访问互联网很糟糕。这很慢。我认为路由表可能搞砸了。这是来自的输出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
Run Code Online (Sandbox Code Playgroud)

尽管在同一个 NIC 和同一个网关上,但有 2 条路由到默认目的地。但也许这引起了问题。至少我是这么想的,但删除第一个默认路由无济于事。

我需要仅主机网络,以便 nfs 共享可以工作。NAT 用于端口转发,我添加了桥接网络以尝试让此访客访问 Internet。

有谁知道出了什么问题?DNS 解析速度很慢,从互联网下载任何东西也很慢。

小智 29

运行 Vagrant 配置的第 2 版?

莎拉提供的答案是使用 NAT 主机 DNS 解析器,因为它更快并且有助于加快速度。

但是,在大多数人现在使用的 vagrant 配置的第 2 版中,您必须在“Vagrantfile”中添加以下内容,这将强制 VM 使用 NAT 的 DNS:

config.vm.provider "virtualbox" do |v|
   v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
   v.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
Run Code Online (Sandbox Code Playgroud)

如果您有以下几行或顶部的内容,您可以判断您是否使用 v2 配置 Vagrantfile

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确答案 (2认同)

sar*_*rah 21

回答:

将以下内容添加到 vagrant 配置中:

config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见此处:Vagrant / VirtualBox DNS 10.0.2.3 not working

  • 这几乎为我修复了它,除了 `config.vm` 上没有 `customize` 方法。相反,在我的` config.vm.provider :virtualbox do |vb|` 部分,我添加了这个: vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] (3认同)