Daimon's Blog
主页 归档 关于 RSS 探针 常用工具
主页
归档
关于
RSS
探针
常用工具

mihomo / Clash 规则进阶:fake-ip + DNS 分流 + no-resolve

daimon daimon 2025-10-18 #mihomo#Clash#fake-ip#DNS#DNS泄漏

mihomo / Clash 配置里最容易让人头大的就是 DNS 这块——fake-ip 是什么?nameserver-policy 怎么写?no-resolve 加不加?看似都对实际却 DNS 泄漏 / 国内访问变慢。

这篇用”老板和秘书”的类比把这三个概念讲透,配出一份零泄漏 + 国内国外分流准确的配置。

一、DNS 泄漏是什么#

当你的网页流量走了代理,但 DNS 查询请求却走了本地未加密网络——你的 ISP 仍然能看到你访问了哪些域名,甚至会返回错误 IP(DNS 污染)。

graph LR B[浏览器] -.加密代理.-> P[国外节点] B -.明文 DNS.-> L[本地 ISP DNS] L -.被劫持/记录.-> ISP[运营商] P --> T[目标网站]

代理通了不等于安全。DNS 这条副本通道才是真正的隐私问题。

二、Fake-IP:核心比喻#

把 Clash 当秘书,浏览器当老板。老板要打电话给”谷歌先生”:

没有 Fake-IP(Real-IP / Redir-Host 模式)#

  1. 老板:「秘书,查一下谷歌先生的电话。」
  2. 秘书:「您先挂断等着,我去翻电话簿。」
  3. 秘书翻 DNS(可能 50-200ms)。
  4. 秘书:「号码是 142.250.x.x。」
  5. 老板拨号 → 连接代理。

缺点:老板必须等秘书查完才能拨,白屏时间长。

开启 Fake-IP 模式#

  1. 老板:「秘书,查一下谷歌先生的电话。」
  2. 秘书:直接编一个假号码 198.18.0.1:「号码是 198.18.0.1,快打!」
  3. 老板秒拨。
  4. 秘书拦截这个拨向假 IP 的电话,心里记得”这是谷歌”。
  5. 秘书直接告诉国外的代理节点:「帮我接通谷歌,号码你自己解析。」
  6. 国外节点解析 + 连接谷歌。

优点:

  • DNS 查询零延迟(直接给假 IP)
  • 真实 DNS 在国外节点解析(彻底无泄漏)
  • 浏览器拿到假 IP 时本地完全不查 DNS

三、DNS 分流:处理国内站#

但有些站不能给假 IP——比如百度。CDN 会根据你的 IP 给你最近的服务器,给假 IP 会让百度以为你在某个奇怪的地方,分配到慢的节点。

所以国内站要禁用 Fake-IP,走真实 IP。这就是 fake-ip-filter:

1
dns:
2
fake-ip-filter:
3
- "+.lan"
4
- "+.local"
5
- "geosite:private"
6
- "geosite:connectivity-check" # 微软/安卓的网络连通性检测
7
- "geosite:cn" # 国内域名走真实 IP

但走真实 IP 又要解决「该用哪个 DNS 查」的问题——国内站走国内 DNS(不然被分配到海外 CDN),国外站走国外 DNS(不然被 GFW 污染)。这就是 nameserver-policy:

1
dns:
2
nameserver-policy:
3
"geosite:cn,private":
4
- https://223.5.5.5/dns-query
5
- https://doh.pub/dns-query
6
"geosite:geolocation-!cn":
7
- https://1.1.1.1/dns-query
8
- https://dns.google/dns-query

整体流程:

graph TD Q[查询域名] --> F{命中 fake-ip-filter?} F -->|是 国内域名| R{命中 nameserver-policy?} F -->|否 国外域名| FK[返回假 IP
真实解析延后到节点] R -->|geosite:cn| RD[阿里/腾讯 DoH] R -->|geosite:!cn| RD2[Cloudflare/Google DoH]

四、no-resolve:避免本地多余解析#

即使开了 Fake-IP,规则匹配阶段 Clash 可能还会做一次本地 DNS 查询。

举例规则:

