Clash GeoIP 与 GeoSite 数据库是什么?更新方法与分流规则配置

解释 GeoIP 与 GeoSite 两份数据库在规则分流中的作用,给出手动更新、自定义来源与在配置里引用 geoip/geosite 规则的写法。按课堂例题的顺序推演:先认清两张表,再学会更新,最后落笔写规则。

一、GeoIP 与 GeoSite 分别管什么

把分流规则想象成一道分拣例题:每来一条连接,内核要回答两个问题——这个目标 IP 在哪个国家或地区?这个目标域名属于哪一类站点?前一个问题查 GeoIP 数据库,后一个问题查 GeoSite 数据库。两份文件各司其职、互不替代,缺了哪一份,对应的规则就查不到答案。

GeoIP:IP 到国家地区的对照表

GeoIP 数据库存的是 IP 地址段与国家/地区代码的映射。规则里写 GEOIP,CN,DIRECT,内核拿到连接的目标 IP 后去库里查,命中 CN 段就走直连。mihomo(Clash Meta)内核默认读取 country.mmdb,首次加载时会生成一份自用的 geoip.metadb 缓存;把 geodata-mode 设为 true 后,GEOIP 规则改为读取 v2ray 格式的 geoip.dat。另外还有一份可选的 ASN 数据库 GeoLite2-ASN.mmdb,供 IP-ASN 规则按自治域编号分流。这些名词在名词解释页都有对应条目,卡壳时可以回查。

GeoSite:域名到站点分类的对照表

GeoSite 数据库来自社区的 domain-list-community 项目:维护者把海量域名按服务、厂商、地区整理成分类清单,再编译成一份 geosite.dat。规则里写 GEOSITE,google,内核就把目标域名与 google 分类下的条目逐条比对。分类支持属性修饰,例如 google@cn 只命中 google 分类里被标记为中国大陆属性的条目,颗粒度比整张分类更细。

对比项GeoIPGeoSite
默认文件country.mmdb / geoip.metadbgeosite.dat
回答的问题这个 IP 属于哪个国家/地区这个域名属于哪一类站点
对应规则GEOIP,CN,DIRECTGEOSITE,cn,DIRECT
数据内容IP 段与国家代码的映射域名与分类标签的映射
常见来源meta-rules-dat 仓库meta-rules-dat 仓库

二、为什么这两份数据库要定期更新

两份数据库都是活数据。云厂商每月都在扩容,IP 段会在地区之间重新划分;新服务上线、旧域名易主,站点分类也随之变化。数据库停在半年前,分流判断就按半年前的世界运行,常见的后果有三类:

  • 该直连的走了代理:新划入 CN 的 IP 段在旧库里没有记录,被兜底规则送去代理,访问国内站点反而绕路。
  • 该代理的走了直连:新上线的境外服务域名还没进 geosite 分类,被 GEOIP 或兜底规则放行直连,表现为打不开或时好时坏。
  • 规则命中率下降:分类条目变动后,原先依赖的分类名可能拆分或改名,旧规则形同虚设。

一般使用强度下,每一到四周更新一次足够;如果规则对时效敏感,例如需要第一时间识别新上线的服务,可以把自动更新间隔压到 24 小时,代价只是每天多拉取一次几 MB 的文件。

三、更新数据库的三种方法

方法一:客户端界面按钮(最省事)

图形客户端把更新做成了按钮。以 Clash Verge Rev 为例,设置页里有 GeoIP、GeoSite 等外部资源条目,点更新即可拉取最新文件;FlClash 等客户端也有类似的资源更新入口。更新完成后重载一次配置或重启内核,让新库真正生效。这一步适合所有人,先做法后原因:按钮背后执行的,正是方法三里手动做的那套下载替换。

方法二:配置文件里开启自动更新

mihomo 内核自带自动更新开关,写进 config.yaml 顶层即可:

# Geo 数据库自动更新
geo-auto-update: true        # 开启自动更新
geo-update-interval: 24      # 更新间隔,单位小时

# 自定义下载来源(可换成镜像地址)
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"

