我有一个 Arduino Yun 作为客户端连接到我的 LAN,这不是我的 DNS 服务器。我可以使用其主机名访问它:http://arduino.local
如果没有 DNS 记录我该如何访问它?
我向 Arduino 社区询问,他们谈到了 mDNS 解析,然后我尝试使用“Bonjour Browser”获取这些记录(https://hobbyistsoftware.com/bonjourbrowser) 并且我还尝试了 chrome 扩展程序。但我没有找到来自该 IP 地址的任何记录!
然后我尝试使用,nslookup
但失败了,因为 DNS 服务器没有该记录。然后我尝试使用nblookup
,因为我知道 NetBios 还进行了另一项解析。但它没有得到任何记录。我查看了 hosts 文件,它是空的。
我尝试了一下ping arduino.local
并且结果很好!
我清除了 DNS 缓存,再次 ping arduino.local,然后打印,ipconfig /displaydns
但没有找到有关该名称的任何记录。
答案1
Bonjour 浏览器实际上是 DNS-SD 浏览器,而不是 mDNS 浏览器。不要混淆它们:
mDNS 是在 LAN 上运行的低级协议,与常规 DNS 系统一样,它允许发布任何记录类型 - A/AAAA、TXT、SRV 等。
DNS-SD(又称 DNS 服务发现)是一种特定的方式使用 mDNS – 它是一项更高级别的功能,允许使用 SRV 和 PTR 记录发布“服务”。
因此 Bonjour 浏览器将仅有的查看根据 DNS-SD 格式发布的记录,但本地主机名解析实际上并不使用此系统。解析arduino.local
IP 地址仅使用基本 mDNS,因此没有服务查找,只有简单的 A/AAAA 记录查询。
还有一种可能是,您的 Windows 系统实际上并没有使用 mDNS,而是使用自己的 LLMNR。早期的 Windows 版本根本不支持 mDNS(尽管它可能与 iTunes 捆绑在一起),而最新的 Windows 10 仍然需要手动启用它。
在 Windows 10 中,每当您使用arduino
或 之类的名称时arduino.local
,操作系统都会尝试全部本地名称解析协议:LLMNR、mDNS(如果启用)和 NetBIOS(如果启用了 SMBv1)。因此,除非您实际查看收到的数据包。