网络急诊室 问题排查

DNS 错误与 DNS 污染排查指南:解析失败、fake-ip 与安全 DNS 冲突

网络急诊室 DNS 专题:解释 DNS 污染、解析失败与 DNS 泄漏的成因,说明代理客户端的 fake-ip 机制、浏览器安全 DNS 冲突与 IPv6 影响,并给出 Windows 与 macOS 的分步排查方法。

首次发布
最后更新
内容类型
问题排查
阅读时间
约 4 分钟

快速判断

代理环境下的 DNS 问题主要有三类:域名被污染解析到错误地址、解析请求绕开了代理客户端、本地缓存了错误结果。处理顺序是:确认客户端的 DNS 功能已开启并正确接管解析,关闭浏览器的安全 DNS 等绕行设置,清除系统与浏览器 DNS 缓存,必要时关闭 IPv6 做对照。

Key Takeaways · 要点速览

  • DNS 问题的典型表现是部分网站打不开、报解析错误,而不是全部断网。
  • 浏览器的安全 DNS 可能绕开代理客户端的 DNS 处理,是常见冲突来源。
  • fake-ip 模式下看到 198.18 开头的地址属于正常现象,不是解析错误。
  • TUN 模式需要同时启用 DNS 接管,否则可能解析失败或发生 DNS 泄漏。
  • 修改 DNS 设置后要清除系统与浏览器缓存,否则会继续使用旧结果。

解决步骤

  1. 确认是否为 DNS 问题

    使用 nslookup 查询出问题的域名。无法解析、解析到明显异常的地址,或浏览器报 DNS 相关错误,说明问题在 DNS 层。

  2. 检查客户端 DNS 设置

    在代理客户端中确认 DNS 功能已启用;使用 TUN 模式时,确认 DNS 接管或 DNS 劫持选项已开启。

  3. 关闭浏览器安全 DNS

    在浏览器设置中关闭「使用安全 DNS」或「DNS over HTTPS」,让解析交由系统与代理客户端处理。

  4. 清除 DNS 缓存

    Windows 执行 ipconfig /flushdns;macOS 执行 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder;然后重启浏览器。

  5. 关闭 IPv6 做对照

    在客户端中关闭 IPv6 相关选项,或暂时在系统网络设置中禁用 IPv6,观察问题是否消失。

  6. 检查 hosts 与安全软件

    检查系统 hosts 文件是否存在该域名的旧记录,并暂时关闭可能接管 DNS 的安全软件或加速器进行对照。

症状:哪些表现指向 DNS

直接回答:代理环境下的 DNS 问题,通常不是「完全上不了网」,而是「部分网站打不开」或「浏览器提示找不到服务器地址」。它主要来自三个方面:解析结果被污染、解析请求绕开了代理客户端、本地缓存了错误结果。按照「确认是 DNS 问题、检查客户端 DNS、排除绕行、清缓存」的顺序处理,绝大多数情况都能解决。

常见症状:

  • 浏览器报 DNS_PROBE_FINISHED_NXDOMAIN、ERR_NAME_NOT_RESOLVED 等解析错误;
  • 某几个网站始终打不开,其他网站正常;
  • 开启 TUN 模式后部分网站无法访问;
  • 切换节点没有任何改善,但全局模式下偶尔能打开;
  • 偶发连接到错误的地址,出现证书错误或 TLS 握手失败。

快速判断:是不是 DNS 的问题

在终端中查询出问题的域名:

nslookup example.com
结果 含义
返回无法解析、超时 解析请求失败,DNS 层存在问题
返回 198.18 开头的地址 代理客户端的 fake-ip 机制,属于正常现象
返回明显异常的地址(如保留地址、与网站无关的地址) 可能遭遇 DNS 污染或 hosts 残留
返回正常的公网地址,但网站仍打不开 问题可能不在 DNS,回到 通用排查流程

原因:代理环境下 DNS 为什么容易出错

DNS 污染

域名解析请求在传输途中被干扰,返回错误的 IP 地址。如果需要代理的域名用本地 DNS 解析,就可能拿到被污染的结果,即使后续流量走了代理也会连接失败。

fake-ip 与 redir-host 两种处理方式

多数基于 Mihomo 内核的客户端支持两种 DNS 处理方式:

模式 原理 特点
fake-ip 先返回一个虚拟地址,真正的解析交给节点在远端完成 速度快,避免本地污染;部分需要真实 IP 的程序可能不兼容
redir-host 本地先完成真实解析,再按规则转发 兼容性好,但对本地 DNS 质量依赖更大

在 fake-ip 模式下,nslookup 看到虚拟地址是正常的,不要因此误判为污染。部分局域网设备、游戏或需要真实 IP 的软件,可以通过客户端的 fake-ip 过滤列表排除。

