Stub Resolver

Stub Resolver 是设备本地的轻量 DNS 客户端,通常不自己从根递归查询,而是把请求交给一个递归解析器完成。

#type / concept #status / growing #tech / network #protocol / dns

[!info] related notes

Stub Resolver

一句话定义

Stub Resolver(存根解析器) 是运行在设备本地的轻量 DNS 客户端,它通常不自己从根服务器逐级递归,而是把查询交给一个递归解析器去完成。

核心机制 / 工作原理

Stub Resolver 的职责是「发起 + 接收」,而不是「递归求解」:

电脑上的 Stub Resolver
        │  把 QNAME/QTYPE 发给配置的 DNS 服务器

路由器 / ISP / 公共 DNS / VPN DNS(递归解析器)

实现示例:

  • Windows 的 DNS Client 服务(svchost 中,承担系统缓存与转发)
  • Linux 的 systemd-resolvedresolv.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-dnsproxy-and-dns-separation)。
  • Stub 也可能自带小缓存(如 systemd-resolved),所以「清了 Windows 缓存还不行」不代表问题在别处——还可能有应用层缓存(见 dns-caching-hierarchy)。
  • Stub 看到的「DNS 服务器」常常只是 Forwarder,不是最终递归者(见 dns-forwarder)。
创建于 2026/7/31 更新于 2026/7/31