1
rules:
2
- RULE-SET, youtube, PROXY
3
- GEOIP, CN, DIRECT
4
- MATCH, PROXY

当访问一个未知国外域名时:

没有 no-resolve#

  1. Fake-IP 给假 IP,浏览器秒连。
  2. Clash 匹配规则:
    • RULE-SET, youtube → 没命中
    • GEOIP, CN → 这是 IP 规则,Clash 必须知道真 IP才能判断是否 CN
  3. Clash 在本地发起一次 DNS 查询(200ms)
  4. 拿到美国 IP → 不是 CN → 走 PROXY → 代理节点再解析一次

🪤 白白等了 200ms 本地解析。

加上 no-resolve#

1
rules:
2
- RULE-SET, youtube, PROXY
3
- GEOIP, CN, DIRECT, no-resolve # 👈
4
- MATCH, PROXY
  1. Fake-IP 给假 IP。
  2. 匹配 GEOIP, CN:
    • 看到 no-resolve:「没真实 IP 就别查了,跳过这条」
  3. 没匹配 → 走 MATCH → 代理节点解析 + 连接

结论:本地解析消失了,所有解析推迟到节点。

no-resolve 加的位置#

✅ 对 IP 类规则(GEOIP / IP-CIDR)才加 no-resolve,对域名类规则(DOMAIN-SUFFIX 等)加了没意义。

规则类型加 no-resolve?
DOMAIN-SUFFIX不用
DOMAIN-KEYWORD不用
RULE-SET(域名集合)不用
GEOIP要加
IP-CIDR要加
IP-CIDR6要加
GEOSITE不用

五、DoH (DNS over HTTPS)#

上面配置里 https://1.1.1.1/dns-query 是 DoH:

DNS 类型端口加密速度
普通 DNS53 / UDP否快但明文
DoT (DNS over TLS)853 / TCP是慢一点
DoH (DNS over HTTPS)443 / TCP是中等
DoQ (DNS over QUIC)853 / UDP是快(HTTP/3)

DoH 优势:

  • ✅ 隐私:DNS 查询加密
  • ✅ 防污染:GFW 看不到也改不了
  • ✅ 全球可用:Cloudflare / Google 都有 anycast 节点

💡 国内 DoH 也要用,纯 UDP 的 223.5.5.5:53 仍可能被中间人投毒。用 https://223.5.5.5/dns-query 即可。

六、推荐的完整 DNS 配置#

1
dns:
2
enable: true
3
ipv6: false
4
listen: 0.0.0.0:1053
5
prefer-h3: false
6
respect-rules: true # 让 DNS 解析参考分流规则
7
cache-algorithm: arc
8
cache-size: 2048
9
enhanced-mode: fake-ip
10
fake-ip-range: 198.18.0.1/16
11
12
# Fake-IP 过滤:返回真实 IP 的域名
13
fake-ip-filter:
14
- "+.lan"
15
- "+.local"
16
- "geosite:private"
17
- "geosite:connectivity-check"
18
- "geosite:cn"
19
20
# 用于解析 DoH 域名自身(先有 IP 才能访问 DoH)
21
default-nameserver:
22
- 223.5.5.5
23
- 119.29.29.29
24
- 1.1.1.1
25
- 8.8.8.8
26
27
# 代理节点的 DNS(必须国外,防止节点域名被污染连不上)
28
proxy-server-nameserver:
29
- https://1.1.1.1/dns-query
30
- https://dns.google/dns-query
31
32
# 默认 nameserver(视为国外/未知流量,走国外加密 DNS)
33
nameserver:
34
- https://1.1.1.1/dns-query
35
- https://dns.google/dns-query
36
37
# 备用 fallback
38
fallback:
39
- https://1.1.1.1/dns-query
40
- https://8.8.8.8/dns-query
41
42
# 分流策略(灵魂)
43
nameserver-policy:
44
"geosite:cn,private":
45
- https://223.5.5.5/dns-query
46
- https://doh.pub/dns-query
47
"geosite:geolocation-!cn":
48
- https://1.1.1.1/dns-query
49
- https://dns.google/dns-query

配合规则的写法:

