跳到主要内容

DNS 泄漏是什么?怎么检测和修复

DNS 泄漏指流量走了节点、域名查询却直接发给了本地运营商 DNS,网站照样能开,所以很难察觉。本文给出三种两分钟内可完成的检测方法、五条常见泄漏路径对照表,以及 Clash Verge Rev、Mihomo Party、Shadowrocket 等客户端的逐步修复方法。

发布于 约 5 分钟 · 1735 字进阶
DNS 泄漏检测与修复封面

直接答案

DNS 泄漏是代理已连上、域名查询却仍发给本地运营商 DNS 的现象。检测方法:在客户端连接面板里看是否有大量去往运营商 DNS 的 53 端口直连,或用 nslookup 看系统解析结果是否为 198.18 开头的 fake-ip 地址。修复只有一个方向:让客户端接管全部 DNS,开启 fake-ip 模式、切换到 TUN 并劫持 53 端口、关闭浏览器安全 DNS 与系统私人 DNS。

DNS 泄漏指的是:代理已经连上,网页流量也确实走了节点,但域名查询这一步仍然直接发给了本地运营商 DNS。它不会让网站打不开,所以很多人用了一年机场都没发现。检测只需要两分钟:看客户端连接面板里有没有去往运营商 DNS 的 53 端口直连,或者用 nslookup 看系统解析结果是不是 fake-ip 地址。修复思路只有一个,让客户端接管全部 DNS 查询。本文和 DNS 基础教程 的分工是:那篇讲概念,这篇只讲泄漏从哪里漏、怎么证明、怎么堵。

泄漏会带来什么实际后果

很多人觉得「反正网站能开,漏了就漏了」。真正的麻烦有两个:

  • 隐私层面:运营商 DNS 能看到你查询过的全部域名,等于访问记录被完整记录了一份。
  • 一致性层面:流媒体与 AI 服务会比对「DNS 查询来源地区」与「访问 IP 地区」。查询在国内完成、访问从日本出口,两者不一致就可能被判定为异常,表现为地区不符、验证码循环或 ChatGPT 网络环境异常提示。

第二点才是机场用户更该在意的。不少「节点明明能开网页却用不了 AI」的案例,根源就是 DNS 泄漏,而不是节点本身。

五条常见泄漏路径

泄漏路径典型表现判断方法处理
系统代理模式下应用自行解析连接面板只见 TCP 连接,无 DNS 记录用 nslookup 看结果是否为真实 IP切换到 TUN 模式
浏览器开启「安全 DNS」(DoH)浏览器查询绕过客户端直达 DoH 服务器浏览器设置中查看安全 DNS 开关关闭浏览器安全 DNS
Android 私人 DNS / iOS 描述文件 DNS系统级 DoT 直连系统网络设置中查看关闭或删除
客户端 redir-host 模式用国内 nameserver 明文解析面板可见大量 udp 53 → 运营商 DNS查看 dns 段 enhanced-mode改为 fake-ip,nameserver 用 DoH
IPv6 DNS 漏网面板中出现 IPv6 地址的 DNS 查询ipconfig /all 或 scutil --dns 查看 IPv6 DNS关闭 IPv6 或由客户端接管

三种检测方法

方法一:客户端连接面板

Clash Verge Rev、Mihomo Party 的「连接」页可以按端口筛选。输入 53,如果看到持续新增的 udp 连接,目标是 114.114.114.114、223.5.5.5 这类地址或运营商网关,规则列显示 DIRECT,就是泄漏。正常状态下,DNS 查询不应该以独立连接的形式出现在面板里,或者只出现去往 DoH 服务器的少量 HTTPS 连接。

方法二:命令行对比

# Windows PowerShell:先指定公共 DNS 解析,再用系统默认解析
Resolve-DnsName chatgpt.com -Server 223.5.5.5 | Select-Object Name, IPAddress
Resolve-DnsName chatgpt.com | Select-Object Name, IPAddress
# macOS / Linux
nslookup chatgpt.com 223.5.5.5
nslookup chatgpt.com

读法:第二条命令返回 198.18.x.x 这样的 fake-ip 段地址,说明系统查询已被客户端接管;返回真实公网 IP 且与第一条一致,说明系统查询没有经过客户端,存在泄漏风险。

方法三:在线泄漏检测

在节点开启状态下访问 DNS 泄漏检测类网站做「扩展测试」。结果列表里出现中国运营商名称即为泄漏,全部显示为节点所在地区或 DoH 服务商才算干净。这个方法最直观,但只能测浏览器这一条路径,终端与其他应用仍需用前两种方法确认。

ℹ️ 说明

fake-ip 模式下,在线检测可能显示 DoH 服务商(如 Cloudflare)所在地区而非节点地区,这是正常的,不算泄漏。只要没有国内运营商出现就行。

