文章
代理 DNS 到底在哪里解析?节点、目标与浏览器三层说明
使用代理客户端时,DNS 问题常被简化为“换一个 DNS”。但需要解析的对象可能不同:有时是机场节点的域名,有时是目标网站,还有时是浏览器自己发起的加密 DNS 请求。先认清失败发生在哪一层,修改才有依据。
一次访问可能有三类解析
节点解析:客户端需要找到服务入口。如果入口写成域名,连接代理之前可能就要解析它。
目标解析:浏览器或客户端需要处理你要访问的网站。根据配置,域名可能在本地解析,也可能交给远端处理。
解析服务自身的引导:当 DNS 服务也用域名表示时,配置还需要解决如何找到该服务的问题。若依赖关系绕回一个尚未建立的连接,就可能出现循环依赖。
mihomo 的 DNS 文档分别提供节点域名解析与直连出站解析等设置。字段名称相似,不代表用途相同;不要将另一种内核的字段直接搬来使用。
用症状定位,而不是先改所有设置
| 观察到的现象 | 优先查看 | 尚不能直接断定 |
|---|---|---|
| 所有节点均在连接前解析失败 | 节点域名、引导解析、本地网络 | 所有节点同时停机 |
| 节点可连接,部分网站名称解析失败 | 目标 DNS、分流和应用设置 | 整个机场不可用 |
| 只有一个浏览器失败 | 浏览器代理与加密 DNS 选项 | 系统 DNS 一定错误 |
| 解析成功但连接超时 | 后续地址选择、端口与路由 | DNS 正常就代表网络全通 |
表格用于确定下一步检查,不是依据单一症状完成诊断。日志还需要与发生时间和应用请求对应。
DoH 解决的边界
DNS over HTTPS 将 DNS 消息放入 HTTPS 传输,标准见 RFC 8484。它改变的是客户端与解析服务之间的传输方式,不会自动让全部应用流量进入机场节点,也不等于匿名访问。
浏览器启用 DoH 后,部分解析行为可能与系统不同。排查时记录浏览器、系统和客户端各自的设置;不要看到三个设置入口就把它们同时替换为同一个地址。
可恢复的排查步骤
- 记录错误域名属于节点、目标网站还是 DNS 服务。
- 保存当前配置,查看客户端日志中对应时间的错误。
- 用同一应用测试两个不同目标,判断问题是否局限于一个域名。
- 如需调整,只改变与该层相关的一项,重新执行原测试。
- 没有改善则还原,并保留结果,避免堆叠无法解释的改动。
普通系统查询命令通常反映系统解析路径,未必等于浏览器 DoH 或远端解析结果。所以“命令能解析”不能单独证明浏览器使用的 DNS 路径也正常。
怎样整理有效求助信息
保留失败阶段、客户端版本、目标域名和脱敏错误即可;不要把完整订阅地址、认证字段或全部浏览记录贴进公开讨论。说明是否只在某个网络出现,比一句“DNS 坏了”更容易复现。