我最近在进行一些测试,包括通过我的软件在个人 Mac OS X 机器上重新路由(代理)常规 DNS 查询并返回到我的 ISP 的 DNS 服务器。
我有机会看到所有日常计算机使用过程中的查询。这些查询让我很好奇:
lb._dns-sd._udp.0.1.168.192.in-addr.arpa
db._dns-sd._udp.0.1.168.192.in-addr.arpa
b._dns-sd._udp.0.1.168.192.in-addr.arpa
b._dns-sd._udp.0.1.168.192.in-addr.arpa
db._dns-sd._udp.0.1.168.192.in-addr.arpa
lb._dns-sd._udp.0.1.168.192.in-addr.arpa
我读到过一些文章说这些是来自 Apple 的 Bonjour 服务发现。但这不是只能在本地网络上工作吗?那么将这些查询发送到 ISP 的 DNS 服务器的目的是什么?!这些人是不是被大量拥有 Mac 的人的查询淹没了?!我在这里遗漏了什么?
更新:我刚刚检查了这些查询的响应数据,结果始终相同。我看到以下内容:
prisoner.iana.org
和
hostmaster.root-servers
在每个回复中都提到(注意:我正在查看原始数据,因此可能无法正确解码。通过谷歌搜索,我发现其他人得到了这个数据,但我在我的回复的原始字节中hostmaster.root-servers.org
没有看到)org
答案1
您的计算机的解析器库不知道什么是私有地址空间,什么不是。任何反向 DNS 查找请求将被发送到您的机器配置使用的 DNS 服务器。
同样,您的客户端应用程序也不知道您配置的 DNS 服务器是由您还是其他实体运营。它们所能做的最好的事情就是试图使用 DNS 进行自动发现,以及希望您正在使用对您的 LAN 具有权威性的 DNS 基础设施。
在住宅/爱好者场景中,最常见的情况是您使用 ISP 的 DNS 服务器。专用网络反向 DNS 查询将“泄露”给您的 ISP。DNS 规范中没有办法解决这个问题;这被视为正常操作。ISP 此时如何响应完全取决于他们。以下是最常见的情况:
- ISP 管理自己的私有网络空间权威反向 DNS,并将其暴露给客户。这通常会导致您发现持有该 IP 地址的机器的 DNS 条目他们的网络。 (哎呀)
- ISP 不认为自己对该 IP 空间具有权威性,因此他们将查询“泄露”给 IANA 的顶级域名服务器以进行反向 DNS。
prisoner.iana.org.
您看到的权威数据来自IANA 的黑洞服务器。您可以在提供的链接中阅读有关它们的更多信息,但简而言之,私有网络反向 DNS 的泄漏非常普遍,而这些服务器的设置是为了减轻 IANA 真实服务器的负载。 - 名称服务器软件(或服务器操作员)比大多数软件都更体贴,他们会自己将查询置为黑洞。这是目前最不可能出现的情况。BIND 在 9.4.1 中实现了这样的功能。它由 控制
empty-zones-enable
(默认:是),返回的数据受empty-server
和empty-contact
选项的影响。