科技熊工作室科技熊工作室 · 攻略

OpenClash DNS泄漏怎么解决:按链路排查、修复与验证

更新于 2026-10-27 · kjxclub.shop

简答:先不要看到 198.18.x.x 就判定 DNS 泄漏:OpenClash 的 Fake-IP 模式本来就可能返回 198.18.0.1/16。正确做法是确认客户端的 DNS 请求是否经过路由器、dnsmasq 和 OpenClash,再排查 IPv6、浏览器安全 DNS、Android 私人 DNS 及其他本地 DNS 服务绕过。

定义:OpenClash DNS 泄漏,是指客户端的域名解析请求绕过预期的 OpenClash DNS 链路,直接发送给运营商、客户端手动指定的 DNS 或其他未纳入策略的解析服务。

先试这一步:确认是不是把 Fake-IP 当成了泄漏

如果检测结果显示某个域名返回 198.18.x.x,这通常只能说明 OpenClash 正在使用 Fake-IP 地址池,不能单独证明 DNS 泄漏。OpenClash 当前默认配置文件将 Fake-IP 地址段写为 198.18.0.1/16,同时支持 fake-ip 和 redir-host 两种增强模式,具体以当前生成配置为准。可查看OpenClash 默认配置核对字段。

  1. 在路由器后台确认 OpenClash DNS 功能处于启用状态。
  2. 确认局域网设备的首选 DNS 是路由器 LAN 地址,而不是外部 DNS 地址。
  3. 分别测试普通域名和代理相关域名,不要只看一次在线检测结果。
  4. 只有当客户端实际把 DNS 请求发往路由器之外,或 OpenClash 未接收到该请求时,才进入泄漏修复流程。
现象更可能的含义下一步
返回 198.18.x.xFake-IP 正常工作检查请求路径,不要直接判定泄漏
客户端 DNS 显示外部地址客户端手动 DNS、浏览器或应用绕过关闭覆盖设置并重新获取网络配置
IPv4 正常、IPv6 检测异常IPv6 RA、DHCPv6 或 IPv6 DNS 未纳入策略暂时关闭 IPv6 验证,或补齐 IPv6 代理和 DNS 配置
改完后只有部分设备正常设备缓存或设备级 DNS 设置不同逐台清缓存并检查 DNS 配置

按正确链路逐层检查

理想链路应是:客户端 → 路由器 LAN 地址或 dnsmasq → OpenClash DNS 监听端口 → 配置中的上游 DNS。OpenWrt 默认使用 dnsmasq 提供 DNS 转发和 DHCP 服务,配置主要位于 /etc/config/dhcp;可参考OpenWrt dnsmasq 文档。

  1. 检查客户端:确认设备通过 DHCP 获得路由器地址作为 DNS。删除手动填写的 DNS,关闭会覆盖系统解析的浏览器或应用设置后重新连接 Wi-Fi。
  2. 检查 dnsmasq:确认 dnsmasq 没有继续直接使用 WAN 下发的 DNS 作为最终解析出口,也没有被其他 DNS 服务接管 53 端口。
  3. 检查 OpenClash:确认 DNS 监听地址、增强模式、上游 nameserver 和本地 DNS 劫持设置彼此匹配。OpenClash 的配置覆写文件明确区分 Dnsmasq Redirect、Firewall Redirect 和禁用三种 DNS 重定向方式,详见OpenClash 配置覆写参数。
  4. 检查上游:不要同时让多个组件各自承担最终解析。SmartDNS、AdGuard Home、mosdns 与 OpenClash 共存时,先确认谁监听 53 端口,其他服务改用明确的备用端口,再让 OpenClash 只连接一个清晰的上游链路。

如果可以 SSH 登录路由器,可分别执行以下基础查询,比较不同入口返回的服务器信息;其中地址请替换为你的路由器 LAN 地址和实际 DNS 监听地址:

两次查询结果不能单独证明“没有泄漏”,但可以帮助判断请求是否经过预期的本地 DNS 入口。若客户端查询结果与路由器本地查询明显不同,优先检查客户端自定义 DNS、浏览器安全 DNS或应用内置解析。

OpenClash DNS 劫持方式怎么选

OpenClash 当前源码将 DNS 重定向分为 Dnsmasq Redirect 和 Firewall Redirect,并保留禁用选项。不要只按别人的截图照搬,先确认你的网络结构是主路由、旁路由还是多 DNS 服务共存。

环境优先检查处理思路
OpenClash 运行在主路由客户端 DHCP、dnsmasq 和 53 端口让客户端统一使用路由器 DNS,再选择一种重定向方式
OpenClash 运行在旁路由主路由 DHCP、网关和 DNS 是否仍指向主路由确认客户端的 DNS 请求确实到达旁路由
SmartDNS、AdGuard Home 或 mosdns 占用 53监听端口和转发方向避免两个服务同时抢占 53 端口,明确唯一入口
使用 Fake-IPFake-IP 过滤列表和非 Fake-IP 域名只对确有兼容性需求的域名加入过滤,修改后重新生成配置
使用 Redir-Host域名解析结果与规则分流确认解析结果没有被客户端或其他 DNS 服务提前固定

OpenClash 的配置界面还包含 Fake-IP 过滤模式、上游 DNS、Fallback-Filter、IPv6 DNS 和 DNS 重定向等独立选项。修改前建议导出当前配置或保存截图;每次只改一组设置,验证失败时先恢复上一组设置。

