如何使VirtualBox VM使用主机的DNS?


69

我将VirtualBox用于我的VM。我的办公室网络设置是无线的,即,我连接到公司的WiFi网络,该网络具有用于解析本地名称的本地DNS(例如,指向123.45.67.89的something.mycompany.com)。当我构建一个新的VM时,它可以继承主机的连接而连接到外部Internet,但不能使用本地DNS解析本地名称。因此,/etc/hosts在解析主机上的名称后,我必须进入VM并手动进行输入,这很烦人。

有没有一种方法可以使VirtualBox自动将访客连接到主机的DNS,这样我就不必执行此手动步骤了?我的主机是OSX Mountain Lion,虚拟机通常是Ubuntu,但我怀疑这是否重要。

Answers:


99

使用主机的解析器启用DNS代理模式,请运行以下命令:

VBoxManage Modifyvm“ <VM名称> ” --natdnshostresolver1

结果,将使用主机DNS API来拦截和解析来宾OS DNS请求,而不是像那样使来宾OS连接到外部DNS服务器--natdnsproxy1 on

您可以通过运行来获取VM的名称VBoxManage list runningvms


9
有关其他信息,请从主机运行。如果您的主机是Windows,请打开命令提示符,cd到“ C:\ Program Files \ Oracle \ VirtualBox”,然后运行该命令。VirtualBox Manager GUI中似乎没有任何选项(至少在从4. *到5.0.20的所有版本中),您可以通过其他任何方式进行设置。
Graham

我想补充一点,您需要以管理员身份运行此命令。我从cmd尝试了它,但它对我不起作用,但是后来我以管理员身份运行了cmd,一切正常。
SergeyOvchinnik '16

3
这曾经对我有用,但是不适用于Ubuntu 16.04和Windows的最新virtualbox
Shanteva

也不能为我工作:(
Pavel Durov

1
这仍可与MacOs High Sierra作为主机,VirtualBox 5.2.6,在VM中运行Windows 7一起使用。
John Eikenberry

6

对的,这是可能的。VirtualBox中有许多模式可用于在来宾和主机之间建立网络。您可以使用网桥模式,而不用使用NAT模式(默认模式),在该模式下,您的客户机可以被视为网络上完全独立的实体。因此,不仅您的主机,而且其他任何计算机(例如您的DNS服务器)也将来宾视为一台单独的计算机。

设置桥接模式后,只需转到ubuntu来宾,并使其使用公司的DNS服务器名称或ip。阅读本教程以了解更多信息:http : //prahladyeri.wordpress.com/2012/08/02/how-to-setup-a-virtual-lan-on-your-machine-using-oracle-virtualbox/


5

这是Google的最高成绩,因此我想向其他人澄清一下。Josiah的解决方案通过添加以下内容为我工作:

hosts: files dns/etc/nsswitch.conf

正如其他人指出的那样,原始解决方案在Ubuntu 16.04之上无法运行。我的访客虚拟机是Ubuntu 16.04。

参考创建Linux服务器


2
欢迎来到超级用户!您可以建议将其作为对Josiah答案的修改,这将帮助那些寻找:)
bertieb

谢谢你的提示!我尝试仅添加评论,但不允许这样做。我提交了修改。
pretzel11 '18

1

我还注意到我的VPN连接会干扰无聊的Internet连接。

多亏了这个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

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.