DNS Forwarder
DNS Forwarder 不一定自己访问根服务器,而是把查询继续转交给更上游的递归解析器;家庭路由器和企业内网常扮演这一角色。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 本地客户端: Stub Resolver
- 真正递归者: 递归 DNS 解析器
- 缓存链位置: DNS 缓存链
DNS Forwarder
一句话定义
DNS Forwarder(转发器) 是一种 DNS 服务器,它不(一定)自己从根开始递归,而是把收到的查询继续转交给上游的某个递归解析器。
核心机制 / 工作原理
转发链可以很长:
电脑 Stub Resolver
↓
家庭路由器 (Forwarder)
↓
ISP DNS (Forwarder / 递归)
↓
更上层递归解析器
所以你在 Windows 里看到的 DNS 服务器 192.168.x.x 通常只是 Forwarder;真正完成递归查询的可能是运营商服务器。
为什么需要 Forwarder
- 集中策略:企业内网统一走某个 DNS 做过滤/审计。
- 减少外联:内网缓存 + 统一出口。
- 访问控制:只让 Forwarder 出网,终端不能直接访问外网 53。
- 分流:特定域名发给特定上游(类似 Mihomo 的
nameserver-policy,见 mihomo-dns-redir-host-vs-fake-ip)。
最小例子 / 最小场景
/etc/resolv.conf 里写 nameserver 10.0.x.x,而 10.0.x.x 是一台把一切查询 forward 到 8.8.8.8 的 dnsmasq。终端以为 10.0.x.x 是解析器,实际递归发生在 8.8.8.8。
边界与易混淆点
- Forwarder ≠ 递归解析器:Forwarder 可以完全不碰根服务器;若上游也只转发,则最终必有一个节点真正递归。
- 排障时「我配的 DNS 是 X」常是误导——X 可能只是转发起点,真正的解析路径要看最末端的递归者。
- 透明重定向:某些网络会把所有 UDP 53 流量重定向到自己的 Forwarder,导致
nslookup example.com 8.8.8.8并不真的到达 8.8.8.8(见 dns-filtering-hijacking-pollution)。 - Forwarder 自己也可能有缓存,是缓存链中的一层(见 dns-caching-hierarchy)。