
# Clash分流规则怎么写?从入门到精通的完整指南(2025最新版)
在代理工具的使用过程中,**Clash分流规则**的编写是决定网络体验的核心环节。无论你是刚接触Clash的新手,还是希望优化已有配置的老用户,掌握分流规则的写法都能让你实现“国内外网站自动分流、访问速度最大化”的目标。本文将系统讲解Clash分流规则的语法结构、匹配逻辑、实战案例及优化技巧,帮助你彻底告别“全局代理”的笨拙模式。
## 一、为什么必须学会写Clash分流规则?
很多用户下载Clash后直接套用别人的配置,结果遇到“国内网站加载缓慢”“国外视频打不开”等问题。这往往是因为**分流规则**没有正确匹配你的网络环境。手动编写规则的优势在于:
1. **精准控制流量路径**:国内直连、国外代理,降低延迟
2. **节省代理流量**:避免视频、软件更新等大流量消耗代理额度
3. **规避地域限制**:按需接入特定节点,例如流媒体专用线路
4. **故障排查便利**:清晰规则便于定位连接异常
Clash配置文件详解中提到,一个完整的config.yaml包含proxies、proxy-groups和rules三大部分,其中rules就是分流规则的主体。
## 二、Clash分流规则的核心语法结构
### 1. 规则的基本格式
Clash中的每条规则由三部分组成,用逗号分隔:
```
规则类型, 匹配条件, 策略
```
例如:
```
DOMAIN-SUFFIX,google.com,Proxy
IP-CIDR,192.168.1.0/24,DIRECT
```
### 2. 最常见的规则类型(附实战解析)
| 规则类型 | 匹配对象 | 示例 |
|---------|---------|------|
| DOMAIN | 完整域名 | `DOMAIN,www.example.com,Proxy` |
| DOMAIN-SUFFIX | 域名后缀 | `DOMAIN-SUFFIX,github.com,Proxy` |
| DOMAIN-KEYWORD | 域名关键词 | `DOMAIN-KEYWORD,youtube,Proxy` |
| IP-CIDR | IP地址段 | `IP-CIDR,10.0.0.0/8,DIRECT` |
| GEOIP | 国家IP库 | `GEOIP,CN,DIRECT` |
| MATCH | 兜底规则 | `MATCH,Proxy`(必须放在最后) |
**关键点**:规则从上到下逐条匹配,命中后立即终止。因此,**更具体的规则(如DOMAIN)应该放在前面**,模糊规则(如GEOIP)放在后面。
### 3. 策略(策略组)的理解
- `DIRECT`:流量直连,不经过代理
- `Proxy`:走代理服务器(需在proxy-groups中定义)
- `REJECT`:阻止连接(常用于广告屏蔽)
- 自定义策略组名称:如`Netflix`、`Game`等
```yaml
proxy-groups:
- name: "Proxy"
type: select
proxies:
- "节点1"
- "节点2"
```
## 三、从零到一:实战编写你的第一套分流规则
### 场景:国内直连 + 国外代理 + 流媒体特殊分流
```yaml
rules:
# 1. 广告域名直接拒绝(必须放最前)
- DOMAIN-SUFFIX,doubleclick.net,REJECT
- DOMAIN-KEYWORD,adservice,REJECT
# 2. 国内常用服务直连(精准匹配)
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,qq.com,DIRECT
- DOMAIN-SUFFIX,taobao.com,DIRECT
- DOMAIN-SUFFIX,weibo.com,DIRECT
# 3. 流媒体特殊节点(例如Netflix走专用策略组)
- DOMAIN-SUFFIX,netflix.com,Netflix专用
- DOMAIN-SUFFIX,nflxvideo.net,Netflix专用
# 4. 开发工具走代理
- DOMAIN-SUFFIX,github.com,Proxy
- DOMAIN-SUFFIX,googleapis.com,Proxy
# 5. IP规则兜底(国内IP直连)
- GEOIP,CN,DIRECT
# 6. 最终兜底(未匹配的国外流量走代理)
- MATCH,Proxy
```
### 易错点提醒
- 规则顺序不可随意调整,`MATCH`必须是最后一条
- `GEOIP,CN`仅匹配IP地理位置,不匹配域名(若域名被DNS污染则失效)
- 使用`IP-CIDR`时建议配合`no-resolve`参数,避免DNS泄漏:
`IP-CIDR,192.168.0.0/16,DIRECT,no-resolve`
## 四、高级优化技巧:让你的规则更智能
### 1. 利用规则覆盖减少冗余
当你有大量域名需要指向相同策略时,使用`DOMAIN-SUFFIX`比逐个写`DOMAIN`更高效。例如:
```
# 低效
DOMAIN,google.com,Proxy
DOMAIN,google.com.hk,Proxy
# 高效
DOMAIN-SUFFIX,google.com,Proxy
```
### 2. 应对DNS污染与分流冲突
建议在配置中开启:
```yaml
dns:
enable: true
nameserver:
- 223.5.5.5
fallback:
- 8.8.8.8
```
并在规则中优先使用`GEOIP,CN,DIRECT`,同时配合`DOMAIN-SUFFIX`处理特定域名。
### 3. 用`RULE-SET`引用外部规则文件
为了便于维护,可将规则拆分为多个文件:
```yaml
rule-providers:
apple:
type: http
behavior: classical
url: "https://example.com/apple.yaml"
path: ./ruleset/apple.yaml
interval: 86400
```
然后在rules中引用:
```
- RULE-SET,apple,DIRECT
```
### 4. 自动化规则测试与回退
利用Clash的`proxy-groups`中的`url-test`类型,自动选择延迟最低的节点,避免手动切换:
```yaml
- name: "自动选择"
type: url-test
url: "http://www.gstatic.com/generate_204"
interval: 300
```
## 五、常见问题FAQ与排错指南
### Q1:为什么我的分流规则不生效?
- **检查规则顺序**:是否将`MATCH`放在了非末尾位置?
- **检查策略组名称**:rules中引用的策略名是否与proxy-groups中完全一致?
- **检查配置文件语法**:使用YAML校验工具(如yamllint)检查缩进。
### Q2:如何验证某条规则是否命中?
在Clash Dashboard(如Clash Verge、ClashX)的“连接”标签页,可以实时查看每个请求命中的规则和策略。
### Q3:规则文件太长影响性能吗?
Clash对规则数量有较好优化,但建议将数千条规则拆分为`RULE-SET`。同时避免使用大量`DOMAIN-KEYWORD`(性能较差)。
### Q4:国内某网站走了代理导致无法访问?
将该网站加入`DIRECT`规则,并确保其位于`GEOIP,CN`之前。例如:
```
DOMAIN-SUFFIX,12306.cn,DIRECT
GEOIP,CN,DIRECT
```
## 六、总结与进阶学习路径
通过本文的讲解,你已经掌握了**Clash分流规则**的编写核心——语法、顺序、策略组配合。但实际运用中仍会遇到各种边缘场景,建议:
1. 从现有优秀配置(如Loyalsoldier的Clash规则集)中学习
2. 结合
Clash常见报错解决方案排查配置问题
3. 使用`clash -t -f config.yaml`命令测试配置文件,确保无语法错误
**最后提醒**:分流规则没有“万能模板”,最适合你的规则一定是根据自身网络环境(如是否IPv6、是否使用DNS污染)动态调整出来的。建议每两周审查一次规则,删除无效条目,添加新出现的域名需求。现在,打开你的Clash配置文件,动手实践吧!