我用虚拟盒对于我的虚拟机。我的办公室网络设置是无线的,即我连接到公司的 WiFi 网络,它有一个本地 DNS 来解析本地名称(例如something.mycompany.com转到 123.45.67.89)。当我构建新的虚拟机时,它可以继承主机的连接连接到外部互联网,但它不会使用本地 DNS 解析本地名称。因此,我必须在/etc/hosts
解析主机上的名称后进入虚拟机并手动输入,这很烦人。
有没有办法让 VirtualBox 自动将客户机连接到主机的 DNS,这样我就不必执行此手动步骤了?我的主机是OSX 山狮,虚拟机通常Ubuntu但我怀疑这是否重要。
答案1
启用使用主机解析器的 DNS 代理模式,运行以下命令:
VBoxManage 修改vm<虚拟机名称>“--natdnshostresolver1 开启
因此,客户操作系统 DNS 请求将被拦截并使用主机 DNS API 进行解析,而不是像 那样让客户操作系统连接到外部 DNS 服务器--natdnsproxy1 on
。
您可以通过运行来获取虚拟机的名称VBoxManage list runningvms
。
答案2
对我来说,它有助于添加另一个带有主机专用适配器的适配器,同时保留第一个适配器(NAT 模式)。
[
答案3
这是 Google 搜索结果中的最佳结果,所以我想向其他人解释一下。Josiah 的解决方案对我有用,只需添加以下行:
hosts: files dns
到/etc/nsswitch.conf
正如其他人指出的那样,原始解决方案在 Ubuntu 16.04 以上不起作用。我的客户虚拟机是 Ubuntu 16.04。
答案4
我还注意到我的 VPN 连接干扰了流浪互联网连接。
感谢这个 stackexchange,我能够通过嵌入到我的 Vagrantfile 中来解决问题
config.vm.provider "virtualbox" do |vb|
vb.cpus = 1
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.memory = "2048"
end
避免了必须关闭设备才能通过命令行进行修改,然后重新配置的繁琐工作
export PATH=$PATH:/c/Program\ Files/Oracle/VirtualBox/
VBoxManage list runningvms
export vbox=`VBoxManage list runningvms | cut -d '"' -f 2`
VBoxManage controlvm $vbox poweroff
VBoxManage modifyvm $vbox --natdnshostresolver1 on
vagrant.exe up --provision