如何让 VirtualBox 虚拟机使用主机的 DNS?

amp*_*ent 86 networking dns virtualbox virtualization

我的虚拟机使用VirtualBox。我的办公网络设置是无线的,即我连接到我公司的 WiFi 网络,它有一个本地 DNS 来解析本地名称(例如something.mycompany.com转到 123.45.67.89)。当我构建一个新的 VM 时,它可以连接到继承主机连接的外部互联网,但它不会使用本地 DNS 解析本地名称。所以我必须进入/etc/hosts虚拟机并在我解析主机上的名称后手动输入,这很烦人。

有没有办法让 VirtualBox 自动将来宾连接到主机的 DNS,这样我就不必执行此手动步骤?我的主机是OSX Mountain Lion,VM 通常是Ubuntu,但我怀疑这是否重要。

Jos*_*iah 124

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

VBoxManage modifyvm " <VM?name> " --natdnshostresolver1 on

因此,来宾操作系统 DNS 请求将使用主机 DNS API 进行拦截和解析,而不是像--natdnsproxy1 on.

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

  • 有关其他人的更多信息:这需要从主机运行。如果您的主机是 Windows,请打开命令提示符,cd 到“C:\Program Files\Oracle\VirtualBox”,然后运行该命令。VirtualBox Manager GUI 中似乎没有任何选项(至少在从 4.* 到 5.0.20 的所有版本中)可以让您以任何其他方式设置它。 (17认同)
  • 这曾经对我有用,但不适用于 Ubuntu 16.04 和适用于 Windows 的最新虚拟机 (3认同)
  • @RyanAugustine 有可能您需要先关闭来宾虚拟机,然后才能使用 (3认同)

小智 8

对我来说,它有助于添加另一个带有仅主机适配器的适配器,同时也保留第一个(NAT 模式)。

[截图1]


Pra*_*eri 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/


小智 6

这是谷歌的顶级结果,所以我想为其他人澄清。Josiah 的解决方案对我有用,添加了以下行:

hosts: files dns/etc/nsswitch.conf

正如其他人指出的那样,原始解决方案在 Ubuntu 16.04 以上不起作用。我的来宾 VM 是 Ubuntu 16.04。

参考创建 Linux 服务器

  • 欢迎使用超级用户!您可以建议将其作为对 Josiah 答案的编辑,这将有助于那些正在寻找的人:) (3认同)