Vagrant/VirtualBox DNS 10.0.2.3 不起作用

Vagrant/VirtualBox DNS 10.0.2.3 不起作用

我正在运行全新安装的 Linux Mint Nadia (14)。我按照 Vagrant 上的说明进行操作入门但一直卡在配置。看来 Vagrant 盒子无法连接到外部,所以我无法使用 Chef 或 Puppet 安装任何东西。

在基本的 Vagrant 中resolve.conf包含nameserver 10.0.2.3。但是使用该设置我无法 ping us.archive.ubuntu.com

如果我将其更改为,8.8.8.8那么我可以 pingus.archive.ubuntu.com但它不会保持设置,并且在重新启动后它会变回10.0.2.3- 因此配置再次失败。

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

答案1

您可以通过以下两种方式之一解决此问题:在 VirtualBox 手册中

NAT 模式下启用 DNS 代理

默认情况下,NAT 引擎会向客户机提供与主机上配置相同的 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 查询信息并将其返回给客户机。

答案2

跟进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

答案3

死灵法师这个,因为在我看来,没有一个答案能解释根本原因这个问题似乎很有趣。对于现代环境——这个问题也发生在 Debian 10 和 VirtualBox 6.0.14 中;在默认安装 Deb 10(无 GUI)后,使用一个“NAT”适配器(不是“NAT 网络”,而是默认的“NAT”),DNS 似乎一切正常。然后更改/etc/network/interfaces为静态 IP(这似乎在该发行版中仍然相关):

#iface enp0s3 inet dhcp
iface enp0s3 inet static
address 10.0.2.15
netmask 255.255.255.0
gateway 10.0.2.2

(注意——虚拟机无论如何都会10.0.2.15从 dhcp 获取),然后关闭/打开虚拟机,

  • DNS 不起作用(host google.com例如,超时)
  • 不能telnet 10.0.2.3 53(安装后默认resolv.conf有)。nameserver 10.0.2.3

如果我回到iface enp0s3 inet dhcp重启VM、DNS和telnet 10.0.2.3 53工作。

现在事情变得非常令人兴奋/奇怪:如果你再次去inet static,并且只需重启VM、DNS 和 telnet仍能正常工作;仅当您关闭/打开 VM(通过 virtualbox)时,它10.0.2.3才会消失。

所以我目前的猜测是,VirtualBox自动地10.0.2.3一旦收到请求,就会打开 DNS 服务器/代理dhcp10.0.2.3只要虚拟机没有关闭(但可以重新启动),它就会一直存在。

(如果我知道如何伪造dhcp请求,我会检查这一点10.0.2.0/24;有人知道怎么做吗?)

__

对于那些确实想将 IP 更改为静态(在“NAT”适配器中)的人来说,底线是:只需找到一种方法来粘贴正确的内容nameserver/etc/resolv.conf可以在启动后的一些初始化脚本中)。

答案4

在 VagrantVM 上,尝试:

resolvectl dns eth0 your_server_dns_ip_address

例如

resolvectl dns eth0 8.8.8.8

相关内容