GEOSITE 和 GEOIP 是什么?Clash 规则里的 geosite 写法、数据来源与更新
在 Clash 的配置里常能看到 GEOSITE,cn,DIRECT 和 GEOIP,CN,DIRECT 这样的规则。它们不是一条条写死的域名或 IP,而是去查一个数据库:GEOSITE 查“这个域名属于哪个分类”,GEOIP 查“这个 IP 属于哪个国家”。本文以 mihomo 内核(原 Clash.Meta)为准。规则的通用写法和匹配顺序见本站的 Clash 规则怎么写。
两类规则各匹配什么#
| 规则 | 匹配对象 | 写法示例 | 官方文档说明 |
|---|---|---|---|
GEOSITE |
域名 | GEOSITE,youtube,PROXY |
匹配 Geosite 内的域名,部分内容参考 v2fly/domain-list-community |
GEOIP |
目标 IP | GEOIP,CN,DIRECT |
匹配 IP 所属国家代码 |
SRC-GEOIP |
来源 IP | SRC-GEOIP,cn,DIRECT |
匹配来源 IP 所属国家代码 |
GEOIP 是按 IP 判断的规则。连接只有域名时,内核会先做 DNS 解析再判断;不想因为这条规则触发解析,可以在后面加 no-resolve(详见 Clash 规则怎么写 里 no-resolve 一节)。
geosite 里的分类名从哪来#
geosite 的分类名来自 v2fly/domain-list-community。这个项目 data 目录里的每个文件就是一个分类,文件名就是分类名,比如 google、youtube、cn、category-ads-all、geolocation-!cn。要知道某个分类具体包含哪些域名,直接打开对应的文件看即可。
分类名后面还可以加 @ 属性做筛选。MetaCubeX 官方规则仓库的示例里有:
rules:
- GEOSITE,category-ads-all,REJECT
- GEOSITE,private,DIRECT
- GEOSITE,youtube,PROXY
- GEOSITE,google,PROXY
- GEOSITE,microsoft@cn,DIRECT
- GEOSITE,steam@cn,DIRECT
- GEOSITE,geolocation-!cn,PROXY
- GEOSITE,cn,DIRECT
- GEOIP,private,DIRECT,no-resolve
- GEOIP,CN,DIRECT
- MATCH,DIRECT
microsoft@cn 的意思是 microsoft 分类里带 @cn 属性的那部分域名(v2fly 文档:属性以 @ 开头,写在域名条目后面)。geolocation-!cn 按该文件开头的注释,收录的是“在中国大陆没有接入点”的域名,和 geolocation-cn 相对。
规则按从上到下的顺序匹配,所以范围小的分类(microsoft@cn)要放在范围大的分类(geolocation-!cn、cn)前面。
数据文件从哪来#
GEOSITE 和 GEOIP 都要读本地的数据文件。mihomo 当前源码里的默认下载地址都指向 MetaCubeX 官方的 meta-rules-dat 仓库:
| 文件 | 用途 |
|---|---|
geosite.dat |
GEOSITE 规则 |
geoip.metadb |
GEOIP 规则(mmdb 模式,默认) |
geoip.dat |
GEOIP 规则(dat 模式) |
GeoLite2-ASN.mmdb |
IP-ASN 规则 |
用 mmdb 还是 dat 由 geodata-mode 决定:官方文档写明 true 为 dat,默认值是 false。
meta-rules-dat 的 README 说明了它和上游的区别,例如:geosite 用法同 Loyalsoldier/v2ray-rules-dat;geosite:cn 的来源换成了 blackmatrix7/ios_rule_script 的 ChinaMax_Domain;geoip 新增了 cloudflare、google、netflix、telegram、twitter 等类别。它还提供只含常用分类的 geosite-lite.dat,README 提醒其中的 cn 是精简集合,可能不全。
换下载地址和自动更新#
geox-url:
geoip: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
geosite: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
mmdb: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb"
geo-auto-update: true
geo-update-interval: 24
geox-url:自定义下载地址。上面是官方文档里的示例,用的是 jsDelivr 镜像,适合直连 GitHub 不稳定的网络。geo-auto-update:是否自动更新,默认false。geo-update-interval:更新间隔,单位小时,默认 24。geodata-loader:默认memconservative,是为小内存设备优化的加载器;也可以改成standard。
和规则集(rule-providers)怎么选#
GEOSITE 和 GEOIP 读的是一个大数据库,适合用现成分类。想用别人维护的规则列表,或者自己写一份,用规则集更直接,见本站的 Clash 规则集(rule-providers)怎么用。meta-rules-dat 的 meta 分支也把各个 geosite 分类单独做成了 .mrs 规则集文件。
和 ACL4SSR 的关系#
ACL4SSR 的在线配置主要用 .list 规则列表,没有用 GEOSITE。但它的配置里有一条 ruleset=🎯 全球直连,[]GEOIP,CN,经过 subconverter 转换后就是 Clash 配置里的 GEOIP,CN,🎯 全球直连,这条规则同样依赖本地的 GEOIP 数据文件。
常见问题
- GEOSITE 和 GEOIP 有什么区别?
- GEOSITE 按域名分类匹配,例如 GEOSITE,youtube,PROXY;GEOIP 按目标 IP 所属国家匹配,例如 GEOIP,CN,DIRECT。
- geosite 的分类名从哪里查?
- 分类名来自 v2fly/domain-list-community 项目 data 目录下的文件名,例如 google、cn、category-ads-all、geolocation-!cn,打开对应文件就能看到包含的域名。
- geosite.dat 和 geoip 数据文件从哪下载、怎么更新?
- mihomo 默认从 MetaCubeX/meta-rules-dat 下载。可以用 geox-url 改下载地址,用 geo-auto-update: true 开启自动更新,geo-update-interval 默认 24 小时。