GeoIP 与 GeoSite 数据库更新指南:GEOSITE 规则不生效时的检查方法
解释 GeoIP、GeoSite 数据文件的来源与作用,演示在 FlClash 中手动与自动更新数据库,配置 geox-url 下载地址,并排查分类缺失导致的规则失效。
1. 先区分 GeoSite、GeoIP 与订阅更新
FlClash 使用 mihomo 内核处理规则。订阅提供配置、出站与策略组,GeoSite 和 GeoIP 提供规则引用的分类数据。三者更新的是不同内容:订阅刷新成功,不代表本地数据库已经更新;数据库下载成功,也不代表当前连接一定会命中对应规则。
| 对象 | 匹配内容 | 常见文件或入口 |
|---|---|---|
| GeoSite | 按域名集合分类,例如 cn | GeoSite.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 数据更新”和“订阅更新”。部分版本把多个资源合并为一个更新操作,部分版本不提供独立更新按钮。
- 备份配置。保存当前可用配置及已有覆写内容。不要只保留订阅地址,因为本地添加的规则可能不包含在远端订阅中。
- 检查资源地址。若已填写自定义 Geo 数据地址,确认返回的是对应的二进制数据文件,而不是下载说明页或登录页。
- 执行资源更新。若界面有 Geo 数据更新按钮,执行一次并等待完成。不要同时连续启动多次更新,以免难以判断哪次操作对应哪条日志。
- 重新加载配置。更新完成后,重新加载当前配置;必要时停止并重新启动内核,让运行中的规则重新读取数据库。
- 建立新连接验证。关闭测试页面原有连接后重新访问,查看连接记录中的规则与最终出站,不要只看旧连接仍显示的结果。
下载成功后仍有问题时,先比较更新前后的日志。若错误从“无法下载”变成“分类不存在”,说明网络环节可能已恢复,下一步应检查数据源包含哪些类别,而不是继续修改代理端口。
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. 分类缺失:文件能下载,不等于规则能使用
不同维护者的数据集,分类名称与收录范围可能不同。某份配置引用了一个数据源专有的类别,切换到另一份数据库后,就可能出现分类找不到的错误。更新到最新文件只能获取该来源现有的数据,不能让它自动具备其他来源的所有类别。
检查来源、类别与规则三者是否对应
- 从日志中复制报错的类别名称,保留
@等属性筛选部分,不要只记住前半段。 - 查看当前数据源项目的分类目录或说明,确认该类别确实存在;不要把网页展示名称直接当作规则标识。
- 核对订阅原本要求的数据源。若订阅依赖特定集合,应使用兼容数据,而不是随意替换为体积更小的精简版。
- 若该类别已被上游删除或更名,修改对应规则;若只是某个域名未收录,可增加范围明确的域名规则。
临时补充规则时,优先使用完整域名。例如下面的规则只影响 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、下载中断以及数据文件与内核不兼容等情况。
遇到“内核必须先下载数据才能启动,而下载又依赖该内核代理”的循环,应先用可用网络取得兼容数据,或选择能够直连获取的数据源。不要把不可达地址反复写入多个字段,也不要把公开订阅地址交给不明在线转换服务处理。
更新后配置无法加载时,恢复之前可用的数据文件或数据源,并恢复对应的配置选项。操作前停止内核,恢复后重新加载,保留失败日志用于对照。若更换过来源,要同时复核分类名称,不能只回退文件却留下另一套类别规则。
一次更新的验收清单
- 配置能够正常启用,日志中没有 Geo 数据下载或分类加载错误。
- 自动更新选项确实进入运行配置,间隔按小时填写。
- 至少测试一个应直连的域名和一个应走代理的域名,查看各自命中规则。
- 使用新连接复测,并确认策略组最终出站符合预期。
- 保存可用配置与数据来源,方便下次故障时回退和比较。
维护重点是让规则、数据来源和运行配置保持一致。先确定失败发生在下载、加载还是匹配阶段,再进行对应操作,通常比同时更换 DNS、TUN 与全部规则更容易得到可验证的结果。