Clash 规则优化实战:提升速度减少延迟
为什么要优化规则?
规则配置是 Clash 的核心。合理的规则设置可以显著提升网络速度、减少延迟、节省流量。本文分享实战经验,帮你打造高效的规则配置。
规则配置基础
规则的作用
Clash 规则决定了每个网络请求的处理方式:
- PROXY - 走代理节点
- DIRECT - 直连(不走代理)
- REJECT - 拒绝连接(广告拦截)
规则类型
| 规则类型 | 匹配方式 | 示例 |
|---|---|---|
DOMAIN |
完整域名 | google.com |
DOMAIN-SUFFIX |
域名后缀 | .google.com(匹配所有子域名) |
DOMAIN-KEYWORD |
域名包含关键词 | google(匹配包含google的域名) |
IP-CIDR |
IP 地址段 | 192.168.0.0/16 |
GEOIP |
IP 归属地 | CN(中国 IP) |
RULE-SET |
规则集(批量规则) | 引用外部规则文件 |
MATCH |
兜底规则 | 前面都不匹配时的默认处理 |
优化原则
1. 规则顺序很重要
Clash 从上往下匹配规则,一旦匹配就停止。因此:
- 常用规则放前面(减少匹配次数)
- 精确规则放前面,模糊规则放后面
- DIRECT 规则尽量靠前(国内网站优先直连)
❌ 错误示例:
rules:
- DOMAIN-KEYWORD,google,PROXY # 模糊匹配
- DOMAIN,google.com,PROXY # 精确匹配(但永远不会生效)
第二条规则永远不会生效,因为第一条已经匹配了。
✅ 正确示例:
rules:
- DOMAIN,google.com,PROXY # 精确匹配放前面
- DOMAIN-KEYWORD,google,PROXY # 模糊匹配放后面
2. 减少规则数量
规则越多,匹配越慢。优化策略:
- 使用规则集(RULE-SET)批量管理
- 避免重复规则
- 删除无用规则
3. 合理使用 GEOIP
GEOIP,CN,DIRECT 是常用规则,但它有个问题:需要先查询 IP,增加延迟。
优化方案:把明确的国内域名规则放在 GEOIP 前面。
推荐的规则配置结构
最佳实践
rules:
# 1. 局域网直连
- DOMAIN-SUFFIX,local,DIRECT
- 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,127.0.0.0/8,DIRECT,no-resolve
# 2. 广告拦截(可选)
- RULE-SET,reject,REJECT
# 3. 国内网站直连
- RULE-SET,cncidr,DIRECT
- RULE-SET,direct,DIRECT
- GEOIP,CN,DIRECT
# 4. 国外网站代理
- RULE-SET,proxy,PROXY
- RULE-SET,google,PROXY
- RULE-SET,youtube,PROXY
- RULE-SET,telegram,PROXY
# 5. 兜底规则
- MATCH,PROXY # 或 DIRECT,根据需求选择
结构说明
- 局域网规则 - 第一优先级,避免代理本地流量
- 广告拦截 - 提前拦截,节省流量
- 国内直连 - 国内网站优先,速度快
- 国外代理 - 需要代理的网站
- 兜底规则 - 决定其他请求的处理方式
💡 兜底规则选择:
MATCH,PROXY- 默认走代理(更安全,适合大部分用户)MATCH,DIRECT- 默认直连(适合只代理少数网站)
常用规则集推荐
1. ACL4SSR 规则集(推荐)
最流行的规则集,维护活跃,分类清晰。
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/BanAD.list"
path: ./ruleset/reject.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ChinaDomain.list"
path: ./ruleset/direct.yaml
interval: 86400
cncidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ChinaIp.list"
path: ./ruleset/cncidr.yaml
interval: 86400
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ProxyLite.list"
path: ./ruleset/proxy.yaml
interval: 86400
2. Loyalsoldier 规则集
另一个优秀的规则集,数据来源丰富。
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
DNS 分流优化
DNS 配置对速度影响巨大,合理配置可以显著提升体验。
推荐配置
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip # 使用 Fake-IP 模式,性能最佳
fake-ip-range: 198.18.0.1/16
# 国内 DNS
nameserver:
- 223.5.5.5 # 阿里 DNS
- 119.29.29.29 # 腾讯 DNS
- 114.114.114.114
# 国外 DNS(走代理)
fallback:
- https://1.1.1.1/dns-query # Cloudflare DNS over HTTPS
- https://8.8.8.8/dns-query # Google DNS over HTTPS
- tls://8.8.8.8:853 # Google DNS over TLS
# 域名分流
nameserver-policy:
"geosite:cn":
- 223.5.5.5
- 119.29.29.29
"geosite:geolocation-!cn":
- https://1.1.1.1/dns-query
# 禁用 fallback 的情况
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
DNS 模式对比
| 模式 | 优点 | 缺点 |
|---|---|---|
| fake-ip | 速度最快,无需等待 DNS | 少数应用可能不兼容 |
| redir-host | 兼容性好 | 需要等待 DNS 解析,略慢 |
💡 建议:优先使用 fake-ip 模式,只有在遇到兼容性问题时才切换到 redir-host。
性能优化技巧
1. 使用 no-resolve 参数
对于 IP-CIDR 规则,添加 no-resolve 可以跳过 DNS 查询,加快匹配速度。
rules:
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
2. 优化 GEOIP 数据库
使用更精确的 GeoIP 数据库:
geodata-mode: true
geox-url:
geoip: "https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geoip.dat"
geosite: "https://cdn.jsdelivr.net/gh/Loyalsoldier/v2ray-rules-dat@release/geosite.dat"
3. 缓存设置
合理设置缓存可以减少重复查询:
profile:
store-selected: true # 保存节点选择
store-fake-ip: true # 保存 Fake-IP 缓存
常见场景配置
场景1:看 Netflix/Disney+
rules:
- RULE-SET,netflix,🎬 Netflix节点组
- RULE-SET,disney,🎬 Disney节点组
需要配置对应的规则集和节点组。
场景2:游戏加速
游戏通常需要 UDP 支持和低延迟节点:
rules:
- DOMAIN-SUFFIX,steampowered.com,🎮 游戏
- DOMAIN-KEYWORD,epic,🎮 游戏
- DOMAIN-SUFFIX,battle.net,🎮 游戏
节点组选择低延迟节点,并确保启用 TUN 模式,因为游戏通常不支持系统代理。
场景3:广告拦截
rules:
# 广告域名
- DOMAIN-SUFFIX,googlesyndication.com,REJECT
- DOMAIN-SUFFIX,googleadservices.com,REJECT
- DOMAIN-KEYWORD,adservice,REJECT
# 或使用规则集
- RULE-SET,reject,REJECT
调试和验证
查看规则匹配
大多数 Clash 客户端都有"连接"或"日志"页面,可以看到每个请求匹配了哪条规则。
客户端推荐:
- Clash Verge Rev - 连接页面很直观
- ClashX Meta - 日志详细
- FlClash - 移动端调试方便
常用测试方法
- 测试域名解析:
nslookup google.com - 测试 IP 归属:访问
ip.sb或ip.gs - 测试连接速度:Speedtest 或 Fast.com
常见错误避免
❌ 错误 1:规则重复或冲突
rules:
- DOMAIN-SUFFIX,google.com,PROXY
- DOMAIN,www.google.com,DIRECT # 冲突!第一条已经匹配了
❌ 错误 2:GEOIP 位置不当
rules:
- GEOIP,CN,DIRECT # 太靠前!
- DOMAIN-SUFFIX,baidu.com,DIRECT # 永远不会生效
应该把明确的域名规则放在 GEOIP 前面。
❌ 错误 3:忘记兜底规则
rules:
- DOMAIN-SUFFIX,google.com,PROXY
# 缺少 MATCH 规则!其他请求会怎么处理?
必须有 MATCH 兜底规则。
高级技巧
1. 进程规则(Windows/macOS)
根据应用程序指定规则:
rules:
- PROCESS-NAME,Telegram.exe,PROXY
- PROCESS-NAME,WeChat.exe,DIRECT
2. 端口规则
rules:
- DST-PORT,80,DIRECT # HTTP 端口
- DST-PORT,443,PROXY # HTTPS 端口
3. 脚本规则(Clash Premium)
使用 JavaScript 编写复杂逻辑:
script:
code: |
def main(ctx, metadata):
if metadata["dst_port"] == 443:
return "PROXY"
return "DIRECT"
📚 相关阅读
- → Clash 使用教程 - 基础配置指南
- → Clash TUN 模式详解 - 配合规则的高级功能
- → Clash DNS 配置 - DNS 优化详解
- → 订阅管理指南 - 规则自动更新
- → config.yaml 完整说明 - 配置文件参考
- → Windows 客户端推荐 - 选择合适的客户端
- → 故障排查 - 规则不生效怎么办
总结
规则配置是 Clash 的核心,直接影响使用体验。一套好的规则配置应该做到:
- 结构清晰 - 按优先级分层,易于维护
- 性能优先 - 常用规则放前面,减少匹配次数
- 合理分流 - 国内直连,国外代理,广告拦截
- DNS 优化 - 使用 fake-ip 模式,配置 DNS 分流
- 持续更新 - 使用规则集,保持规则时效性
记住,没有完美的配置,只有最适合你的配置。根据自己的使用场景,不断调整和优化,才能获得最佳体验。