规则分流 预计阅读 12 分钟

GeoIP 与 GeoSite 数据库更新指南:GEOSITE 规则不生效时的检查方法

解释 GeoIP、GeoSite 数据文件的来源与作用,演示在 FlClash 中手动与自动更新数据库,配置 geox-url 下载地址,并排查分类缺失导致的规则失效。

1. 先区分 GeoSite、GeoIP 与订阅更新

FlClash 使用 mihomo 内核处理规则。订阅提供配置、出站与策略组,GeoSite 和 GeoIP 提供规则引用的分类数据。三者更新的是不同内容:订阅刷新成功,不代表本地数据库已经更新;数据库下载成功,也不代表当前连接一定会命中对应规则。

对象匹配内容常见文件或入口
GeoSite按域名集合分类,例如 cnGeoSite.dat,由 geox-url.geosite 指定来源
GeoIP DAT按 IP 地址所属分类匹配GeoIP.dat,由 geox-url.geoip 指定来源
GeoIP MMDB传统 IP 地理数据库匹配Country.mmdb,由 geox-url.mmdb 指定来源
订阅配置出站、策略组、规则与其他配置项FlClash 的配置列表与订阅更新入口

GEOSITE,cn,DIRECT 按域名集合判断,不是查询服务器是否位于中国大陆。GEOIP,CN,DIRECT 按目标 IP 判断,也不等于识别网站所属公司。同一个服务使用不同域名或 CDN 地址时,两个条件可能得出不同结果。

2. GEOSITE 不生效:先看配置是否加载成功

先进入 FlClash 的配置列表,确认正在使用的是目标配置,再查看运行日志。不同版本的入口名称可能是“配置”“日志”或对应的图标;本文不依赖某一版固定的菜单层级。记录日志里的原始错误,比连续点击更新更有帮助。

按现象选择下一步

  • 配置无法启用:先处理 YAML 缩进、策略组不存在、数据库缺失或分类不存在等加载错误。此时还没有进入正常的分流验证阶段。
  • 配置正常启用,但网站走错出口:先确认使用规则模式,再查看该连接实际命中的规则。全局模式与直连模式不会按预期执行整套 rules 分流。
  • 只有部分域名走错:检查数据库是否收录该域名,以及是否有更靠前的规则先命中;不必立即重装客户端。
  • 更新时报超时或证书错误:检查下载域名的网络连通性、系统日期与时间,以及更新请求是否依赖尚未就绪的代理。

建议保留三项信息:当前配置名称、出站模式、失败日志的完整行。日志若包含订阅地址、访问令牌或节点凭据,分享前应先遮盖这些内容。仅凭“更新失败”四个字,很难判断是远端返回错误还是本地解析失败。

3. 在 FlClash 中手动更新数据库

手动更新适合首次加载失败、数据库长期未刷新,或刚更换数据源的情况。先确认客户端当前版本提供的资源更新能力:在设置页面查找 Geo 数据、地理数据或资源更新相关条目,并区分“Geo 数据更新”和“订阅更新”。部分版本把多个资源合并为一个更新操作,部分版本不提供独立更新按钮。

  1. 备份配置。保存当前可用配置及已有覆写内容。不要只保留订阅地址,因为本地添加的规则可能不包含在远端订阅中。
  2. 检查资源地址。若已填写自定义 Geo 数据地址,确认返回的是对应的二进制数据文件,而不是下载说明页或登录页。
  3. 执行资源更新。若界面有 Geo 数据更新按钮,执行一次并等待完成。不要同时连续启动多次更新,以免难以判断哪次操作对应哪条日志。
  4. 重新加载配置。更新完成后,重新加载当前配置;必要时停止并重新启动内核,让运行中的规则重新读取数据库。
  5. 建立新连接验证。关闭测试页面原有连接后重新访问,查看连接记录中的规则与最终出站,不要只看旧连接仍显示的结果。

下载成功后仍有问题时,先比较更新前后的日志。若错误从“无法下载”变成“分类不存在”,说明网络环节可能已恢复,下一步应检查数据源包含哪些类别,而不是继续修改代理端口。

4. 配置 geox-url 与每 24 小时自动更新

下面是 mihomo 的 Geo 数据配置片段,使用 MetaCubeX 的公开数据发布地址。它不是完整订阅,不包含任何代理出站。合并前应检查原配置中是否已有同名键;这些选项位于 YAML 顶层,不能缩进到 dns:、rules: 或某个策略组下面。

geodata-mode: true
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"
  • geo-auto-update: true:启用 mihomo 的 Geo 数据自动更新机制。
  • geo-update-interval: 24:更新间隔单位是小时,24 表示一天;不是 24 分钟。
  • geox-url.geoip:为 DAT 模式提供 GeoIP 来源。
  • geox-url.geosite:为 GEOSITE 规则提供域名分类来源。
  • geox-url.mmdb:为 MMDB 模式准备对应来源;当前示例启用 DAT 模式,不表示每条 GEOIP 规则都会同时读取两种文件。

FlClash 可能会根据界面设置生成最终运行配置。因此,编辑订阅原文之后,还要确认这些字段实际进入了运行配置。优先使用当前版本提供的覆写或配置合并能力,避免下次订阅刷新把修改覆盖。若界面不提供运行配置查看功能,可结合启动日志与更新日志确认选项是否生效。

