Technitium DNS 服务器没配转发器却还在转发?4 步找回递归解析
【免费下载链接】DnsServerTechnitium DNS Server项目地址: https://gitcode.com/GitHub_Trending/dn/DnsServer
你把内网客户端指向自己搭的 Technitium DNS 服务器,Settings 里 Forwarder(转发器)一项是空的,按理所有查询都应走根服务器做递归解析。可dig一跑,应答的来源 IP 却落在某家公共 DNS 上。转发器明明一个没填,请求是怎么跑到别人家的?
怎么确认请求根本没走递归解析
先用客户端的查询工具指向你的服务器发一条测试请求,例如dig @127.0.0.1 example.com。敲回车看应答的 Authority 段和实际响应来源 IP:如果这个 IP 不在你服务器的网段里,说明应答是被上游代答回来的,而不是本机递归出来的。
想更直观,可以把浏览器设成 DoH(基于 HTTPS 的 DNS)客户端、上游填你的服务器,再观察它真正连到哪台机器。请求路径一旦偏离本机,就基本可以断定有东西在背后"代答"。
🔎 从 Apps 列表定位 Advanced Forwarding 转发规则
转发器列表是空的,那转发到底从哪来?答案多半藏在已安装的 DNS 应用里。打开管理面板的 Apps 页,逐个看描述,重点找"Forwarding""转发"这类字眼。
定位到 Advanced Forwarding 后,打开它的配置(对应目录 Apps/AdvancedForwardingApp/),检查转发规则。如果里面存在"domains": ["*"]这种通配项,就等于告诉服务器"把全部域名都交给指定的公共 DNS",主配置里填没填转发器都不重要了。真正改写出路的,是这个应用,而不是 Settings。
🛠️ 4 步恢复预期的递归解析路径
- 关掉转发总开关 → 预期验证结果:在 Advanced Forwarding 配置里把
enableForwarding设为false,保存后重新dig测试,应答来源应回到本机网段,说明应用已不再代答。 - 删掉通配转发规则 → 预期验证结果:若想保留该应用但只转发少数域名,去掉
"*"这条规则、只留明确域名;再dig一个未配置的域名,它应走根服务器递归而非被转发。 - 彻底卸载该应用 → 预期验证结果:如果根本用不到条件转发,直接在 Apps 页卸载 Advanced Forwarding,重启服务后
dig任意域名,确认应答全部来自本机递归。 - 用日志核对解析路径 → 预期验证结果:查看查询日志,确认各请求的上游字段为空或指向根服务器,没有异常外发记录。
部署后防止再次被意外转发的检查清单
- 装任何 DNS 应用前,先读它的 README,确认它会不会改动请求处理路径。
- 转发类应用的
domains字段禁止出现"*",除非你确实想全量转发。 - 定期翻一遍 Apps 列表,核对每个已装应用的用途,停用不再需要的。
- 每次变更后用
dig抽测几个域名,确认应答来源符合预期。 - 开启查询日志并保留一段记录,便于事后回溯异常转发。
回到根因:Technitium DNS 的转发行为不只由 Settings 决定,已安装的应用同样能改写解析路径。排查时先看 Apps 列表、再查通配转发规则,递归解析自然就回来了。
【免费下载链接】DnsServerTechnitium DNS Server项目地址: https://gitcode.com/GitHub_Trending/dn/DnsServer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考