Windows 如何决定使用哪个 DNS 服务器
Windows DNS 选择受缓存、网卡服务器列表、超时、VPN/NRPT 和应用解析器影响;接口 metric 不是唯一因素。附配置检查和指定服务器查询方法。
一句话回答:Windows 通常先使用 DNS 客户端缓存(包括 hosts 映射),未命中再按接口和 DNS 策略查询服务器。备用服务器主要用于超时容错,不能作为首选返回 NXDOMAIN 后的第二套答案。多网卡还受 NRPT、VPN、智能多宿主解析和应用自带 DoH 影响,不是单靠 metric 的固定队列。
完整解析顺序
- 使用系统解析器的应用会检查本地名称信息和 DNS 客户端缓存,hosts 映射也会加载到缓存中。
- 根据接口配置、名称解析策略、DNS 后缀等选择查询目标。
- 无响应时重试其他服务器;多接口/超时阶段可能并行查询。
- mDNS、LLMNR、NetBIOS 是否参与取决于名称类型、应用和系统策略,不能排成通用的最后一步。
多网卡时选哪个
接口 metric 是排查线索之一,但不独自决定 DNS 路由。查看:
Get-NetIPInterface | Sort-Object InterfaceMetric
VPN 的经典问题就在这:VPN 客户端通常把自己的接口 metric 调小,接管 DNS;如果 VPN 的 DNS 解不了内网域名,就会出现"连上 VPN 打不开内网系统"。先查看 Get-DnsClientNrptPolicy、VPN 分流规则和实际查询去向,再由管理员调整;不要把企业 DNS 直接替换成公共解析器。
常用查看与设置命令
# 查看各网卡的 DNS 配置
Get-DnsClientServerAddress
# 查看当前缓存
ipconfig /displaydns
# 怀疑旧缓存影响结果时清理
ipconfig /flushdns
# 只读测试:向经管理员确认的 DNS 查询,不改系统配置
Resolve-DnsName example.com -Server 192.0.2.53
# 192.0.2.53 为文档地址,替换为实际批准的 DNS 地址
# 调整接口优先级(越小越优先)
Set-NetIPInterface -InterfaceAlias "以太网" -InterfaceMetric 10
常见问题(FAQ)
Q:hosts 文件和 DNS 服务器冲突时听谁的?
A:使用 Windows DNS 客户端解析的程序通常会使用 hosts 映射。浏览器自带解析器、DoH 或直接查询 DNS 的工具可能路径不同,需检查应用配置。
Q:改了 DNS 配置但不生效?
A:先确认应用是否使用系统 DNS,再按需清理系统与应用缓存、复查 NRPT/VPN 策略。远程排障不要随意禁用网卡,以免断开管理连接。
Q:备用 DNS 什么时候启用?
A:首选 DNS 无响应(超时)时才退到备用;首选返回"域名不存在"(NXDOMAIN)时不会查备用——这是常见误解,不存在"两个 DNS 结果合并"的行为。
参考资料
本文依据官方资料核对,未进行现场运行测试;代码与配置示例需结合实际版本、权限和环境验证。