跳到主要内容

首页 / 博客 / 规则分流

Clash 规则类型速查:DOMAIN、IP-CIDR、GEOIP、PROCESS-NAME 全表

规则分流2026-07-251814 字约 4 分钟
Clash 规则类型速查:DOMAIN、IP-CIDR、GEOIP、PROCESS-NAME 全表

规则决定每一个连接的去向。这篇是一张速查表,配上每种类型的实际用法。

规则的基本形式

rules:
  - 类型,匹配内容,策略[,附加参数]

比如:

- DOMAIN-SUFFIX,google.com,🚀 节点选择
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,🐟 漏网之鱼

从上往下逐条匹配,第一条命中即生效,后面的不再检查。这条规律是理解一切规则行为的基础。

完整类型表

类型匹配对象示例说明
DOMAIN完整域名DOMAIN,www.google.com,PROXY精确匹配,最快
DOMAIN-SUFFIX域名后缀DOMAIN-SUFFIX,google.com,PROXY含所有子域名,最常用
DOMAIN-KEYWORD域名包含关键词DOMAIN-KEYWORD,google,PROXY范围大,慎用
DOMAIN-REGEX正则匹配域名DOMAIN-REGEX,^api\\..*\\.com$,PROXYMihomo 支持
GEOSITE域名地理集合GEOSITE,youtube,PROXY依赖 geosite 数据库
IP-CIDRIPv4 网段IP-CIDR,10.0.0.0/8,DIRECT,no-resolve注意 no-resolve
IP-CIDR6IPv6 网段IP-CIDR6,::1/128,DIRECT,no-resolve同上
IP-SUFFIXIP 后缀IP-SUFFIX,8.8.8.8/24,PROXYMihomo 支持
IP-ASN自治域号IP-ASN,13335,PROXY按运营商/云厂商分流
GEOIPIP 所属国家GEOIP,CN,DIRECT依赖 geoip 数据库
SRC-IP-CIDR来源 IPSRC-IP-CIDR,192.168.1.100/32,DIRECT按局域网设备分流
SRC-PORT来源端口SRC-PORT,8080,DIRECT少用
DST-PORT目标端口DST-PORT,22,DIRECT按服务类型分流
PROCESS-NAME进程名PROCESS-NAME,Telegram.exe,PROXY按程序分流
PROCESS-PATH进程完整路径PROCESS-PATH,/usr/bin/curl,PROXY更精确
RULE-SET引用规则集RULE-SET,cn-domain,DIRECT配合 rule-providers
AND / OR / NOT逻辑组合见下文Mihomo 支持
MATCH兜底MATCH,PROXY必须放最后一条

三个最常用的域名规则怎么选

DOMAIN 三兄弟DOMAIN只匹配写www.google.com 匹配google.com 不匹配最精确最快DOMAIN-SUFFIX匹配它和google.com 匹配www.google.com 匹配日常主力DOMAIN-KEYWORD域名里含googleapis.com 匹配notgoogle.cn 也匹配容易误伤
90% 的情况用 DOMAIN-SUFFIX 就对了

no-resolve 到底是什么

这是 IP 类规则里最容易搞错的参数。

一个连接过来时,如果目标是域名,内核为了匹配 IP-CIDR 规则,必须先把域名解析成 IP。加上 no-resolve 的意思是:如果目标还是域名(没解析过),就跳过这条规则,别为它专门去做一次 DNS 查询。

有无 no-resolve 的差别连接到达目标是域名遇到 IP-CIDR 规则需要 IP 才能比对无 no-resolve触发 DNS 解析后再比对有 no-resolve直接跳过这条规则
前置的内网规则加 no-resolve,能避免每个连接都多做一次 DNS

什么时候该加:放在规则列表最前面的内网 IP 段规则,一律加上。

- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR6,fc00::/7,DIRECT,no-resolve

什么时候不加GEOIP,CN,DIRECT 这种放在最后的兜底规则不要加 no-resolve,否则域名类流量根本匹配不到它。

规则顺序的三条铁律

规则从上到下的正确排列11. 内网与本机 IP 段加 no-resolve,最优先22. 广告拦截 REJECT 规则33. 具体域名规则DOMAIN、DOMAIN-SUFFIX44. 规则集 RULE-SET批量域名55. GEOIP 地理兜底GEOIP,CN,DIRECT66. MATCH 最终兜底必须是最后一条
把 GEOIP 放到具体域名规则前面,是最常见的配置错误

