L03 技术知识 第 03 站 / 共 5 站

代理 DNS 与分流:远程解析、Fake-IP 和泄漏怎么判断

用可重复的对照分清系统 DNS、浏览器安全 DNS、代理内核解析与服务端解析,解释 Fake-IP、IPv6 和解析循环,并给出 DNS 泄漏诊断、修复和恢复步骤。

发布
阅读
约 6 分钟
本文目录 9 节

快速回答 代理 DNS

网站流量走代理,不代表 DNS 查询一定经过同一条路径。应分别确认谁发起解析、查询交给哪台解析器、查询连接如何路由,再用同一域名、客户端日志和受控对照检查;DNS 测试页显示的国家或解析器名称不能单独证明泄漏。

“节点延迟正常,域名却打不开”常发生在解析链路和访问链路不一致时。DNS 负责把域名变成可连接的地址,代理规则再决定连接去哪里;有的规则还需要先拿到解析结果。要解决这类问题,先确定失败发生在哪一步,再改相应设置。

开始前保存当前配置,并记下客户端与内核版本、当前模式、本地代理端口、一个失败域名和一个正常域名。整个过程中固定同一节点,每次只改一项。

一次访问里,可能有三次不同的解析

解析对象 为什么要查 常见处理位置
代理节点域名 客户端要先找到入口服务器 系统 DNS 或内核专用的节点域名解析器
DNS 服务域名 使用域名形式的 DoH/DoT 前,要先找到解析服务器 引导解析器,即 bootstrap DNS
目标网站域名 决定目标地址,或辅助规则匹配 应用、内核 DNS、代理服务端等

这三类查询不能混成一条。“先通过代理访问 DNS,代理节点又必须由同一个 DNS 解析”会形成循环:还没连上节点就要求使用节点。mihomo 的 proxy-server-nameserver、引导 DNS 以及其他内核的相应机制,就是为区分这些依赖准备的。具体字段必须按所用内核版本核对,不能直接把 mihomo YAML 粘贴进 sing-box JSON。

本地解析、远程解析与加密 DNS 的区别

  • 本地解析:应用或本机内核取得目标 IP,再发起连接。查询可能走系统、局域网或单独配置的解析器。
  • 代理端解析:应用把域名交给代理端,而不是先取得 IP。若该代理端就是本机客户端,之后仍由本机内核决定解析方式;只有继续把域名交给远端出站,才可能由远端解析。
  • DoH/DoT:给 DNS 查询本身加密。它们不自动规定走直连还是代理,也不会让解析服务商看不到所查询的域名。
  • Fake-IP:内核先返回虚拟 IP 并保存域名映射,后续连接再结合规则处理。虚拟 IP 不是目标网站的公网地址。

因此,socks5h 的“代理端解析”与“查询一定从境外出口发出”不是同一个承诺。你还必须看本地代理内核使用了什么 DNS 和出站。

第一步:确认请求确实进入代理

打开客户端连接记录,访问失败域名,查看是否出现目标域名或目标连接,以及命中的规则和出站。没有记录时,先处理 系统代理与流量接管,此时换 DNS 未必触及问题。

浏览器的“安全 DNS”、Android 私人 DNS、应用自带 DoH 可能使用自己的解析通道。普通端口 53 的 DNS 接管无法自动理解所有加密 DNS 请求;它们的连接是否被 TUN 接管,又是另一个路由问题。诊断时可以临时停用其中一项,对照后恢复原设置,避免把多套解析结果混在一起。

第二步:做同一域名的解析对照

系统查询可以先用以下命令;example.com 是可替换的公开测试域名:

nslookup example.com

记录服务器、返回地址或超时。这个结果只说明该命令的解析路径,不能代表浏览器或代理内核也在用它。

内核若已经启用独立 DNS 监听,还可直接向它的实际地址、端口查询,并与系统结果分别记录;具体命令见 DNS 故障排查中的监听验证。这一步验证的是内核能否回答查询,查询经哪个出站发送仍需查内核配置和日志。

若客户端提供 SOCKS5 或 mixed 端口,可以对照下面两次请求。把 7890 换成客户端实际监听的端口;Windows PowerShell 使用 curl.exe,防止命中同名别名。

curl -q --noproxy localhost --proxy socks5://127.0.0.1:7890 --connect-timeout 10 --max-time 20 -I https://example.com
curl -q --noproxy localhost --proxy socks5h://127.0.0.1:7890 --connect-timeout 10 --max-time 20 -I https://example.com

第一条让 curl 本地解析目标,第二条把域名交给 SOCKS 代理端。--noproxy localhost 覆盖环境中的绕过列表,以上测试目标是公开网站,不是 localhost。两者均使用相同节点和 URL,并保留 HTTPS 证书验证。若目标不接受 HEAD 请求,去掉 -I 重新对照,不要把 HTTP 方法错误误判为 DNS 故障。

