Clash分流规则详解:让国内外流量各走各的
目录
分流规则是Clash最核心的功能之一。所谓分流,就是让不同的流量走不同的通道:国内网站直接连接,国外网站走代理,广告域名直接屏蔽。合理的分流配置不仅影响上网速度,还关系到稳定性和安全性。本文将全面讲解Clash分流规则的配置方法,从基础原理到实战场景,帮你打造最优的分流方案。
什么是分流(Split Routing)
分流(Split Routing)是指根据预定义的规则,将不同类型的网络流量引导到不同的出口通道。在Clash的语境下,分流通常意味着:
- 国内流量直连:访问国内网站(如百度、淘宝、B站)时,不经过代理服务器,直接连接目标服务器
- 国外流量走代理:访问国外网站(如Google、YouTube、Twitter)时,流量经过代理服务器中转
- 特定流量定向处理:如屏蔽广告域名、将特定应用流量路由到指定节点等
Clash的分流本质上是一个决策过程:每条网络请求到达Clash后,Clash会按照配置文件中的规则列表,从上到下逐条匹配。第一条命中的规则决定这条流量的最终去向。如果没有命中任何规则,则由最后的MATCH兜底规则决定。
为什么需要分流
1. 速度优化
国内网站如果绕道国外代理服务器,延迟会显著增加。一个本来10ms的国内请求,经过代理可能变成300ms以上。分流让国内流量直连,保持毫秒级响应。
2. 稳定性保障
代理服务器的连接质量不稳定,可能出现断连、丢包等情况。如果国内流量也走代理,任何代理故障都会导致国内网站也无法访问。分流可以隔离风险:代理故障时,国内网站仍然可以正常访问。
3. 合规性考虑
部分国内服务对来自境外IP的访问有限制或风控措施。使用国内IP直连可以避免触发这些风控,保证账号安全。
4. 带宽节省
代理服务器的带宽通常有限。如果所有流量都走代理,包括国内视频、下载等大流量操作,会迅速耗尽代理带宽。分流让大流量的国内操作走直连,节省代理带宽。
如果你使用全局代理模式,所有流量(包括国内网站)都走代理。这会导致:国内网站变慢、代理带宽被大量占用、代理故障时全部断网。分流就是解决这些问题的核心方案。
Clash规则匹配原理
理解规则匹配原理是正确配置分流的基础。Clash的规则引擎工作方式如下:
匹配流程
Clash读取配置文件中的rules列表,从第一条开始,逐条与当前请求进行匹配。一旦某条规则匹配成功,立即停止匹配,将该流量导向规则指定的策略组。后续的规则不再检查。
这意味着规则的顺序至关重要。越精确的规则应该放在越前面,越宽泛的规则放在越后面。
匹配示例
rules:
# 规则1:bilibili.com精确匹配 -> 直连
- DOMAIN,bilibili.com,DIRECT
# 规则2:google.com后缀匹配 -> 代理
- DOMAIN-SUFFIX,google.com,Proxy
# 规则3:所有国内IP -> 直连
- GEOIP,CN,DIRECT
# 规则4:兜底 -> 代理
- MATCH,Proxy
当访问bilibili.com时:
- 首先检查规则1:
DOMAIN,bilibili.com→ 精确匹配成功 → 走DIRECT(直连) - 不再检查后续规则
当访问google.com时:
- 检查规则1:不匹配(不是bilibili.com)
- 检查规则2:
DOMAIN-SUFFIX,google.com→ google.com及其所有子域名匹配 → 走Proxy
如果把MATCH,Proxy放在规则列表最前面,所有流量都会走代理,后面的规则永远不会被匹配到。这是最常见的配置错误之一。务必记住:MATCH规则必须放在最后。
常见规则类型详解
Clash支持多种规则类型,每种类型适用于不同的匹配场景:
DOMAIN:精确域名匹配
只匹配完全相同的域名,不匹配子域名。
# 只匹配 www.google.com,不匹配 mail.google.com
- DOMAIN,www.google.com,Proxy
DOMAIN-SUFFIX:域名后缀匹配
匹配域名及其所有子域名。这是最常用的域名匹配方式。
# 匹配 google.com、www.google.com、mail.google.com、a.b.google.com...
- DOMAIN-SUFFIX,google.com,Proxy
DOMAIN-KEYWORD:域名关键词匹配
匹配域名中包含特定关键词的所有请求。
# 匹配任何包含 "google" 的域名
- DOMAIN-KEYWORD,google,Proxy
IP-CIDR / IP-CIDR6:IP段匹配
匹配目标IP地址是否落在指定的CIDR范围内。常用于局域网、特定IP段分流。
# 匹配192.168.0.0/16范围的所有IP(局域网)
- IP-CIDR,192.168.0.0/16,DIRECT
# 匹配10.0.0.0/8范围的所有IP
- IP-CIDR,10.0.0.0/8,DIRECT
# IPv6示例
- IP-CIDR6,fd00::/8,DIRECT
GEOIP:地理位置匹配
根据IP地址的地理位置数据库判断目标IP所属国家/地区。最常用的场景是区分国内和国外IP。
# 中国大陆IP走直连
- GEOIP,CN,DIRECT
# 美国IP走代理
- GEOIP,US,Proxy
GEOIP依赖MaxMind等地理位置数据库。数据库不是100%准确的,偶尔会出现误判。如果对准确性要求很高,建议结合DOMAIN规则使用,形成双重保障。
MATCH:兜底规则
匹配所有未被前面规则匹配到的流量。必须放在规则列表的最后一条。
# 所有其他流量走代理
- MATCH,Proxy
# 或者:所有其他流量直连
- MATCH,DIRECT
DST-PORT / SRC-PORT:端口匹配
# 目标端口为80和443的流量走代理
- DST-PORT,80,Proxy
- DST-PORT,443,Proxy
# 源端口为53(DNS)的流量直连
- SRC-PORT,53,DIRECT
PROCESS-NAME / PROCESS-PATH(Meta专属)
# Chrome浏览器走代理
- PROCESS-NAME,chrome.exe,Proxy
# 微信直连
- PROCESS-NAME,WeChat.exe,DIRECT
# 按路径匹配(Linux/macOS)
- PROCESS-PATH,/usr/bin/wget,DIRECT
实战配置:国内直连+国外代理经典规则集
以下是一套经过验证的经典分流规则配置,适用于大多数国内用户:
# 策略组定义
proxy-groups:
- name: Proxy
type: select
proxies:
- Auto
- HK节点
- JP节点
- US节点
- name: Auto
type: url-test
proxies:
- HK节点
- JP节点
- US节点
url: https://www.gstatic.com/generate_204
interval: 300
# 规则定义
rules:
# === 第一层:精确域名规则(最高优先级)===
# 广告域名屏蔽
- DOMAIN-SUFFIX,ad.com,REJECT
- DOMAIN-KEYWORD,admarvel,REJECT
- DOMAIN-KEYWORD,admaster,REJECT
- DOMAIN-KEYWORD,adsage,REJECT
- DOMAIN-KEYWORD,adsmogo,REJECT
- DOMAIN-KEYWORD,adsrvmedia,REJECT
- DOMAIN-KEYWORD,adwords,REJECT
- DOMAIN-KEYWORD,analytics,REJECT
# 国内常用站点直连
- DOMAIN-SUFFIX,cn,DIRECT
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,taobao.com,DIRECT
- DOMAIN-SUFFIX,tmall.com,DIRECT
- DOMAIN-SUFFIX,jd.com,DIRECT
- DOMAIN-SUFFIX,alipay.com,DIRECT
- DOMAIN-SUFFIX,163.com,DIRECT
- DOMAIN-SUFFIX,126.net,DIRECT
- DOMAIN-SUFFIX,bilibili.com,DIRECT
- DOMAIN-SUFFIX,bilivideo.com,DIRECT
- DOMAIN-SUFFIX,zhihu.com,DIRECT
- DOMAIN-SUFFIX,douyin.com,DIRECT
- DOMAIN-SUFFIX,bytedance.com,DIRECT
- DOMAIN-SUFFIX,weibo.com,DIRECT
- DOMAIN-SUFFIX,qq.com,DIRECT
- DOMAIN-SUFFIX,wechat.com,DIRECT
- DOMAIN-SUFFIX,microsoft.com,DIRECT
# === 第二层:需要代理的域名 ===
# Google全家桶
- DOMAIN-SUFFIX,google.com,Proxy
- DOMAIN-SUFFIX,googleapis.com,Proxy
- DOMAIN-SUFFIX,googlevideo.com,Proxy
- DOMAIN-SUFFIX,gstatic.com,Proxy
- DOMAIN-SUFFIX,ggpht.com,Proxy
# 社交媒体
- DOMAIN-SUFFIX,twitter.com,Proxy
- DOMAIN-SUFFIX,x.com,Proxy
- DOMAIN-SUFFIX,facebook.com,Proxy
- DOMAIN-SUFFIX,instagram.com,Proxy
- DOMAIN-SUFFIX,telegram.org,Proxy
- DOMAIN-SUFFIX,t.me,Proxy
# 开发工具
- DOMAIN-SUFFIX,github.com,Proxy
- DOMAIN-SUFFIX,githubusercontent.com,Proxy
- DOMAIN-SUFFIX,stackoverflow.com,Proxy
- DOMAIN-SUFFIX,npmjs.org,Proxy
- DOMAIN-SUFFIX,pypi.org,Proxy
# 流媒体
- DOMAIN-SUFFIX,youtube.com,Proxy
- DOMAIN-SUFFIX,ytimg.com,Proxy
- DOMAIN-SUFFIX,netflix.com,Proxy
- DOMAIN-SUFFIX,nflxvideo.net,Proxy
- DOMAIN-SUFFIX,spotify.com,Proxy
- DOMAIN-SUFFIX,twitch.tv,Proxy
# AI服务
- DOMAIN-SUFFIX,openai.com,Proxy
- DOMAIN-SUFFIX,chatgpt.com,Proxy
- DOMAIN-SUFFIX,anthropic.com,Proxy
- DOMAIN-SUFFIX,claude.ai,Proxy
# === 第三层:局域网和私有地址直连 ===
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,224.0.0.0/4,DIRECT
# === 第四层:基于地理位置的IP分流 ===
- GEOIP,CN,DIRECT
# === 第五层:兜底规则 ===
- MATCH,Proxy
记住这个优先级顺序:广告屏蔽 > 精确域名 > 常见域名后缀 > 局域网 > 地理IP > 兜底规则。越精确的规则越靠前,越宽泛的规则越靠后。
规则集(Rule Provider)使用方法
手动维护数百条规则是一件非常痛苦的事情。Rule Provider(规则集)让你可以引用社区维护的规则文件,自动保持更新。
什么是Rule Provider
Rule Provider是Clash(特别是Meta)提供的一种机制,允许你将规则定义在外部文件中,通过URL或本地文件路径引用。这样你的主配置文件只需要引用规则集,而不需要包含具体的规则条目。
配置示例
# 定义规则集提供者
rule-providers:
# 广告屏蔽规则集
reject:
type: http # 从HTTP下载
behavior: domain # 行为类型:domain/ipclassical
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/reject.yaml"
path: ./ruleset/reject.yaml
interval: 86400 # 更新间隔(秒),每天一次
# 需要代理的域名规则集
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/proxy.yaml"
path: ./ruleset/proxy.yaml
interval: 86400
# 国内直连域名规则集
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/direct.yaml"
path: ./ruleset/direct.yaml
interval: 86400
# 国内IP段规则集
cn-ip:
type: http
behavior: ip
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/cn.yaml"
path: ./ruleset/cn.yaml
interval: 86400
# 局域网规则集
lancidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/lancidr.yaml"
path: ./ruleset/lancidr.yaml
interval: 86400
# 在规则中引用规则集
rules:
# 先应用广告屏蔽规则集
- RULE-SET,reject,REJECT
# 再应用需要代理的域名规则集
- RULE-SET,proxy,Proxy
# 局域网IP直连
- RULE-SET,lancidr,DIRECT
# 国内域名直连
- RULE-SET,direct,DIRECT
# 国内IP直连
- RULE-SET,cn-ip,DIRECT
# 兜底走代理
- MATCH,Proxy
behavior类型说明
- domain:域名规则集,包含DOMAIN和DOMAIN-SUFFIX规则
- ipcidr:IP CIDR规则集,包含IP-CIDR和IP-CIDR6规则
- classical:经典规则集,包含所有类型的规则(DOMAIN、IP-CIDR、DST-PORT等)
使用type: http时,Clash会按照interval设定的间隔自动从URL下载最新规则集。建议设置为86400(24小时)更新一次。规则集会缓存在path指定的本地路径,即使网络暂时不可用也能使用缓存的规则。
常见分流场景配置
场景1:流媒体分流
不同流媒体服务可能需要不同地区的节点才能解锁内容。
proxy-groups:
- name: Netflix
type: select
proxies:
- US节点
- JP节点
- HK节点
- Proxy
filter: "US|United States" # 只选择美国节点
- name: Disney+
type: select
proxies:
- US节点
- JP节点
- Proxy
- name: Spotify
type: select
proxies:
- US节点
- Proxy
rules:
# Netflix分流到专用策略组
- DOMAIN-SUFFIX,netflix.com,Netflix
- DOMAIN-SUFFIX,nflxvideo.net,Netflix
- DOMAIN-SUFFIX,nflximg.net,Netflix
- DOMAIN-SUFFIX,nflxso.net,Netflix
- DOMAIN-SUFFIX,nflxext.com,Netflix
# Disney+分流
- DOMAIN-SUFFIX,disneyplus.com,Disney+
- DOMAIN-SUFFIX,bamgrid.com,Disney+
- DOMAIN-SUFFIX,disney-plus.net,Disney+
# Spotify分流
- DOMAIN-SUFFIX,spotify.com,Spotify
- DOMAIN-SUFFIX,scdn.co,Spotify
# 其他流媒体走默认代理
- DOMAIN-SUFFIX,youtube.com,Proxy
- DOMAIN-SUFFIX,twitch.tv,Proxy
- DOMAIN-SUFFIX,hbomax.com,Proxy
场景2:游戏分流
游戏对延迟要求极高,通常需要选择物理距离最近的节点。
proxy-groups:
- name: GameProxy
type: url-test
proxies:
- HK节点
- JP节点
- KR节点
tolerance: 50
url: https://www.gstatic.com/generate_204
interval: 60
rules:
# Steam下载和商店
- DOMAIN-SUFFIX,steampowered.com,GameProxy
- DOMAIN-SUFFIX,steamstatic.com,GameProxy
- DOMAIN-SUFFIX,steamcontent.com,DIRECT # 下载走CDN直连
# Epic Games
- DOMAIN-SUFFIX,epicgames.com,GameProxy
# Riot Games(英雄联盟等)
- DOMAIN-SUFFIX,riotgames.com,GameProxy
# 暴雪
- DOMAIN-SUFFIX,blizzard.com,GameProxy
- DOMAIN-SUFFIX,battle.net,GameProxy
# 任天堂
- DOMAIN-SUFFIX,nintendo.com,GameProxy
- DOMAIN-SUFFIX,nintendo.net,GameProxy
场景3:工作分流
将工作相关服务(邮箱、协作工具等)单独分流,确保不受代理波动影响。
proxy-groups:
- name: WorkTools
type: select
proxies:
- DIRECT
- Proxy
- JP节点
rules:
# 企业邮箱和协作工具走直连(国内服务)
- DOMAIN-SUFFIX,dingtalk.com,DIRECT
- DOMAIN-SUFFIX,feishu.cn,DIRECT
- DOMAIN-SUFFIX,work.weixin.qq.com,DIRECT
- DOMAIN-SUFFIX,yuque.com,DIRECT
# 国外工作工具走代理
- DOMAIN-SUFFIX,slack.com,WorkTools
- DOMAIN-SUFFIX,notion.so,WorkTools
- DOMAIN-SUFFIX,notion.site,WorkTools
- DOMAIN-SUFFIX,google.com,WorkTools
- DOMAIN-SUFFIX,googleapis.com,WorkTools
- DOMAIN-SUFFIX,drive.google.com,WorkTools
- DOMAIN-SUFFIX,zoom.us,WorkTools
场景4:按进程分流(Meta专属)
Meta内核支持按进程名分流,可以精确控制哪些应用程序走代理:
rules:
# 浏览器走代理(访问国外网站)
- PROCESS-NAME,chrome.exe,Proxy
- PROCESS-NAME,firefox.exe,Proxy
- PROCESS-NAME,msedge.exe,Proxy
# 聊天应用直连
- PROCESS-NAME,WeChat.exe,DIRECT
- PROCESS-NAME,DingTalk.exe,DIRECT
# 下载工具走代理
- PROCESS-NAME,qbittorrent.exe,Proxy
规则调试技巧
配置分流规则后,如何验证规则是否按预期工作?以下是实用的调试方法:
1. 查看日志
Clash的日志功能是调试分流规则最重要的工具。开启debug级别日志可以看到每条流量的规则匹配过程:
# 在配置文件中设置日志级别
log-level: debug
日志输出示例:
DEBU [Rule] match google.com DOMAIN-SUFFIX google.com -> Proxy
DEBU [Rule] match bilibili.com DOMAIN-SUFFIX bilibili.com -> DIRECT
DEBU [DNS] resolve www.google.com -> 142.250.80.4
DEBU [Rule] match 142.250.80.4 GEOIP US -> Proxy
每条日志显示:
- 匹配到的规则类型(如DOMAIN-SUFFIX)
- 匹配到的具体值(如google.com)
- 最终路由到的策略组(如Proxy或DIRECT)
2. 使用API查询匹配结果
Clash的RESTful API提供了实时查询功能:
# 查询当前所有连接和匹配规则
curl -s http://127.0.0.1:9090/connections | jq '.connections[] | {host: .metadata.host, rule: .rule, chains: .chains}'
3. 使用测速网站验证
访问以下网站验证分流是否正常工作:
ip.sb:查看当前出口IP。如果分流正常,访问国内网站时显示国内IP,通过代理时显示代理IPbrowserleaks.com:检测DNS泄漏情况ipleak.net:检测IP和DNS泄漏
4. 常见问题排查
- 国内网站走了代理:检查规则顺序,确保国内域名规则在GEOIP和MATCH之前
- 国外网站直连了:检查代理域名是否被正确包含,或GEOIP数据库是否将目标IP误判为CN
- 规则集没有生效:检查rule-providers的url是否可访问,path路径是否正确
- 某些应用不走代理:检查应用是否使用了系统代理,可能需要TUN模式才能接管
推荐的规则集项目
以下是社区中维护良好、更新及时的规则集项目,可以直接使用:
- MetaCubeX/meta-rules-dat:Meta官方维护的规则集,分为lite(精简版)和完整版。质量最高,更新最及时,强烈推荐。
- Loyalsoldier/clash-rules:经典的Clash规则集,包含广告屏蔽、代理、直连等多个分类。社区认可度高。
- blackmatrix7/ios_rule_script:虽然名字带有iOS,但规则内容通用。分类非常细致,包括各大流媒体、社交、购物平台的独立规则。
- ACL4SSR/ACL4SSR:专为SSR/Clash设计的ACL规则集,针对中国大陆网络环境优化。
使用MetaCubeX官方规则集的快速配置
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/reject.yaml"
path: ./ruleset/reject.yaml
interval: 86400
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/proxy.yaml"
path: ./ruleset/proxy.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/direct.yaml"
path: ./ruleset/direct.yaml
interval: 86400
cn-ip:
type: http
behavior: ip
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/cn.yaml"
path: ./ruleset/cn.yaml
interval: 86400
lancidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/lancidr.yaml"
path: ./ruleset/lancidr.yaml
interval: 86400
gfw:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/gfw.yaml"
path: ./ruleset/gfw.yaml
interval: 86400
telegramcidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/lite/telegramcidr.yaml"
path: ./ruleset/telegramcidr.yaml
interval: 86400
rules:
# 广告屏蔽
- RULE-SET,reject,REJECT
# Telegram IP直连代理
- RULE-SET,telegramcidr,Proxy
# 需要代理的域名
- RULE-SET,gfw,Proxy
- RULE-SET,proxy,Proxy
# 局域网直连
- RULE-SET,lancidr,DIRECT
# 国内域名直连
- RULE-SET,direct,DIRECT
# 国内IP直连
- RULE-SET,cn-ip,DIRECT
# 兜底代理
- MATCH,Proxy
建议优先使用MetaCubeX官方的规则集,因为它是专门为Clash Meta优化的。如果使用原版Clash,选择Loyalsoldier或ACL4SSR的规则集兼容性更好。规则集不是越多越好,选择一套维护良好的规则集,再根据自己的需要添加自定义规则即可。