Fake-IP DNS 详解
Fake-IP 是 Clash 系客户端 DNS 模块的一种工作模式,主要目的是减少 DNS 污染的影响、降低解析延迟。Clash for Windows 在 TUN 模式下默认受益于这一机制。
工作原理
开启 Fake-IP 后:
- 客户端程序向 Clash 发起 DNS 查询时,Clash 不真正去解析,而是立即返回一个假 IP(从保留网段
198.18.0.1/16中分配),并把这个"假 IP ↔ 域名"的映射记在内存里 - 程序拿着假 IP 发起连接,连接请求到达 Clash
- Clash 根据映射表还原出真实域名,按 规则 决定直连还是走代理;走代理时域名直接交给远端服务器解析,本地根本不做真实 DNS 查询
这样做的好处:
- 本地零 DNS 泄漏:被代理流量的域名解析发生在远端,本地 ISP 看不到你查询了什么域名
- 解析零延迟:假 IP 是即时分配的,省去了本地递归解析的时间
- 天然免疫 DNS 污染:不查询就没有污染
配置示例
yaml
dns:
enable: true
enhanced-mode: fake-ip # 关键字段:fake-ip 或 redir-host
fake-ip-range: 198.18.0.1/16 # 假 IP 分配网段
fake-ip-filter: # 不使用假 IP 的域名(返回真实解析结果)
- "*.lan"
- "*.local"
- "+.stun.*.*"
- "+.msftconnecttest.com"
- "+.msftncsi.com"
nameserver:
- https://doh.pub/dns-queryfake-ip-filter:哪些域名需要真实解析
有些场景需要拿到真实 IP 才能正常工作,需要加入 fake-ip-filter:
- 局域网发现与投屏:
*.lan、*.local - NAT 类型检测 / 语音通话:STUN 协议依赖真实 IP
- Windows 网络连通性检测:
msftconnecttest.com,不排除会导致系统误判"无 Internet" - 需要直连且按 IP 通信的服务
Fake-IP vs redir-host
| 对比项 | fake-ip | redir-host |
|---|---|---|
| 本地真实解析 | 不需要(被代理流量) | 需要,先解析真实 IP 再转发 |
| DNS 污染影响 | 免疫 | 受影响 |
| 解析延迟 | 几乎为零 | 有真实查询开销 |
| 兼容性 | 个别依赖真实 IP 的程序需要 filter | 兼容性好 |
| 推荐场景 | TUN 模式、日常代理 | 对兼容性要求高的环境 |
Clash for Windows 日常使用保持默认配置即可;遇到某些程序联网异常时,优先把对应域名加入 fake-ip-filter,而不是关闭 Fake-IP。