三个要点:geo-update-interval 的单位是小时,不是秒;geox-url 的四个键分别对应 geoip.dat、geosite.dat、country.mmdb 与 ASN 库,用不到的键可以不写;GitHub 直连不稳的网络环境,把地址换成可访问的镜像即可,文件内容一致。

方法三:手动下载替换文件(最可控)

界面更新失败,或者想精确控制文件版本时,手动替换最可靠:

  1. 打开下载源浏览器访问 meta-rules-dat 仓库的 Release 页,找到 geoip.dat、geosite.dat、country.mmdb、GeoLite2-ASN.mmdb 四个文件。
  2. 下载到本地逐个点开下载;命令行环境也可以用 curl 一次拉取单个文件。
  3. 定位配置目录mihomo 的配置目录与 config.yaml 同级;Clash Verge Rev 可在设置里一键打开配置目录。
  4. 替换并重启用新文件覆盖旧文件,重启内核或重载配置,让内核重新读库。
curl -L -o geosite.dat https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat

替换前先停内核

部分系统下文件被占用会导致覆盖失败,替换前先退出或暂停内核;替换后看一眼运行日志,确认 geo 文件加载行没有报错再收尾。

四、在分流规则里引用 geoip 与 geosite

数据库就位后,规则才有查的对象。一段典型的分流收尾长这样:

rules:
  - GEOSITE,category-ads-all,REJECT   # 广告域名,直接拦截
  - GEOSITE,google,节点选择            # Google 系服务走代理
  - GEOSITE,cn,DIRECT                 # 国内站点直连
  - GEOIP,CN,DIRECT,no-resolve        # 目标 IP 在国内则直连
  - MATCH,节点选择                     # 其余全部走代理

逐条推演顺序:连接进来先比域名分类,GEOSITE 三条把能按域名判断的都处理完;轮到 GEOIP 时,目标若是 IP 直接查库,若是域名则取决于 no-resolve——不加时内核先做 DNS 解析再查库,判断更全但多一次解析;加上 no-resolve 则只对 IP 形态的连接生效,省掉解析开销,代价是域名形态的连接会漏过这条规则。上面这段配置把 GEOSITE,cn 放在前面兜住了国内域名,所以 GEOIP 加 no-resolve 也不会放跑它们。

常用 geosite 分类速查:

分类名覆盖内容
category-ads-all广告与跟踪域名合集
cn中国大陆站点域名
geolocation-!cn中国大陆以外的站点
google / youtubeGoogle 系服务与 YouTube
telegramTelegram 全系域名
githubGitHub 主站与资源域名
apple / microsoft苹果与微软的服务域名
gfw常见被阻断站点合集

两点书写约定:分类名一律按官方清单的小写形式书写,写错不会报错、只会静默不命中;需要更细颗粒度时用 @ 属性,例如 GEOSITE,google@cn,DIRECT 把 Google 在国内可达的域名单独放行,GEOSITE,geolocation-!cn,节点选择 则等价于“境外站点统一走代理”。

五、更新与引用的常见问题

更新按钮一直失败

九成是下载源不可达。GitHub Release 在部分网络下直连困难,把 geox-url 换成镜像地址,或先让客户端自身走上代理再点更新;也可以直接走方法三手动替换,绕开客户端的下载逻辑。

规则写了却不生效

按顺序查三处:一看规则顺序,GEOSITE/GEOIP 是否被前面的宽泛规则(如位置靠前的 MATCH 或大段 IP-CIDR)截胡;二看是否重载,改完配置要重载或重启内核才会重新读库;三看分类名拼写,写错的分类名不会弹错,只会安静地漏判。

低内存设备加载吃力

路由器等低配设备可以把 geodata-loader 设为 memconservative,用加载速度换内存占用;日常 PC 保持默认的 standard 即可。

把更新频率交给 geo-auto-update,把分流判断交给顺序合理的规则,这两份数据库就能长期安静地干活。如果规则分流的整体框架还没搭起来,先回使用指南补齐基础,再回来调这份进阶配置,顺序不要反。

下载 Clash 客户端

Geo 数据库更新与规则配置都依赖客户端本体。下载页列出各平台可用客户端与系统要求,按平台挑选即可。

下载Clash全平台客户端