IPv6、浏览器和手机设置造成的绕过

OpenWrt 支持 DHCPv6 客户端、RA/DHCPv6 服务和 IPv6 防火墙,因此即使 IPv4 链路正常,IPv6 仍可能形成另一条 DNS 路径。可参考OpenWrt IPv6 配置文档检查 RA、DHCPv6 和 IPv6 DNS 通告。

  1. 在一台测试设备上暂时关闭 IPv6,重新检测。如果问题消失,重点检查 IPv6 DNS 通告、OpenClash IPv6 DNS 和 IPv6 代理模式。
  2. 如果不需要 IPv6,先在路由器或局域网 DHCP 配置中关闭相关通告,再重连设备验证。
  3. 如果需要 IPv6,必须让 IPv6 DNS 和 IPv6 流量进入同一套可验证的策略,不要只修 IPv4。
  4. Android 检查“私人 DNS”。如果设备被设置为指定主机名,它可能不再使用路由器下发的普通 DNS。
  5. Chrome 检查“使用安全 DNS”。Google 说明 Chrome 的安全 DNS 可使用加密解析,并允许自定义服务商;排查时可暂时关闭该功能,再与开启状态对比,相关路径见Chrome Android 安全设置。

修改后如何验证与回滚

  1. 保存当前 OpenClash、DHCP、IPv6 和其他 DNS 服务配置。
  2. 只修改一个变量,例如先关闭客户端手动 DNS,再测试;不要同时切换 Fake-IP、IPv6 和 DNS 劫持。
  3. 重启或重新加载 OpenClash、dnsmasq 以及实际参与解析的 DNS 服务。
  4. 让测试设备断开并重新连接网络,清理系统 DNS 缓存;浏览器也要完全退出后重新打开。
  5. 分别在路由器、Windows/macOS 和手机上查询同一域名,记录 DNS 服务器、返回地址和是否出现超时。
  6. 使用至少两个网络环境或两台设备复测。若只有某一台设备异常,优先处理该设备的浏览器、VPN、私人 DNS 或应用级设置。

回滚标准是:恢复上一次保存的配置,重新加载相关服务,并确认局域网设备可以正常解析。不要为了让某个检测网站显示“通过”而永久关闭 IPv6 或删除所有 DNS 分流规则;应以实际网络结构和可重复的查询结果为准。

安全提醒

常见问题

看到 198.18.0.1 就是 DNS 泄漏吗?

不是。它可能是 Fake-IP 地址池中的返回地址。需要继续确认 DNS 请求实际发往哪里,以及该请求是否绕过了 OpenClash。

关闭 Fake-IP 能彻底解决泄漏吗?

不能。Fake-IP 只是解析模式,真正泄漏可能来自客户端手动 DNS、IPv6、浏览器安全 DNS或其他本地 DNS 服务。

为什么路由器测试正常,手机测试仍然异常?

手机可能启用了私人 DNS、浏览器安全 DNS、应用内置 DNS 或缓存。先关闭这些覆盖项,重新连接 Wi-Fi 后再测。

主路由和旁路由场景有什么不同?

主路由通常负责 DHCP、网关和 DNS;旁路由则可能只负责部分流量。旁路由场景必须确认客户端的 DNS 请求确实到达运行 OpenClash 的设备。

SmartDNS、AdGuard Home 和 mosdns 能否同时使用?

可以共存,但必须明确监听端口和转发方向。先确定谁是唯一的最终 DNS 入口,避免多个服务同时占用 53 端口或互相循环转发。

是否应该直接关闭 IPv6?

如果当前没有 IPv6 使用需求,可以暂时关闭作为诊断手段;如果依赖 IPv6,则应补齐 IPv6 DNS 和流量策略,而不是把临时关闭当成最终方案。

常见问题

看到 198.18.0.1 就是 DNS 泄漏吗?

不是。198.18.0.1/16 可能是 OpenClash Fake-IP 地址池,必须结合实际 DNS 请求路径判断。

关闭 Fake-IP 能彻底解决泄漏吗?

不能。泄漏也可能来自客户端手动 DNS、IPv6、浏览器安全 DNS或其他 DNS 服务。

为什么路由器正常,手机仍然检测异常?

手机可能启用了私人 DNS、浏览器安全 DNS或应用级解析,也可能仍在使用旧缓存。

旁路由场景如何确认请求经过 OpenClash?

检查客户端 DHCP 获得的 DNS 地址,并在旁路由与客户端分别查询同一域名,对比请求入口和结果。

SmartDNS、AdGuard Home 和 mosdns 能一起运行吗?

可以,但要明确 53 端口的唯一入口、各服务监听端口及转发方向,避免端口冲突或循环转发。

是否应该永久关闭 IPv6?

不一定。关闭 IPv6可以作为定位步骤;如果业务依赖 IPv6,应配置完整的 IPv6 DNS 和流量策略。

相关阅读

参考资料

  1. OpenClash 默认配置文件
  2. OpenClash 配置覆写参数
  3. OpenClash DNS 重定向与服务脚本
  4. OpenWrt Dnsmasq DHCP 与 DNS 文档
  5. OpenWrt IPv6 配置文档
  6. Google Chrome Android 安全 DNS 设置