绕开客户端的解析

  • 浏览器安全 DNS:浏览器直接用加密 DNS 解析,完全绕开代理客户端,规则匹配和 fake-ip 都可能失效;
  • 安全软件或加速器:部分软件会接管系统 DNS;
  • TUN 模式未开启 DNS 接管:程序直接向外部 DNS 服务器发起解析,既可能失败,也会造成 DNS 泄漏。

缓存与残留

系统、浏览器都会缓存解析结果。修改设置后不清缓存,会继续使用旧的错误结果。hosts 文件中的旧记录优先级很高,也会导致解析到错误地址。

IPv6

当网络同时支持 IPv4 与 IPv6,而客户端或节点对 IPv6 支持不完整时,程序可能优先尝试 IPv6 地址并失败,表现为部分网站时好时坏。

分步排查

第一步:检查客户端 DNS 设置

确认客户端的 DNS 功能处于启用状态。使用 TUN 模式时,务必同时开启 DNS 接管或 DNS 劫持相关选项,设置位置以客户端界面为准,可参考 Clash Verge Rev TUN 模式设置。

第二步:关闭浏览器安全 DNS

  • Chrome / Edge:在「隐私和安全」设置中找到「使用安全 DNS」,关闭;
  • Firefox:在网络设置中关闭 DNS over HTTPS。

如果需要加密 DNS,可以在代理客户端中配置,避免两套机制冲突。

第三步:清除缓存

Windows:

ipconfig /flushdns

macOS:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

清除后重启浏览器,让浏览器内部的缓存也一并失效。

第四步:关闭 IPv6 对照

在客户端中关闭 IPv6 相关选项后重试。如果问题消失,说明与 IPv6 有关,可以保持关闭,或确认节点与客户端对 IPv6 的支持情况后再启用。

第五步:检查 hosts 与安全软件

  • Windows hosts 文件位于 C:\Windows\System32\drivers\etc\hosts;
  • macOS 与 Linux 位于 /etc/hosts。

删除与问题域名相关的旧记录(修改前先备份)。暂时关闭安全软件或加速器做对照。

症状与处理对照表

症状 可能原因 处理方式
浏览器报 NXDOMAIN 或无法解析 解析请求失败或被绕开 开启客户端 DNS,关闭浏览器安全 DNS
开 TUN 后部分网站打不开 未开启 DNS 接管 开启 DNS 劫持相关选项
解析到异常地址 DNS 污染或 hosts 残留 让代理域名由客户端解析,清理 hosts
网站时好时坏 IPv6 不兼容或缓存过期 关闭 IPv6 对照,清除缓存
出现证书错误 连接到了错误地址 先处理 DNS,再看 TLS
局域网设备或游戏异常 fake-ip 不兼容 加入 fake-ip 过滤列表

仍未解决怎么办

  1. 切换到全局模式并清除缓存后再试,确认是否为规则与 DNS 的组合问题;
  2. 将客户端的 DNS 设置恢复为默认值,重新导入订阅,排除自定义配置错误;
  3. 在另一台设备上使用同一订阅访问,判断是本机环境还是订阅配置的问题;
  4. 记录报错原文与 nslookup 结果,参考 DNS 错误怎么办 或联系服务商。

说明DNS 问题与 TLS 问题经常同时出现:解析到错误地址后,TLS 握手自然会失败。先解决 DNS,再看 TLS,顺序不要颠倒。

常见问题

什么是 DNS 污染?

DNS 污染是指域名解析请求在传输途中被干扰,返回了错误的 IP 地址,导致连接失败或连接到错误的服务器。使用代理时,应让需要代理的域名由代理客户端处理解析,避免被污染的结果影响连接。

nslookup 查到的地址是 198.18 开头,是不是被污染了?

通常不是。这是代理客户端 fake-ip 模式分配的虚拟地址,常见为 198.18.0.0/16 网段,以客户端配置为准。客户端会在内部把虚拟地址映射回真实域名,再交给节点处理。

关闭浏览器的安全 DNS 会降低安全性吗?

在使用代理客户端时,解析请求由客户端处理,客户端通常也支持加密 DNS。关闭浏览器自带的安全 DNS 是为了避免两套机制冲突,可以在客户端中配置加密 DNS 作为替代。

什么是 DNS 泄漏,需要担心吗?

DNS 泄漏是指本应通过代理处理的解析请求直接发给了本地运营商的 DNS。它可能导致解析到被污染的地址,也会暴露访问的域名。开启客户端的 DNS 接管并让代理域名由客户端解析,可以减少泄漏。