自动更新需要客户端与内核运行,也需要下载源可访问。电脑关机、Android 后台进程被系统终止时,不应把它理解为系统层面的定时任务。重新启动后应检查更新记录,而不是仅凭配置里写了 24 就认定数据一定是当天版本。

5. 分类缺失:文件能下载,不等于规则能使用

不同维护者的数据集,分类名称与收录范围可能不同。某份配置引用了一个数据源专有的类别,切换到另一份数据库后,就可能出现分类找不到的错误。更新到最新文件只能获取该来源现有的数据,不能让它自动具备其他来源的所有类别。

检查来源、类别与规则三者是否对应

  1. 从日志中复制报错的类别名称,保留 @ 等属性筛选部分,不要只记住前半段。
  2. 查看当前数据源项目的分类目录或说明,确认该类别确实存在;不要把网页展示名称直接当作规则标识。
  3. 核对订阅原本要求的数据源。若订阅依赖特定集合,应使用兼容数据,而不是随意替换为体积更小的精简版。
  4. 若该类别已被上游删除或更名,修改对应规则;若只是某个域名未收录,可增加范围明确的域名规则。

临时补充规则时,优先使用完整域名。例如下面的规则只影响 www.example.com,可用于演示精确匹配;实际使用时应写入已确认需要直连的真实业务域名,并将其放在可能提前命中的宽泛规则之前。

rules:
  - DOMAIN,www.example.com,DIRECT
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,境外代理

这里的 境外代理 必须是当前配置中已经存在的策略组名称;若你的策略组名称不同,应改成实际名称。不要直接用整个示例覆盖订阅的 rules,否则会丢失原有的应用分流和例外规则。

6. 数据库已更新,仍走错规则的检查顺序

先看命中顺序,再看 DNS 与目标地址

mihomo 的 rules 按顺序匹配,先命中的规则决定后续处理。若列表上方已经有一个覆盖范围更大的域名规则,后面的 GEOSITE 就不会获得匹配机会。MATCH 是兜底规则,通常放在最后;把它提前会遮住后面的分类规则。

上例中的 no-resolve 表示这条 GEOIP 规则不会为了匹配主动触发域名解析。若连接此时只有域名、没有可用目标 IP,它可能跳过该 IP 条件并继续向下匹配。这是规则选项的行为,不是数据库更新失败。排查时应结合连接记录中的域名、目标 IP 与命中规则判断。

连接记录现象优先检查处理方向
命中前面的 DOMAIN-SUFFIX规则顺序与域名范围将必要的精确例外前置,避免扩大直连范围
落到 MATCH域名是否收录、目标 IP 是否可用检查分类内容与 no-resolve 的影响
看不到该应用的连接应用是否经过客户端检查系统代理、应用代理或 TUN 接管范围
规则正确,最终出口不符策略组当前选择核对组内是否选中了 DIRECT 或其他出站

TUN 模式解决的是流量如何进入内核,不负责给 GeoSite 增加分类。系统代理也只对遵循它的应用生效。若应用绕过系统代理,反复更新数据库不会改变它的出口。应先在连接页面确认请求确实被 FlClash 接收,再讨论规则命中。

DNS 缓存和浏览器连接复用也会影响复测。修改规则或加载新数据后,重新建立连接;若同时更改了 DNS 或 Fake-IP 设置,按当前版本支持的方式清理相关缓存。不要为了测试一次分类更新就随意清空全部应用数据。

7. 更新失败、回退与日常维护

下载异常按错误类型处理

  • HTTP 404:检查文件名、发布路径和大小写。发布页地址不是数据文件地址。
  • 超时或连接中断:检查网络到下载域名及其重定向目标的可达性。浏览器能打开项目首页,不代表数据文件能完整下载。
  • 证书校验错误:先同步系统时间,检查网络认证页或本地 HTTPS 检查环境,不要直接关闭安全验证。
  • 下载后解析失败:排除文件格式不匹配、内容被替换为 HTML、下载中断以及数据文件与内核不兼容等情况。

遇到“内核必须先下载数据才能启动,而下载又依赖该内核代理”的循环,应先用可用网络取得兼容数据,或选择能够直连获取的数据源。不要把不可达地址反复写入多个字段,也不要把公开订阅地址交给不明在线转换服务处理。

更新后配置无法加载时,恢复之前可用的数据文件或数据源,并恢复对应的配置选项。操作前停止内核,恢复后重新加载,保留失败日志用于对照。若更换过来源,要同时复核分类名称,不能只回退文件却留下另一套类别规则。

一次更新的验收清单

  1. 配置能够正常启用,日志中没有 Geo 数据下载或分类加载错误。
  2. 自动更新选项确实进入运行配置,间隔按小时填写。
  3. 至少测试一个应直连的域名和一个应走代理的域名,查看各自命中规则。
  4. 使用新连接复测,并确认策略组最终出站符合预期。
  5. 保存可用配置与数据来源,方便下次故障时回退和比较。

维护重点是让规则、数据来源和运行配置保持一致。先确定失败发生在下载、加载还是匹配阶段,再进行对应操作,通常比同时更换 DNS、TUN 与全部规则更容易得到可验证的结果。

下载官方Clash 选择平台与安装包