递归 DNS 解析器
递归 DNS 解析器替客户端完成整条从根到权威的查询,并缓存结果;ISP、家庭路由、公共 DNS、企业 DNS、VPN/代理内置解析器都是它的来源。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 本地客户端: Stub Resolver
- 转发场景: DNS Forwarder
- 实际解析流程: 一次完整的递归解析
- 缓存行为: DNS 缓存链
递归 DNS 解析器
一句话定义
递归 DNS 解析器(Recursive Resolver) 负责替客户端完成整个「根 → 顶级域 → 权威」的查询链,并把结果缓存起来返回给 Stub Resolver。
核心机制 / 工作原理
它的核心能力是 递归查询 + 缓存:
收到 www.example.com A
↓
问根:.com 去哪?
问 TLD:example.com 去哪?
问权威:www.example.com 的 A 是什么?
↓
缓存 300 秒,返回客户端
冷缓存时它可能要依次访问根、顶级域、权威三层;缓存变热后,大多数同类查询直接从缓存回答,不再外出。
常见来源
- ISP 提供的 DNS
- 家庭路由器转发器(它本身也是个递归/转发器)
- Google Public DNS(8.8.8.8)
- Cloudflare(1.1.1.1)
- 阿里公共 DNS(223.5.5.5)
- 企业内部 DNS
- VPN 或代理客户端内置 DNS
- 云厂商 VPC 内部 DNS(如 169.254.x.x 类元数据域名、VPC 内
*.internal)
最小例子 / 最小场景
你在 Windows 上执行:
Resolve-DnsName anyrouter.top -Server 1.1.1.1
这里 1.1.1.1 就是一台公共递归解析器。它如果没缓存,会自己走完根/TLD/权威,再把答案回给你。
边界与易混淆点
- 它通常「不」负责回答其他域的权威数据:递归解析器不是
anyrouter.top的权威,只是帮你去问权威。 - 你以为的 DNS 服务器可能不是递归解析器:
192.168.x.x常只是 Forwarder(见 dns-forwarder)。 - 递归解析器看到的源 IP 是「发出查询的那台」(通常是你的出口/Forwarder),所以 GeoDNS 常按递归解析器位置而非你的真实位置返回(见 geodns)。
- 不同递归解析器缓存状态不同,这是「同一域名不同机器结果不同」的常见原因(见 why-same-domain-different-ip)。
- 它对客户端身份可见(知道是谁在查),这是 ODoH 想解决的问题(见 oblivious-doh-odoh)。