如何通过虚拟机名称解析 VirtualBox 主机专用 IP 地址?

如何通过虚拟机名称解析 VirtualBox 主机专用 IP 地址?

我有一台装有 VirtualBox v6.1.34 的 Win 10 物理主机以及一个 CentOS 7 的客户操作系统。

作为默认设置,VirtualBox 仅主机以太网适配器处于开启状态192.168.56.1/24,并且客户机以自动模式连接到此网络适配器。

启动后,guest 通过 DHCP 获取地址,我通过ifconfig在 guest 上调用命令来验证。简单来说,hostnameguest OS 的 和 VM 的名字是一样的。

我也关注了此链接并验证了 DHCP 租约的记录。顺便说一下,租约记录包含 IP 和 MAC 地址,但我没有找到有关主机名、域名或 VirtualBox VM 名称的任何提示。

但是,我无法通过物理主机上的 VM 名称 ping 客户机。如前所述,它与 相同hostname

  • 我尝试过ping hostnameping hostname.local但是没有效果。
  • 有了已知地址,ping 192.168.56.xxx就可以工作。

如果您需要更多信息,请告诉我。

我是网络新手,因此我非常感谢您对基本概念(例如子网、网关、路由器、DNS、DHCP 等)提出的一些建议。

答案1

基于 DHCP 租约的名称查找是通过本地 DNS 完成的,而本地 DNS 需要由相关 DHCP 服务器提供(即由 VirtualBox 的内部“仅主机”DHCP 服务提供)。DHCP 租约与 DNS 条目的同步并非 DHCP 固有的内置功能,而是一项需要由软件作者单独实现的功能,据我在 VirtualBox 的 Dhcpd 源代码中看到的那样,这种集成根本没有实现。

(此外,客户端(即主机操作系统)也需要配置为实际使用该 DNS 服务器。这种情况也不太可能发生,因为 VirtualBox 的 DNS 是为虚拟机设计的,因此它会将请求转发到主机操作系统配置告诉它的任何位置……因此,如果主机尝试使用 VirtualBox 的 DNS,您将获得 DNS 请求循环,并且根本无法解析任何内容。)

直接(非 DNS)名称查找通常基于 mDNS 或 LLMNR 协议。要使裸名称hosthost.local名称正常工作,VM 需要实际服务于其中至少一种协议 - 通常通过avahi 守护进程对于 mDNS,通过systemd-networkd用于 LLMNR(或两者)。安装其中一个服务并确保 VM 的防火墙允许入站 UDP 查询数据包。

相关内容