对照结果 可以得出的线索 仍需确认
本地解析失败,交域名给代理端成功 应用本地解析路径可能有问题 内核的解析器、规则及日志是否符合预期
两条都无法连到 127.0.0.1 本地端口未监听或填错 内核状态、端口、是否提供 SOCKS5
两条都报代理连接或认证失败 可能尚未到目标解析阶段 先排查节点与认证
两条都收到 HTTP 响应 这一目标的基本解析与访问成立 浏览器专有设置、缓存、IPv6 或其他失败域名

不要直接把网站 IP 粘到 HTTPS 地址栏作最终判断:证书名、SNI、虚拟主机和 CDN 选择都可能变化,得到的不是同一次访问。

第三步:检查 DNS 与规则是否一致

  1. 看目标查询发给谁。 在内核 DNS 日志或配置中确认目标域名的解析器与策略。代理域名和本地域名可以按设计使用不同解析器。
  2. 看查询连接走哪里。 “配置了境外 DNS 地址”不代表查询经代理。mihomo 可通过 DNS 指定代理或相关路由选项处理,但需要同时解决节点域名的引导解析。
  3. 看是否存在映射脱节。 Fake-IP 模式下,DNS 返回虚拟 IP 后,连接应回到保存该映射的内核。多个代理同时运行、切换配置后沿用旧缓存,都可能造成失配。
  4. 核对 A 与 AAAA 路径。 IPv4 正常而 IPv6 失败时,要比较两类地址的接管和出站。仅收到 AAAA 记录并不能证明泄漏;只在故障定位需要时暂时作 IPv4 对照。
  5. 应用改动后重试。 重载当前配置,关闭旧连接,必要时清理受影响的 DNS 缓存,再验证同一域名。保留正常域名作为对照。

若是公司内网、打印机或 .lan 域名,只能由局域网 DNS 回答时,应保留对应的直连解析策略;把所有查询一律交给公共解析器,反而会破坏这些功能。

怎样判断 DNS 泄漏

先写下预期,例如“代理域名的 DNS 查询应经选定节点访问指定解析器;局域网域名由本地解析”。只有违背这个预期的查询,才有明确的泄漏含义。

第三方 DNS 检查页可以提供解析器线索,但其显示位置可能来自 IP 数据库、任播节点或转发解析器。它无法覆盖其他应用、历史缓存、所有 IPv6 流量,也无法单独证明查询经过哪条隧道。应结合内核日志、受控域名查询与开启/关闭特定设置的对照;需要更强证据时,在自己控制的网络接口上观察实际查询流量。

不要公开包含完整订阅地址、节点认证或私人浏览域名的日志。提交排障信息时保留时间、错误类型、查询路径和脱敏目标即可。

验收与恢复

修复完成后,失败域名应连续可访问,连接记录应显示预期规则,内网域名也应仍可用;退出客户端后,系统应恢复正常直连解析。若新设置让更多网站失败,恢复备份配置和临时更改的浏览器 DNS 设置,重新从“请求是否进入内核”开始检查。

已有明确 DNS 报错时,继续阅读 代理 DNS 解析失败排查;需要理解系统代理、规则、全局和 TUN 的关系时,进入 代理模式详解。

常见问题

开了系统代理,DNS 就一定在远端解析吗?
不一定。系统代理通常只让支持该设置的应用提交 HTTP 或 SOCKS 连接;应用可能提前在本地解析,浏览器也可能使用自己的安全 DNS。最终还取决于代理内核的 DNS 配置和出站路由。
DNS 测试页显示本地运营商就一定是泄漏吗?
要先明确预期。如果这类查询原本应该随代理走,显示运营商是排查线索;如果规则有意让直连域名使用本地 DNS,则可能符合设计。还需要结合查询来源、日志和重复对照判断。
Fake-IP 返回 198.18 开头的地址,是 DNS 被污染了吗?
不一定。Fake-IP 会给域名分配虚拟地址,代理内核保存映射并在连接时恢复域名。应确认该地址来自预期的内核 DNS,以及后续流量是否仍进入同一内核;离开内核路径后直接连接虚拟地址可能失败。

参考资料

  1. mihomo DNS 配置

    MetaCubeX wiki.metacubex.one

  2. mihomo TUN:DNS 接管与路由

    MetaCubeX wiki.metacubex.one

  3. sing-box DNS 配置

    SagerNet sing-box.sagernet.org

  4. Oblivious DNS over HTTPS:普通 DoH 的可见范围

    Cloudflare developers.cloudflare.com

回到顶部

下一站阅读

  1. 上一篇知识 L03 代理协议怎么选?协议、TLS、传输与兼容性一次看懂
  2. 当前位置 L03 代理 DNS 与分流:远程解析、Fake-IP 和泄漏怎么判断
  3. 推荐下一篇 L03 系统代理、规则、全局和 TUN:怎么组合与恢复网络