我有一台装有 VirtualBox v6.1.34 的 Win 10 物理主机以及一个 CentOS 7 的客户操作系统。
作为默认设置,VirtualBox 仅主机以太网适配器处于开启状态192.168.56.1/24
,并且客户机以自动模式连接到此网络适配器。
启动后,guest 通过 DHCP 获取地址,我通过ifconfig
在 guest 上调用命令来验证。简单来说,hostname
guest OS 的 和 VM 的名字是一样的。
我也关注了此链接并验证了 DHCP 租约的记录。顺便说一下,租约记录包含 IP 和 MAC 地址,但我没有找到有关主机名、域名或 VirtualBox VM 名称的任何提示。
但是,我无法通过物理主机上的 VM 名称 ping 客户机。如前所述,它与 相同hostname
。
- 我尝试过
ping hostname
,ping 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 协议。要使裸名称host
或host.local
名称正常工作,VM 需要实际服务于其中至少一种协议 - 通常通过avahi 守护进程对于 mDNS,通过systemd-networkd用于 LLMNR(或两者)。安装其中一个服务并确保 VM 的防火墙允许入站 UDP 查询数据包。