逐步修复

  1. 启用客户端内置 DNS,模式改为 fake-ip。 在配置覆写或 Merge 中写入下面的最小配置,保存后重新载入订阅。
  2. 从系统代理切换到 TUN 模式,并开启 DNS 劫持。 系统代理只能接管「主动读取代理设置的应用」,堵不住 DNS。TUN 配合 dns-hijack 才能把所有 53 端口流量拉回客户端。
  3. 关闭浏览器安全 DNS。 Chrome / Edge 在「设置 → 隐私和安全 → 安全 → 使用安全 DNS」,Firefox 在「网络设置 → 启用基于 HTTPS 的 DNS」,全部关闭。
  4. 关闭系统级加密 DNS。 Android 在「网络 → 私人 DNS」选「关闭」;iOS 检查「设置 → 通用 → VPN 与设备管理」里有没有 DNS 描述文件。
  5. 处理 IPv6。 最省事的做法是在路由器或网卡上暂时关闭 IPv6;需要保留的,在客户端开启 ipv6: true 让其一并接管。
  6. 重新用方法一和方法二检测,直到面板里不再出现去往运营商 DNS 的直连。
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
  fallback:
    - https://1.1.1.1/dns-query
tun:
  enable: true
  stack: mixed
  auto-route: true
  dns-hijack:
    - any:53

完整的 DNS 段写法与每个字段的含义见 Clash / Mihomo DNS 设置详解,TUN 开启后没有网络的处理见 TUN 模式不生效怎么办。

各客户端的堵漏位置

客户端DNS 接管方式操作位置
Clash Verge RevTUN + DNS 覆写设置 → 系统设置 → TUN 模式;设置 → DNS 覆写
Mihomo PartyTUN + 内置 DNS设置 → TUN;设置 → DNS
Clash Meta for AndroidVPN 模式自动接管设置 → 覆写 → DNS,选择劫持模式
Shadowrocket内置 DNS 覆写设置 → DNS 覆写,填 DoH 地址
Stash内置 DNS 与 fake-ip设置 → DNS 与 fake-ip 开关
sing-box / Hiddifydns 段 + tun 入站配置文件 dns.servers 与 inbounds.tun

⚠️ 注意

TUN 模式与其他 VPN 软件、部分安全软件的虚拟网卡会冲突,表现为开启后完全断网。先退出其他 VPN 再开 TUN,仍不行时把 stack 从 mixed 换成 gvisor 或 system 试一次。

预防:选订阅时就把 DNS 考虑进去

泄漏能不能从根上避免,一半取决于订阅配置是否规范。做 Clash 机场推荐或 Clash Meta 机场推荐时,我们会把「订阅自带 dns 段且默认 fake-ip」作为一项加分:导入即用,用户不必自己改。老牌 IEPL 线路的 宇宙云 与多入口容灾的 灯塔加速 在这方面比较规范;更多符合条件的品牌可以在 稳定机场 分类里对比。日常使用建议每次换客户端、升级大版本或更换路由器后,重新跑一次方法二,前后不到一分钟。其他 DNS 异常的处理方法集中在 DNS 异常栏目。

总结

  • DNS 泄漏不影响能不能打开网站,影响的是隐私与出口地区一致性,流媒体和 AI 工具的地区误判常由它引起
  • 最可靠的检测方法是看客户端连接面板:有去往运营商 DNS 的 53 端口 DIRECT 连接就是泄漏
  • 系统代理模式天然堵不住泄漏,TUN 模式加 dns-hijack 加 fake-ip 才是完整方案
  • 浏览器安全 DNS、Android 私人 DNS、IPv6 是三个最容易被忽略的漏点

常见问题

Q机场为什么有些节点不能用 AI 工具?

一部分是节点出口 IP 信誉问题,另一部分其实是 DNS 泄漏:解析在国内完成,服务端看到的解析来源与出口 IP 地区不一致,于是触发风控或地区限制。先按本文方法确认 DNS 已被客户端接管,再去判断节点本身是否有问题。

Q机场为什么有些节点不能看流媒体?

流媒体平台会比对 DNS 查询来源地区与访问 IP 地区,DNS 泄漏时两者不一致,就会提示地区不符或只显示本地内容。让流媒体域名通过节点解析,多数情况可以恢复;仍不行的才是出口 IP 被平台识别为数据中心的问题。

QClash 机场推荐怎么选?

从 DNS 角度看,优先选订阅配置里自带完整 dns 段、并且节点侧提供干净解析环境的机场,导入后基本不用自己改。老牌 IEPL 机场如宇宙云、灯塔加速的订阅在这方面比较规范,适合 Clash Verge Rev 与 Mihomo Party 直接使用。

Q机场订阅链接怎么导入 Clash?

在 Clash Verge Rev 的「订阅」页粘贴链接并点导入即可,导入后到「设置」里确认 DNS 覆写与 TUN 模式已开启,否则订阅自带的 dns 段可能没有生效,泄漏依旧存在。

Q机场显示超时怎么办?

先把客户端切到直连模式确认本地网络正常,再换一个节点测延迟。如果是开启 TUN 后才出现全部超时,多半是 nameserver 不可达导致 DNS 劫持后解析失败,把 nameserver 换成国内 DoH 地址再试。

参考资料与信息来源

  • Mihomo 文档:DNS 配置 · enhanced-mode、dns-hijack 与 fake-ip-filter 的官方说明
  • Clash Verge Rev 文档 · TUN 模式与 DNS 覆写的开关位置