我的计算机如何解析未注册到 DNS 的子网上的主机名?

我的计算机如何解析未注册到 DNS 的子网上的主机名?

我刚刚在我的网络上的虚拟机上部署了 Canonical Landscape。

当我在浏览器中输入虚拟机的 IPv4 地址来开始时,它将我重定向到虚拟机的主机名“vm-17”。

Location: https://vm-17:443/

这很好,并且没有任何故障,但它让我好奇它是如何工作的。

即使 nslookup 没有返回任何内容,并且我的 DNS 服务器上没有 A 记录,我的计算机如何能够解析此主机名?我推测除了 DNS 之外还有其他协议可以实现这一点?目标计算机与我的计算机位于同一子网中。

C:\Users\bob>nslookup vm-17
Server:  VHOST-03.alice.local
Address:  192.168.223.9

*** VHOST-03.alice.local can't find vm-17: Non-existent domain

C:\Users\bob>ping vm-17

Pinging vm-17.local [192.168.223.27] with 32 bytes of data:
Reply from 192.168.223.27: bytes=32 time<1ms TTL=64

答案1

看起来它使用的是多播 DNS (mDNS),它是 IETF ZeroConf 协议套件的一部分。它是 Apple Bonjour 的标准化版本,目前在包括 Android 在内的 Linux 发行版和 Windows 10 中得到广泛支持。

Linux 上有几个不同的开源软件包可以实现 mDNS。其中部署最广泛、最知名的软件包可能是 Avahi。

nslookupdig和工具host各自包含自己的仅单播 DNS 解析器代码,并且不使用操作系统的 DNS 解析器库,因此它们对 mDNS 视而不见。

ping(以及任何其他不是专门的 DNS 调试工具的东西)将使用系统的 DNS 解析器,因此在安装并运行 Avahi 的系统上,它将使用 mDNS,而无需您执行任何特殊操作。

请注意,IETF 已保留.local与 mDNS 一起使用。如果您想在本地网络上使用伪 TLD 进行单播 DNS,则可能应该使用,.test以免与 mDNS 发生冲突。

相关内容