文章

代理 DNS 到底在哪里解析?节点、目标与浏览器三层说明

使用代理客户端时,DNS 问题常被简化为“换一个 DNS”。但需要解析的对象可能不同:有时是机场节点的域名,有时是目标网站,还有时是浏览器自己发起的加密 DNS 请求。先认清失败发生在哪一层,修改才有依据。

一次访问可能有三类解析

节点解析:客户端需要找到服务入口。如果入口写成域名,连接代理之前可能就要解析它。

目标解析:浏览器或客户端需要处理你要访问的网站。根据配置,域名可能在本地解析,也可能交给远端处理。

解析服务自身的引导:当 DNS 服务也用域名表示时,配置还需要解决如何找到该服务的问题。若依赖关系绕回一个尚未建立的连接,就可能出现循环依赖。

mihomo 的 DNS 文档分别提供节点域名解析与直连出站解析等设置。字段名称相似,不代表用途相同;不要将另一种内核的字段直接搬来使用。

用症状定位,而不是先改所有设置

观察到的现象 优先查看 尚不能直接断定
所有节点均在连接前解析失败 节点域名、引导解析、本地网络 所有节点同时停机
节点可连接,部分网站名称解析失败 目标 DNS、分流和应用设置 整个机场不可用
只有一个浏览器失败 浏览器代理与加密 DNS 选项 系统 DNS 一定错误
解析成功但连接超时 后续地址选择、端口与路由 DNS 正常就代表网络全通

表格用于确定下一步检查,不是依据单一症状完成诊断。日志还需要与发生时间和应用请求对应。

DoH 解决的边界

DNS over HTTPS 将 DNS 消息放入 HTTPS 传输,标准见 RFC 8484。它改变的是客户端与解析服务之间的传输方式,不会自动让全部应用流量进入机场节点,也不等于匿名访问。

浏览器启用 DoH 后,部分解析行为可能与系统不同。排查时记录浏览器、系统和客户端各自的设置;不要看到三个设置入口就把它们同时替换为同一个地址。

可恢复的排查步骤

  1. 记录错误域名属于节点、目标网站还是 DNS 服务。
  2. 保存当前配置,查看客户端日志中对应时间的错误。
  3. 用同一应用测试两个不同目标,判断问题是否局限于一个域名。
  4. 如需调整,只改变与该层相关的一项,重新执行原测试。
  5. 没有改善则还原,并保留结果,避免堆叠无法解释的改动。

普通系统查询命令通常反映系统解析路径,未必等于浏览器 DoH 或远端解析结果。所以“命令能解析”不能单独证明浏览器使用的 DNS 路径也正常。

怎样整理有效求助信息

保留失败阶段、客户端版本、目标域名和脱敏错误即可;不要把完整订阅地址、认证字段或全部浏览记录贴进公开讨论。说明是否只在某个网络出现,比一句“DNS 坏了”更容易复现。

若出现 IPv4 能用而 IPv6 异常,接着看双栈路径检查;如果解析后仍超时,使用访问超时判断流程。