1
rules:
2
# 域名规则(不需要 no-resolve)
3
- DOMAIN-SUFFIX,google.com,PROXY
4
- GEOSITE,youtube,PROXY
5
- GEOSITE,cn,DIRECT
6
7
# IP 规则(必须加 no-resolve)
8
- GEOIP,CN,DIRECT,no-resolve
9
- GEOIP,private,DIRECT,no-resolve
10
11
- MATCH,PROXY

七、几个常见配置选项的含义#

选项作用
enable启用内置 DNS
listen监听端口(系统 DNS 指向这里能用)
enhanced-modefake-ip / redir-host 二选一,推荐 fake-ip
fake-ip-range假 IP 段,默认 198.18.0.1/16 别动
respect-rulesDNS 解析时是否走代理规则(推荐 true)
default-nameserver引导 DNS:解析 DoH 域名本身用
nameserver主 DNS:默认走它
proxy-server-nameserver解析代理节点用的 DNS(强烈建议国外)
fallback主 DNS 全部失败时的备用
nameserver-policy按域名匹配走不同 DNS(灵魂)
fake-ip-filter哪些域名不要假 IP(走真实解析)

八、验证 DNS 没泄漏#

跑代理 + 配完上面这套之后,用这几个站验证:

1
https://dnsleaktest.com
2
https://browserleaks.com/dns
3
https://ipleak.net

正确的结果应该是:

  • DNS 服务器全部显示国外(Cloudflare / Google)
  • IP 显示节点 IP
  • 没有任何国内 ISP 的 DNS 出现

九、常见误配#

9.1 写了 nameserver-policy 但没生效#

可能是规则匹配触发了 IP 类规则解析(没 no-resolve)。补 no-resolve。

9.2 国内站打开很慢#

fake-ip-filter 漏了 geosite:cn。

9.3 节点显示离线 / 测速不通#

proxy-server-nameserver 没设国外 DoH。节点域名被国内 DNS 污染。

9.4 微信 / QQ 不能用#

fake-ip-filter 漏了 geosite:connectivity-check,或者腾讯系域名误走代理。

9.5 fake-ip-range 改成别的段#

不要改!默认 198.18.0.1/16 是 RFC 保留段,改成别的可能撞真实公网 IP。

十、几条实用经验#

  • fake-ip-filter 必加 geosite:cn + geosite:connectivity-check + geosite:private——少一个国内站都不顺。
  • proxy-server-nameserver 必用国外 DoH,不然节点域名被污染你就以为机场跑路了。
  • 所有 IP 规则(GEOIP / IP-CIDR)都加 no-resolve——零本地解析。
  • 国内 DoH 也要用(https://223.5.5.5/dns-query),纯 UDP 仍可能被投毒。
  • respect-rules: true 让 DNS 解析也走代理规则,国内 DNS 不再因为走代理而被污染。
  • prefer-h3: false:除非你确认网络稳定,HTTP/3 偶尔会出怪问题。

配通这套之后,DNS 这块就基本一劳永逸了——无泄漏、无污染、国内国外分流准确,从此再不用想这块。

图床方案合集:PicGo + PicList + 开源/付费图床全对比
Sub-Store 自部署 + 订阅链接转换全教程
本博客所有文章除特别声明外,均遵循 CC BY-NC-SA 4.0 协议,转载请注明出处。
博客框架 Astro & Fuwari
冀ICP备20260167号
1
一、DNS 泄漏是什么
2
二、Fake-IP:核心比喻
没有 Fake-IP(Real-IP / Redir-Host 模式)
开启 Fake-IP 模式
3
三、DNS 分流:处理国内站
4
四、no-resolve:避免本地多余解析
没有 no-resolve
加上 no-resolve
no-resolve 加的位置
5
五、DoH (DNS over HTTPS)
6
六、推荐的完整 DNS 配置
7
七、几个常见配置选项的含义
8
八、验证 DNS 没泄漏
9
九、常见误配
9.1 写了 nameserver-policy 但没生效
9.2 国内站打开很慢
9.3 节点显示离线 / 测速不通
9.4 微信 / QQ 不能用
9.5 fake-ip-range 改成别的段
10
十、几条实用经验