查看 2026-05-29 10 分钟 进阶 3 步

DNS 泄漏检测与修复完整教程:Fake-IP、DoH 和 DNS 劫持(2026)

DNS 泄漏让你的 ISP 能看到所有访问域名。这篇讲用 ipleak.net 和 dnsleaktest.com 检测泄漏,以及 Mihomo、sing-box、Clash Verge Rev 中三种修复方案:Fake-IP 模式、DoH/DoT 加密上游、DNS 劫持。附带可直接复制的配置片段。

DNS 泄漏意味着你的 ISP 能看到你在访问哪些网站,即使你的网页流量走了代理。检测方法很简单:连上代理 → 打开 ipleak.net → 看显示的 DNS 服务器地址是不是你的本地 ISP。修复核心是把 DNS 请求也走代理,而不是直连 114.114.114.114 或 8.8.8.8。

很多用户代理连上了就以为没事。实际上浏览器先把域名翻译成 IP 地址(DNS 解析),这一步如果不走代理通道、直接发给宽带运营商的 DNS 服务器,运营商就能记录你访问了哪些域名。下面按 Mihomo / Clash Verge Rev 和 sing-box 两种内核展开检测与修复,每步都带可复制的配置片段。

用两个工具确认是不是真的泄漏了

先连上你的代理节点,确认系统代理或 TUN 模式已接管流量。

打开 ipleak.net。等页面加载完,找中间的 DNS Addresses 部分。这里面列出的 IP 就是浏览器在做 DNS 解析时被外部检测到的服务器地址。

正常的代理环境里,这里应该显示:

  • 代理节点的出口 IP(和页面顶部 IP Address 显示的一致),或
  • 客户端虚拟 IP 段(198.18.x.x),如果你开了 Fake-IP

泄漏的典型信号是:

  • 看到 114.114.114.114223.5.5.58.8.8.8 这类公共 DNS
  • 看到 IP 归属地指向你所在城市的电信 / 联通 / 移动
  • 看到运营商名称直接出现在 DNS 服务器列表里

ipleak.net 只做单次查询。如果列表干净,再打开 dnsleaktest.comExtended Test——向你的 DNS 服务器发起 50 次随机子域名解析,能看出更完整的泄漏模式。结果中只要有一个 DNS 服务器不属于代理节点出口网络,就算泄漏。

别忘了同时看 ipleak.net 上的 WebRTC 部分。Chrome 和 Firefox 默认开启 WebRTC,即使代理工作正常,WebRTC 也可能泄漏你本机的局域网 IP 甚至公网 IP。Chrome 可以装 WebRTC Leak Prevent 扩展关掉;Firefox 在地址栏输入 about:config,把 media.peerconnection.enabledfalse

DNS 泄漏根因速查:现象、配置问题与对应修复

下表把最常见的泄漏现象、对应的 DNS 配置问题和修复动作列在一起,排查时直接对照自己的情况。