铁律一:MATCH 必须在最后。它匹配一切,放在中间会让后面所有规则失效。

铁律二:GEOIP,CN 要放在具体域名规则之后。很多境外服务在国内有 CDN 节点,解析出来是国内 IP。GEOIP 放太前面会把它们全判成直连。

铁律三:越具体的规则越靠前。先写 DOMAIN,再写 DOMAIN-SUFFIX,最后写 DOMAIN-KEYWORD

逻辑组合规则(Mihomo)

需要「同时满足多个条件」时:

# 只有 Telegram 这个进程访问某个 IP 段时才走代理
- AND,((PROCESS-NAME,Telegram.exe),(IP-CIDR,91.108.4.0/22)),PROXY

# 目标是 22 端口,且不是内网
- AND,((DST-PORT,22),(NOT,((GEOIP,CN)))),PROXY

# 满足任一即可
- OR,((DOMAIN-SUFFIX,openai.com),(DOMAIN-SUFFIX,anthropic.com)),🤖 AI 服务

语法上要注意括号层级,很容易写漏。能用简单规则表达的就别用逻辑组合——可读性和性能都更好。

性能:哪些规则贵

规则匹配的相对开销DOMAIN 精确匹配几乎无开销DOMAIN-SUFFIX查后缀树RULE-SET domain内存中的集合GEOIP需要 IP,可能触发 DNSIP-CIDR 无 no-resolve可能触发 DNS 解析PROCESS-NAME需要查询系统进程表DOMAIN-REGEX逐条跑正则相对量级示意,实际耗时取决于规则总数与命中位置

实践建议:

  • 高频命中的规则往前放,减少平均比对次数
  • RULE-SET 代替几百条手写域名规则
  • PROCESS-NAME 只在确实需要时用,且尽量往后放
  • 避免大量 DOMAIN-REGEX

怎么知道一条连接命中了哪条规则

打开 Clash Verge 的 连接 页,「规则」列直接显示命中的规则。

这是排查分流问题最快的办法:

分流走错时的排查打开连接页让它实时刷新访问出问题的网站触发新连接看「规则」列知道是哪条规则命中的在那条规则之前插入更具体的规用 prepend-rules
不用猜,内核会直接告诉你它是怎么判的

修正示例——某个域名被 GEOIP,CN 判成了直连,但你想让它走代理:

# 全局扩展配置里
prepend-rules:
  - DOMAIN-SUFFIX,example.com,🚀 节点选择

prepend-rules 会插到规则列表最前面,优先级最高,且不会被订阅更新覆盖。

常用规则片段

内网直连(必备)

- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,100.64.0.0/10,DIRECT,no-resolve
- IP-CIDR6,::1/128,DIRECT,no-resolve
- IP-CIDR6,fc00::/7,DIRECT,no-resolve
- DOMAIN-SUFFIX,local,DIRECT
- DOMAIN-SUFFIX,lan,DIRECT

避免 QUIC 影响(某些环境下 UDP 443 表现不好)

- AND,((NETWORK,UDP),(DST-PORT,443)),REJECT

局域网某台设备强制直连

- SRC-IP-CIDR,192.168.1.50/32,DIRECT

BT / PT 流量不走代理(避免违反服务商条款)

- DST-PORT,6881-6889,DIRECT
- PROCESS-NAME,qbittorrent.exe,DIRECT
- PROCESS-NAME,transmission-daemon,DIRECT

小结

  • DOMAIN-SUFFIX 是主力,KEYWORD 慎用
  • 前置 IP 规则一律加 no-resolve,fake-ip 模式下更是必须
  • 顺序:内网 → 拦截 → 域名 → 规则集 → GEOIP → MATCH
  • 排查用连接页的「规则」列,修正用 prepend-rules

下一篇讲怎么把规则托管到外部:rule-providers 远程规则集


相关文档

用 PROCESS-NAME 规则让指定程序单独走代理
规则分流 用 PROCESS-NAME 规则让指定程序单独走代理

按进程分流的完整写法:find-process-mode 怎么开、进程名怎么查、PROCESS-NAME 与 PROCESS-PATH 的区别、性能开销,以及为什么规则写了不生效。

2026-06-221765 字约 4 分钟