Stub Resolver
Stub Resolver 是设备本地的轻量 DNS 客户端,通常不自己从根递归查询,而是把请求交给一个递归解析器完成。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 上游角色: 递归 DNS 解析器
- 转发路径: DNS Forwarder
- 应用侧: DNS 不只是电话簿
Stub Resolver
一句话定义
Stub Resolver(存根解析器) 是运行在设备本地的轻量 DNS 客户端,它通常不自己从根服务器逐级递归,而是把查询交给一个递归解析器去完成。
核心机制 / 工作原理
Stub Resolver 的职责是「发起 + 接收」,而不是「递归求解」:
电脑上的 Stub Resolver
│ 把 QNAME/QTYPE 发给配置的 DNS 服务器
▼
路由器 / ISP / 公共 DNS / VPN DNS(递归解析器)
实现示例:
- Windows 的 DNS Client 服务(
svchost中,承担系统缓存与转发) - Linux 的 systemd-resolved、
resolv.conf指向的本地代理 - 应用层自带的迷你解析器(如某些程序直接发 UDP 53)
它从系统网络配置(DHCP 下发的 DNS、或手动设置)拿到「该把查询发给谁」。
最小例子 / 最小场景
Windows 上 ipconfig /all 看到的「DNS Servers: 192.168.x.x」,其实就是 Stub Resolver 被告知的上游地址。真正完成递归的往往是 192.168.x.x(路由器)背后的运营商服务器。
边界与易混淆点
- Stub Resolver 一般不递归:它发出「请帮我查到底」的请求(recursion desired 位置 1),由上游递归解析器替它跑完整条链。
- 多个程序可能绕过系统 Stub Resolver:浏览器 DoH、代理客户端、硬编码 DNS 的应用,都可能在系统 Stub 之外另起炉灶(见 browser-secure-dns、proxy-and-dns-separation)。
- Stub 也可能自带小缓存(如 systemd-resolved),所以「清了 Windows 缓存还不行」不代表问题在别处——还可能有应用层缓存(见 dns-caching-hierarchy)。
- Stub 看到的「DNS 服务器」常常只是 Forwarder,不是最终递归者(见 dns-forwarder)。