泄漏现象DNS 配置问题修复动作
ipleak.net 显示 114.114.114.114 或 8.8.8.8nameserver 填了公共 DNS 直连地址把 nameserver 改成 DoH 地址(如 https://dns.google/dns-query),或开 Fake-IP 让客户端接管 DNS
ipleak.net 显示 ISP 的 DNS(如电信 202.96.x.x)系统 DNS 没被代理客户端劫持在 TUN 配置里加 dns-hijack: [any:53, tcp://any:53],或在 sing-box 中配 sniff: true + domain_strategy
开了 Fake-IP 但 DNS 还是泄漏浏览器的 DoH 绕过了系统 DNSChrome: 设置 → 隐私与安全 → 安全 → 关闭「使用安全 DNS」;Firefox: 设置 → 隐私与安全 → 关闭 DNS over HTTPS
几个 DNS 里只有部分泄漏DNS 分流规则里有一部分走了直连 upstream检查分流规则的 nameserver-policyserver 字段,确认所有需要隐私的域名都指向加密上游
Android 手机上 DNS 泄漏系统的私人 DNS(Private DNS)独立于代理客户端运行设置 → 网络和互联网 → 私人 DNS → 选择「关闭」
sing-box 配了 DoH 但日志里 DNS 却没走代理detour 字段漏写或标记名拼错dns.servers[].detour 必须填写标签名,且标签对应的 outbound 条目的 tag 必须一致

Fake-IP:把 DNS 请求关在客户端内部

在所有防泄漏方案中,Fake-IP 是最彻底的一种,也是 Mihomo / Clash Verge Rev 的默认推荐。它的逻辑和传统 DNS 完全不同。

传统模式:浏览器请求域名 → 系统发起 DNS 查询 → DNS 服务器返回真实 IP → 浏览器连这个 IP。只要 DNS 请求没走代理,泄漏就发生了。

Fake-IP 改了中间这一步。客户端拦截所有 DNS 请求,不向上游做真实解析,直接给每个域名分配 198.18.0.0/16 保留网段里的虚拟 IP。浏览器拿到假 IP 后发起 TCP 连接,客户端内部查映射表把虚拟 IP 还原成原始域名,再根据规则决定走代理还是直连。整个 DNS 解析过程不离开客户端,外部能看到的只有虚拟地址或代理出口 IP。

以下是 Mihomo / Clash Verge Rev 的 Fake-IP 标准配置:

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - https://dns.google/dns-query
    - https://cloudflare-dns.com/dns-query
  fallback:
    - tls://8.8.8.8:853
  fake-ip-filter:
    - '*.lan'
    - '*.localdomain'
    - '*.msftncsi.com'
    - '*.msftconnecttest.com'
    - localhost.ptlogin2.qq.com
    - '+.stun.*.*'
    - '+.stun.*.*.*'

tun:
  enable: true
  stack: system
  dns-hijack:
    - any:53
    - tcp://any:53

关键字段说明:

  • enhanced-mode: fake-ip 核心开关。改成 redir-host 就退回传统模式。
  • dns-hijack: [any:53, tcp://any:53] 把系统 53 端口的 DNS 请求劫持进客户端 DNS 模块。没有这条,Fake-IP 只对走客户端网络栈的应用生效,系统级 DNS 仍会泄漏。
  • fake-ip-filter:在里面的域名不返回虚拟 IP,走真实解析。放局域网后缀、Windows 网络检测、STUN 服务器等,否则这些服务连接异常。
  • nameserver:Fake-IP 模式下主要用于 fake-ip-filter 中的域名和直连规则域名解析。

Fake-IP 的代价:pingnslookup 这类命令会看到 198.18.x.x 虚拟 IP,不是 Bug,是设计如此。需要真实 IP 的应用在规则中设为直连,客户端会做真实解析。

Redir-Host 下的补救:DoH 和 DoT 加密上游

内网环境、旁路由架构或老旧规则集可能不兼容 Fake-IP,只能跑 Redir-Host。Redir-Host 每个域名都要真实解析一次,只要 nameserver 填的是 114.114.114.114 或系统 DNS,就明文泄漏了。

修复:把上游从 UDP 53 明文换成加密通道。DoH(DNS over HTTPS)最推荐,走 443 端口加 TLS,在中间设备看来就是 HTTPS 流量。DoT(DNS over TLS)走 853 端口也是加密的,但专用端口可能被阻断。

dns:
  enable: true
  enhanced-mode: redir-host
  use-hosts: false
  ipv6: false
  nameserver:
    - https://dns.google/dns-query
    - https://cloudflare-dns.com/dns-query
  fallback:
    - tls://8.8.8.8:853
    - https://dns.quad9.net/dns-query
  nameserver-policy:
    'geosite:cn,private':
      - 223.5.5.5
      - https://dns.alidns.com/dns-query

nameserver-policy 按域名分流上游:geosite:cn 交给阿里 DNS 直连(快),国外域名走 Google / Cloudflare DoH(走代理加密)。

Redir-Host + DoH 的局限:如果 DoH 请求没走代理,上游 DNS 服务器看不到你是谁(IP 是代理出口 IP),但运营商能看到你在和 DoH 服务商通信。隐私要求高的场景,Fake-IP 更彻底。

sing-box 的 DNS 防泄漏怎么写

sing-box 的 DNS 支持多 server 按规则组合。最稳妥的做法是 Fake-IP local server + DoH 远程 server 配对:

{
  "dns": {
    "servers": [
      {
        "tag": "local-fakeip",
        "address": "fakeip",
        "strategy": "ipv4_only"
      },
      {
        "tag": "doh-google",
        "address": "https://dns.google/dns-query",
        "detour": "proxy"
      },
      {
        "tag": "dns-direct",
        "address": "223.5.5.5",
        "detour": "direct"
      }
    ],
    "rules": [
      {
        "rule_set": "geosite-cn",
        "server": "dns-direct"
      },
      {
        "rule_set": "geosite-category-companies",
        "server": "local-fakeip"
      }
    ]
  }
}

三个 server 的分工:

  1. local-fakeip 在本地返回虚拟地址,DNS 不离开客户端。
  2. doh-google 是远程加密上游,detour: proxy 强制流量走代理 outbound。
  3. dns-direct 用阿里 DNS 直连国内域名。
  4. rules 把 geosite-cn 分流到直连,其余默认走向 local-fakeip

detour 值必须和 outbounds 中对应条目的 tag 完全一致。拼错或漏写,DoH 就走默认路由而非代理,防护失效。不用 Fake-IP 也可以把第一个 server 的 address 改成 tcp://1.1.1.1 或 DoH URL,但 DNS 请求会离开客户端,不如 Fake-IP 干净。

手机和浏览器里的隐形泄漏源

PC 上客户端配好后最容易漏的是两个点:浏览器内置 DoHAndroid 私人 DNS

浏览器 DoH(Chrome / Firefox / Edge 内置)让浏览器直接向 Cloudflare 或 Google 发起加密 DNS,绕过系统 DNS。客户端做了 53 端口劫持也没用,浏览器根本不走那个端口。

各浏览器的关闭路径:

  • Chrome / Edge:设置 → 隐私、搜索和服务 → 安全 → 关闭「使用安全的 DNS 指定如何查找网站的网络地址」。或者直接选择「使用您当前的服务提供商」,这样浏览器回退到系统 DNS,被客户端接管。
  • Firefox:设置 → 隐私与安全 → 下滑到底部 → 「通过 HTTPS 启用 DNS」→ 选「关闭保护」或「使用默认保护」。注意即使选了 Cloudflare 作为 Firefox DoH 提供商,DNS 请求也是直连 Cloudflare 而不是走代理,依然泄漏。
  • Brave:设置 → 隐私与安全 → 安全 → 关闭「使用安全的 DNS」。

Android 私人 DNS(Android 9+)在 设置 → 网络和互联网 → 私人 DNS。这个系统级 DoT 功能让全机 DNS 走加密通道到 dns.google,但它的 DoT 连接独立于代理路由规则,必然不走代理。代理开着但私人 DNS 设为自动或手动,DNS 全漏。

处理:直接关闭私人 DNS(选「关闭」)。路由器或旁路由做了完整 DNS 劫持可以保留,但桌面/手机客户端用户直接关最省事。

iOS 没有系统级强制 DoH/DoT,DNS 跟 Wi-Fi 设置走。但如果 Wi-Fi 详情页手动填了 8.8.8.8114.114.114.114 作为 DNS,一样泄漏。改回「自动」让代理客户端接管。

验证修复效果

改完配置重启核心后,三步确认修复生效:

  1. ipleak.net 的 DNS 列表只显示代理出口 IP 或 198.18.x.x 虚拟地址。
  2. dnsleaktest.com Extended Test 中 50 次查询的 DNS 服务器全属于代理出口网络。
  3. Fake-IP 用户看 Mihomo Connections 日志,域名解析结果是 198.18.x.x 格式即生效。

如果换了客户端、换了设备、不同配置都泄漏,问题可能不在客户端这边——运营商或企业网关在网络层强制劫持 53 端口 DNS。这种情况 DoH(443 端口)或 DoT(853 端口)的上游能绕过去。另外 DNS 上游如果依赖不可达的 fallback 地址,解析失败后也会回退到系统 DNS。减少配置层面的不确定变量,可以考虑兼容 Clash / Singbox / V2Ray 的订阅

相关阅读

来源与时间

本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。

看更多教程:教程库 · 看客户端:客户端目录 · 看下载入口:下载中心