Active Directory DNS 无法解析任何查询

Active Directory DNS 无法解析任何查询

我遇到了 AD Dns 解析器的一些奇怪行为。我们的 Windows 网络使用 AD 作为其 DNS 解析器,然后 AD 解析 Google.com 等查询。一切都很顺利。

有一天,我启动 dig(在 Windows 上,太棒了!)向同事展示一个问题,然后我查询: $ dig ANY google.com。结果非常少,只有A记录,这让我最初以为 Google 已经关闭了他们的服务。后来我改变了主意,然后查询:$ dig ANY @8.8.8.8 google.com,当然这给出了预期的包含所有记录的巨大结果。

我发现微软似乎使用了缓存技巧,他们ANY根据当前缓存拼凑查询的响应。以下步骤将有助于重现此问题。针对 AD DNS 服务器执行所有这些步骤。

  1. 使用查询来查询目标域ANY$ dig ANY example.com。请注意,结果仅包含 A 和 AAAA 记录。

  2. 使用其他类型查询目标域,例如MXor TXT: $ dig MX example.com。验证结果是否符合预期。

  3. 再次发出原始ANY查询,现在注意结果包括MX来自步骤 2 的记录。

我发现每次测试最好都选择一个新域,因为之前的测试会在 AD DNS 中缓存结果。使用 Google 的解析器(或其他解析器)来验证预期结果,例如:$ dig ANY example.com @8.8.8.8

有人能证实这一点吗?这是 AD DNS 中的一项设置,阻止它以递归方式解析ANY查询 - 因为它们以某种方式比其他任何东西都更昂贵?

我个人认为这种行为是完全错误的。

答案1

答案是 ANY 实际上不是 DNS 资源类型。相反,它指的是查询类型 *。根据维基百科,“返回名称服务器已知的所有类型的所有记录。如果名称服务器没有关于名称的任何信息,则将转发请求。返回的记录可能不完整。例如,如果名称同时有 A 和 MX,但名称服务器仅缓存了 A 记录,则只会返回 A 记录。”如果您感兴趣的话,这个想法在 RFC 1034 和 1035 中有更明确的表达。

因此,您的 Windows AD DNS 服务器正在按照您要求的方式做出响应 - 使用它当前已缓存的信息。

尝试 dig MX google.com 或 dig TXT google.com,然后重复 dig ANY google.com。

祝你好运。

相关内容