Clash Provider外部规则集进阶配置:GeoIP数据库订阅与自定义分流规则完全指南2026
文章说明:本文面向已掌握 Clash 基本使用的用户,深入讲解 rule-provider(外部规则集)的订阅与配置方法、GeoIP / GeoSite 数据库的手动更新与自动刷新、以及如何编写个性化自定义分流规则。适用于 Clash Verge Rev、Mihomo Party、ClashX Meta、CMFA 等所有基于 Mihomo 内核的工具。
规则体系基础:内联规则 vs 外部规则集
Clash/Mihomo 中有两种方式定义分流规则:
📄 内联规则(rules)
直接写在配置文件的 rules: 段,优点是简单直接,缺点是规则集庞大时配置文件臃肿,且无法自动更新。
rules:
- DOMAIN,google.com,Proxy
- DOMAIN-SUFFIX,youtube.com,Proxy
- GEOIP,CN,DIRECT
📦 外部规则集(rule-provider)
引用远程或本地的规则文件,支持定时自动更新,可以订阅社区维护的高质量规则集(如 Loyalsoldier),配置文件干净整洁。
rule-providers:
google:
url: "https://example.com/google.yaml"
interval: 86400
rule-provider 完整配置语法
rule-providers:
# 规则集名称(自定义,后续 rules 中引用)
reject:
type: http # http(远程URL)或 file(本地文件)
behavior: domain # domain | ipcidr | classical
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.yaml # 本地缓存路径
interval: 86400 # 更新间隔(秒):86400 = 24小时
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./ruleset/proxy.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
cncidr:
type: http
behavior: ipcidr # IP 段规则用 ipcidr 类型
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
path: ./ruleset/cncidr.yaml
interval: 86400
rules:
# 引用规则集(格式:RULE-SET,规则集名称,策略)
- RULE-SET,reject,REJECT
- RULE-SET,proxy,Proxy
- RULE-SET,direct,DIRECT
- RULE-SET,cncidr,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Proxy
📌 behavior 类型说明
仅包含域名,内部自动匹配子域名,效率最高,体积最小
仅包含 IP 段(CIDR 格式),用于国内外 IP 分流
经典格式,支持所有规则类型但效率最低,体积最大
GeoIP / GeoSite 数据库管理
Mihomo 内核默认使用 GeoIP.dat 和 GeoSite.dat(来自 v2fly 项目),也支持更精准的 mmdb 格式(MaxMind GeoLite2)以及新的 .mrs 格式(Mihomo Rule Set Binary)。
手动更新 GeoIP 数据库
# Mihomo 配置文件中指定数据库路径
geodata-mode: true # true=.dat格式 | false=mmdb格式(更精准)
geo-auto-update: true
geo-update-interval: 24 # 24小时自动更新
# 自定义数据源(推荐使用 MetaCubeX 维护的版本)
geox-url:
geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat"
geosite: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat"
mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb"
asn: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb"
GeoSite 常用分类
rules:
# 使用 GeoSite 规则
- GEOSITE,ads,REJECT # 广告域名直接拒绝
- GEOSITE,google,Proxy # 谷歌相关走代理
- GEOSITE,cn,DIRECT # 国内网站直连
- GEOIP,CN,DIRECT # 国内 IP 直连
- GEOIP,private,DIRECT # 私有 IP 直连
- MATCH,Proxy # 兜底规则
自定义规则集文件编写
当现有规则集无法满足需求时,可以创建本地规则文件并通过 type: file 引用。
domain 类型规则文件(YAML)
# 文件:./ruleset/my-proxy.yaml
payload:
- '+.openai.com' # 匹配 openai.com 及所有子域名
- '+.anthropic.com'
- '+.claude.ai'
- 'perplexity.ai' # 精确匹配(不含子域名)
- '+.github.com'
- '+.notion.so'
classical 类型规则文件(支持所有规则语法)
# 文件:./ruleset/my-rules.yaml
payload:
- DOMAIN-SUFFIX,openai.com # 域名后缀匹配
- DOMAIN-KEYWORD,google # 域名关键词匹配
- IP-CIDR,8.8.8.8/32 # 精确 IP 匹配
- IP-CIDR,1.1.1.0/24 # IP 段匹配
- PROCESS-NAME,Teams.exe # 进程名匹配(Mihomo 支持)
在配置文件中引用本地规则集
rule-providers:
my-proxy:
type: file # 本地文件类型
behavior: domain
path: ./ruleset/my-proxy.yaml # 相对路径
my-rules:
type: file
behavior: classical
path: ./ruleset/my-rules.yaml
rules:
- RULE-SET,my-rules,Proxy # 自定义规则优先匹配
- RULE-SET,my-proxy,Proxy
- RULE-SET,reject,REJECT
- RULE-SET,direct,DIRECT
- GEOIP,CN,DIRECT
- MATCH,Proxy
推荐优质规则集资源
Loyalsoldier/clash-rules
社区最流行的 Clash 规则集,涵盖广告拦截、代理域名、直连域名、国内 IP 段,持续维护更新,也是大多数订阅转换工具的默认规则集来源。
MetaCubeX/meta-rules-dat
Mihomo 官方维护的 GeoIP/GeoSite 数据库,支持 .dat / .mmdb / .mrs 三种格式,数据比 v2fly 版本更新更及时。
blackmatrix7/ios_rule_script
覆盖各平台细分应用的规则集(流媒体、社交媒体、游戏等),支持 Clash / Surge / Quantumult X 多格式输出,适合针对特定 App 做精细化分流。
常见问题与解决方案
Q1:rule-provider 下载失败,显示 "failed to download provider" 怎么办?
这是外部规则集 URL 无法访问的问题。解决方案:
① 先手动确认代理是否正常工作(排除网络问题)
② 将规则集 URL 替换为 jsDelivr CDN 加速版本(cdn.jsdelivr.net/gh/...)
③ 规则集下载本身也需要走代理,确认客户端在拉取规则时有有效的出口节点
④ 临时将规则集下载到本地,改用 type: file
Q2:规则集更新了但效果没变,如何强制刷新?
在 Clash Verge Rev / Mihomo Party 中,进入"代理 → 规则集"面板,找到对应规则集,点击刷新按钮;或在 Mihomo Dashboard(Web UI)的 "Rule Providers" 页点击"更新"。如果界面没有此功能,删除 path 指向的本地缓存文件后重启客户端即可强制重新下载。
Q3:behavior 写错会怎样?比如把 domain 类型的文件写成 ipcidr?
Mihomo 会报解析错误并忽略该规则集,导致相关规则完全失效。domain 类型规则文件里只能有域名条目,ipcidr 类型只能有 IP 段,classical 类型才能混合使用。规则集加载失败通常会在日志中显示 "invalid payload"。
Q4:订阅转换工具(sub-converter)生成的配置和手写的有什么区别?
订阅转换工具(如 sub-web、ACL4SSR)会自动生成包含 rule-provider 的完整配置,使用 Loyalsoldier 或 ACL4SSR 规则集,对大多数用户来说"开箱即用"。区别在于:手写配置可以精细控制哪些应用/域名走哪个节点组,而订阅转换只能做粗粒度分类。两者可以结合使用:用订阅转换生成基础框架,再手动追加个性化规则。
Q5:GeoIP 数据库显示的国家/地区信息不准,如何换用更精准的数据库?
默认的 GeoIP.dat 来自 v2fly,精度一般。推荐换用 MaxMind GeoLite2 mmdb 格式,在配置中设置 geodata-mode: false 并指定 mmdb 路径。MetaCubeX 提供每日更新的免费版本,国内 IP 识别准确率明显更高。
完整进阶配置模板
以下是一个整合了外部规则集、自定义规则、GeoSite/GeoIP 的完整进阶配置示例框架:
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false
# GeoIP 数据库配置
geodata-mode: false # 使用 mmdb 格式
geo-auto-update: true
geo-update-interval: 24
geox-url:
geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat"
mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb"
proxy-providers:
# 节点订阅(VPN07 订阅链接)
vpn07:
type: http
url: "你的VPN07订阅链接"
interval: 3600
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
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
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./ruleset/proxy.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
cncidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
path: ./ruleset/cncidr.yaml
interval: 86400
proxy-groups:
- name: "🚀 自动选速"
type: url-test
use: [vpn07]
url: "https://www.gstatic.com/generate_204"
interval: 300
tolerance: 50
- name: "🔀 手动选择"
type: select
use: [vpn07]
proxies: [DIRECT]
rules:
- RULE-SET,reject,REJECT
- RULE-SET,proxy,🚀 自动选速
- RULE-SET,direct,DIRECT
- RULE-SET,cncidr,DIRECT
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
- MATCH,🚀 自动选速
订阅转换工具与 rule-provider 的配合使用
大多数 VPN 机场提供的原始订阅链接是 Base64 格式(v2ray/ss),需要通过订阅转换工具(sub-converter)转换为带有 rule-provider 配置的完整 Clash YAML。了解这一过程有助于更好地定制你的分流策略。
📦 订阅转换工具选择
- • sub-web(subconverter 前端)— 最流行
- • ACL4SSR Online — 集成 ACL4SSR 规则集
- • Clash Verge Rev 内置转换 — 直接导入处理
- • 自建 subconverter — 完全自定义
⚙️ 转换时的关键选项
- • 规则集来源:Loyalsoldier vs ACL4SSR
- • 策略组类型:url-test / select 混合
- • 附加规则:可选添加广告过滤规则集
- • UDP 支持:确保 udp: true(影响游戏)
规则优先级与匹配顺序详解
Clash/Mihomo 的规则按从上到下的顺序匹配,第一条匹配的规则生效,后续规则被忽略。这一特性决定了规则集的排列顺序至关重要:
rules:
# ✅ 正确顺序:从最具体到最宽泛
- RULE-SET,reject,REJECT # 1. 最高优先:广告/恶意域名拦截
- RULE-SET,my-custom,Proxy # 2. 个人自定义规则(覆盖后续通用规则)
- RULE-SET,proxy,Proxy # 3. 通用代理域名
- RULE-SET,direct,DIRECT # 4. 通用直连域名
- RULE-SET,cncidr,DIRECT # 5. 国内 IP 段
- GEOIP,LAN,DIRECT # 6. 局域网地址
- GEOIP,CN,DIRECT # 7. 国内 IP(最终兜底)
- MATCH,Proxy # 8. 兜底规则(所有未匹配流量)
# ❌ 错误:把 MATCH 放在中间会导致后续规则永远不生效
移动端(iOS/Android)rule-provider 使用注意
📱 iOS(Stash/Surge)
Stash(iOS Clash Premium 最佳实现)完全支持 rule-provider 语法。Surge iOS 同样支持外部规则集,但语法略有不同(使用 RULE-SET 指令引用本地或 URL 规则文件)。规则集文件缓存在 App 沙盒目录中,跨设备同步需借助 iCloud 或 HTTP 远程链接。
🤖 Android(CMFA/FlClash)
Clash Meta for Android(CMFA)完整支持 rule-provider,规则集文件保存在 /data/user/0/com.github.metacubex.clash.meta/files/ 目录下。FlClash 基于 Clash Meta 引擎,同样完整支持,但 UI 中规则集面板的可视化程度不如桌面版。建议在桌面端配置好后,通过订阅同步方式同步到手机端。
rule-provider 性能优化
规则集的数量和大小直接影响客户端的启动速度和内存占用。以下是优化建议:
⚡ 性能优化技巧
- • 优先使用 domain 类型:内存占用最小,匹配速度最快
- • 避免 classical 类型过多:每条规则都需要逐一解析
- • 合并小规则集:减少 HTTP 请求次数
- • 使用 .mrs 格式(Mihomo 1.18+):二进制格式,加载速度提升数倍
📊 不同格式性能对比
# 使用 .mrs 格式(Mihomo 1.18+ 支持,性能最优)
rule-providers:
geosite-cn:
type: http
behavior: domain
format: mrs # 指定使用 mrs 二进制格式
url: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite-cn.mrs"
path: ./ruleset/geosite-cn.mrs
interval: 86400
geoip-cn:
type: http
behavior: ipcidr
format: mrs
url: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-cn.mrs"
path: ./ruleset/geoip-cn.mrs
interval: 86400
rules:
- RULE-SET,geosite-cn,DIRECT
- RULE-SET,geoip-cn,DIRECT
- MATCH,Proxy
注意:format: mrs 参数仅在 Mihomo 1.18.0 及以上版本支持。较旧版本的 Clash Verge Rev 或 Mihomo Party 可能不兼容此格式,建议在升级内核后再切换使用。兼容性最好的格式仍然是标准 YAML 格式。