流浪汉/ VirtualBox DNS 10.0.2.3无法正常工作


78

我正在运行全新的Linux Mint Nadia(14)安装。我正在按照“ Vagrant 入门”中的说明进行操作,但已卡在Provisioning上。似乎Vagrant盒子无法连接到外部,因此我无法使用Chef或Puppet安装任何东西。

在基本的Vagrant中resolve.conf包含nameserver 10.0.2.3。但是有了这个设置我就不能ping了us.archive.ubuntu.com

如果将其更改为,8.8.8.8则可以ping通,us.archive.ubuntu.com但它不会保持设置状态,并且在重新启动后,它会更改回10.0.2.3--因此置备再次失败。

理想情况下,我想进行10.0.2.3设置。如果我不希望有一种永久更改的方法resolv.conf,则可以进行预配。


2
仅供参考,我刚刚在ubuntu/xenial64盒子上遇到了同样的问题,事实证明这是盒子本身的错误
艾丹·费尔德曼

@AidanFeldman对我也一样。只需切换到bento/ubuntu-16.04DNS,DNS即可正常运行,而无需进行任何进一步的修复。
HenningCash

Answers:


84

您可以通过以下两种方法之一解决此问题,这两种方法都在VirtualBox手册中

在NAT模式下启用DNS代理

默认情况下,NAT引擎向来宾提供与主机上配置的DNS服务器相同的DNS服务器。在某些情况下,可能希望对来宾隐藏DNS服务器IP,例如,当此信息由于DHCP租约到期而可能在主机上更改时。在这种情况下,您可以使用以下命令告诉NAT引擎充当DNS代理:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

在NAT模式下将主机的解析器用作DNS代理

为了解析网络名称,NAT引擎的DHCP服务器提供了主机的已注册DNS服务器的列表。如果由于某种原因您需要隐藏此DNS服务器列表并使用主机的解析器设置,从而迫使VirtualBox NAT引擎拦截DNS请求并将它们转发到主机的解析器,请使用以下命令:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on

请注意,此设置类似于DNS代理模式,但是代理模式只是将DNS请求转发到适当的服务器,解析器模式将解释DNS请求并使用主机的DNS API查询信息并将其返回给来宾。


1
谢谢。“使用主机的解析器作为NAT模式下的DNS代理”解决了这一难题。很遗憾,我必须为每个Vagrant安装都这样做。
Rudolf Vavruch

1
我几乎总是对VM使用桥接模式,这消除了该问题(以及其他许多问题)。
迈克尔·汉普顿

3
刚升级到4.2.20时遇到了问题,“将主机的解析器用作NAT模式下的DNS代理”对我来说也很有效。谢谢 !
edomaur 2013年

73

https://serverfault.com/a/453260/14832上进行后续操作,如果您使用的是版本2 Vagrantfile配置格式,则该格式开始:

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

然后,您可能要将其添加到该配置文件中:

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

如果您使用的是旧的配置格式,但使用的是Vagrant 1.1+,则可以在文件末尾附加:

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

2
将此添加到我的已Vagrantfile修复的问题中,如果没有出现gem install...愚蠢的DNS错误,我将无法运行:)谢谢!
尼克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.