我试图弄清楚 DNS 解析如何在 Windows 上工作。我有一台带有两个 NIC 的 PC,每个都连接到不同的 LAN(基本上第一个连接到 Internet,另一个连接到公司网络)。这些 NIC 中的每一个都配置了不同的域和 DNS:第一个具有 ISP 的默认值,第二个具有公司私有域和 DNS 服务器。解析互联网上的域工作正常,以及解析私有 DNS 的 FQDN。
但是,如果我尝试仅 ping 主机名(公司网络上的设备),Windows 只会尝试解析 ISP 的 DNS 上的名称,这会导致超时。从我在互联网上找到的文档中,我读到 Windows 应该询问主 DNS,如果它没有得到答案,请尝试其他接口上的 DNS。但似乎并非如此。我错过了什么 ?Windows 是否将来自主 DNS 服务器的否定答案视为明确答案?我不认为这是关于优先考虑一个 NIC 或另一个,因为它永远不会询问辅助 DNS。
https://docs.microsoft.com/en-us/archive/blogs/stdqry/dns-clients-and-timeouts-part-1
DNS 客户端的实际行为是它将按照列出的顺序查询其 DNS 服务器,直到收到肯定或否定的答案。一旦收到答案,无论是肯定的还是否定的,DNS 客户端都会停止查询过程并将该答案返回给调用应用程序。只有当对 DNS 服务器的查询超时(或报告服务器错误)时,客户端才会使用列表中的下一个 DNS 服务器重试查询。换句话说:否定答案不会触发与备用 DNS 服务器的重试,只有超时(和其他错误)才会触发。