防范 DNS 泄漏与设置 Fake-IP 最佳实践指南
解析代理环境下DNS泄漏与污染的根源,教学如何在Clash与sing-box中正确开启Fake-IP与加密DoH解析。
什么是 DNS 泄漏?为什么会发生?
当您在使用网络代理时,通常期望所有海外流量的请求都在加密隧道内完成。然而,如果客户端配置不当,系统在向目标服务器发起 TCP/UDP 握手之前,可能会通过电脑默认的网络接口向本地 ISP(中国电信/联通/移动)发送未加密的 DNS 查询。
DNS 泄漏数据流示意:
[本地电脑] ──(明文UDP 53查询 google.com)──> [本地运营商ISP DNS服务器] ⚠️ 发生泄漏与污染
[本地电脑] ──(加密代理流量)──> [海外节点]
这不仅会导致您的访问痕迹被运营商完整记录,还会因为本地 DNS 投毒污染直接返回错误的虚假 IP 地址,导致“节点正常但网页打不开”。
Fake-IP 模式:从原理上根治 DNS 污染
Fake-IP 的工作机制非常巧妙:
- 当本地应用程序向系统发起域名解析请求时,代理核心(如 Mihomo / Clash Meta)会立即拦截该请求,并直接返回一个保留网段的虚拟伪造 IP(例如
198.18.0.1)。 - 本地应用拿到这个伪造 IP 后,向其发起网络连接。
- 代理客户端在拿到包含该伪造 IP 的数据包后,根据内部路由映射表还原出真实的原始域名,然后将原始域名直接封装进加密隧道,交由远端海外代理服务器在国外机房进行真实的 DNS 查询。
推荐的 Clash Verge Rev(Mihomo 内核)DNS 配置示范
在 Clash Verge Rev 的「订阅 → 扩展覆写配置」中加入以下片段(大多数机场订阅已自带 DNS 配置,仅在出现泄漏或解析异常时再覆写):
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- '+.local'
- '+.msftconnecttest.com'
- '+.msftncsi.com'
- '+.stun.*.*'
# 用于解析 DoH 服务器域名本身,必须是纯 IP
default-nameserver:
- 223.5.5.5
- 119.29.29.29
# 用于解析节点服务器域名,走直连
proxy-server-nameserver:
- https://223.5.5.5/dns-query
- https://doh.pub/dns-query
# 国内域名用国内 DoH,保证国内网站解析到最近的服务器
nameserver-policy:
'geosite:cn,private':
- https://223.5.5.5/dns-query
- https://doh.pub/dns-query
# 其余域名用境外 DoH,并按分流规则经代理发出
nameserver:
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
respect-rules: true
要点说明:
respect-rules: true让 DNS 查询本身也遵循分流规则——境外域名的查询会通过代理节点发出,不再经过本地运营商。- 开启
respect-rules时必须同时配置proxy-server-nameserver,否则节点域名本身可能无法解析。 - 不要把
listen设置为0.0.0.0,除非你确实需要给局域网其他设备提供 DNS 服务,否则等于把 DNS 端口暴露给整个局域网。
验证效果
配置生效后,访问 dnsleaktest.com 进行 Extended Test:
- 正常:结果中只出现 Cloudflare、Google 等境外 DNS 服务器,或你节点所在地区的 DNS。
- 仍有泄漏:结果中出现国内运营商 DNS。检查是否开启了系统代理以外的 TUN 模式、浏览器是否开启了「安全 DNS」并指定了国内服务器,以及订阅是否覆盖了你的 DNS 设置。
另外建议在浏览器中关闭或统一配置「使用安全 DNS」(Chrome / Edge 设置 → 隐私和安全),避免浏览器绕过客户端自行解析。
常见问题解答 (FAQ)
如何检测我的电脑是否存在 DNS 泄漏?
连接代理后,访问专门的检测站点(如 dnsleaktest.com),进行 Standard Test 测试。如果结果中出现中国电信、联通、移动等国内运营商的 DNS 服务器,说明访问境外网站时的 DNS 查询发生了泄漏。
Fake-IP 模式对打外服联机游戏有影响吗?
大部分现代客户端(如 Mihomo 内核)已提供完整的 fake-ip-filter 过滤列表,将常见的联机平台与 STUN 语音服务器排除在 Fake-IP 之外,因此不会造成游戏 NAT 冲突。