GeoIP 与 GeoSite 数据库更新指南:规则引用、加载确认与回退

区分 IP 分类库与域名分类库,梳理客户端更新入口、内核兼容性和规则标签引用,并说明如何从日志判断加载失败及恢复原有分流。

本文速览

适合已经在 v2rayN、v2rayNG 或 v2flyNG 中使用路由规则,但遇到标签缺失、更新后无法启动或分流结果变化的用户。重点是先备份规则与数据文件,再更新 GeoIP、GeoSite,随后用启动日志、命中结果和实际连接逐层确认;若出现异常,可按原文件、原规则、原内核三个层次回退。

先分清 GeoIP 与 GeoSite 各自匹配什么

GeoIP 与 GeoSite 都是供路由模块读取的分类数据,但输入对象不同。GeoIP 面向目标 IP 地址,例如规则中的 geoip:privategeoip:cn;GeoSite 面向域名,例如 geosite:cngeosite:category-ads-all。前者不能直接判断域名属于哪个分类,后者也不会替代 IP 地址段匹配。

常见文件名是 geoip.datgeosite.dat。文件只是分类容器,真正被规则引用的是内部标签。不同数据来源、构建日期或精简方案可能包含不同标签,因此“文件能下载”不等于“当前规则里的每个标签都存在”。更新前应记录自己实际使用的标签,而不是只看文件日期。

2 个文件
geoip.dat 与 geosite.dat
3 层检查
文件、标签、规则命中
10808
本文测试用本地 SOCKS 端口
30 秒
重启后首轮日志观察窗口
GeoIP 与 GeoSite 的匹配对象和使用条件
数据类型 匹配对象 规则示例 需要注意
GeoSite 请求中的域名 geosite:cn 标签必须存在于当前 geosite.dat,规则顺序也会影响结果。
GeoIP 目标 IPv4 或 IPv6 地址 geoip:private 域名是否先解析为 IP,受路由的域名解析策略影响。
显式域名 完整域名、后缀或关键词 domain:example.com 不依赖 GeoSite 标签,适合保留少量关键例外规则。
显式网段 指定 CIDR 地址段 192.168.0.0/16 不依赖 GeoIP 分类,局域网直连规则通常应放在前面。
域名请求GeoSite 匹配解析地址GeoIP 匹配选择出站

这条流程并非每次都完整发生。以 Xray 路由的 domainStrategy 为例,AsIs 通常先按原始域名规则处理,不为 GeoIP 匹配主动解析域名;IPIfNonMatch 会在域名规则未命中时尝试解析并继续匹配 IP 规则;IPOnDemand 则可能在遇到需要目标 IP 的规则时触发解析。更新数据库后若分流结果改变,应把策略与规则顺序一起检查。

结论:先确认匹配对象,再讨论数据库是否失效

域名没有命中 geoip:cn,不一定是数据文件损坏;在 AsIs 策略下,它可能根本没有进入目标 IP 分类匹配。先看域名策略和日志中的目标地址,再决定是否更换数据文件。

更新前先保存三类可回退内容

更新 Geo 数据通常不会改变节点的 VMess、VLESS、TLS 或 REALITY 参数,但可能改变路由标签的可用性和分类范围。稳妥做法不是直接覆盖,而是先保存当前规则、当前数据文件以及客户端正在调用的内核信息。这样才能判断故障来自规则、数据还是核心切换。

在 v2rayN 中,先打开「设置」→「路由设置」,记录当前启用的路由规则集、规则顺序和默认出站。随后在主界面查看当前核心类型;若使用 Xray,常见解压版的数据文件位于对应核心资源目录中。不同 v2rayN 7.x 构建的目录组织可能不同,应以启动日志显示的资源路径或客户端实际选择的核心目录为准,不要凭相似文件名覆盖其他核心的资源。

  1. 导出或复制路由配置:保留启用中的规则顺序,特别是局域网直连、阻断、指定域名和最终兜底规则。
  2. 复制旧数据文件:将现有 geoip.datgeosite.dat 放入带日期的本地备份目录,避免与新文件混在同一路径。
  3. 记录核心与客户端状态:记下当前使用 Xray 或 v2fly 内核、更新前能否正常启动,以及测试节点是否可连接。
  4. 列出自定义标签:搜索路由配置中的 geoip:geosite:,把不常见标签单独列出。
  5. 一次只更新一组资源:不要同时更换核心、订阅、DNS 和 Geo 数据,否则日志出现异常时难以定位变量。

桌面端可在关闭核心后复制文件,避免恰好处于读取或替换过程。Android 上的 v2rayNG 与 v2flyNG 通常由应用管理资源目录,不必寻找系统沙盒中的文件;优先使用应用内提供的 Geo 资源更新或导入入口,并在操作前导出自定义配置。v2rayNG 使用 Xray 内核,v2flyNG 使用 v2fly 内核,二者对基础 geoip.datgeosite.dat 规则的支持方向相近,但不能据此假定所有扩展标签和配置字段完全一致。

更新入口只负责替换资源,不能证明规则仍然兼容

在 v2rayN 中通过「检查更新」→「Geo files」完成下载后,仍需重启核心并检查日志。进度提示结束只说明更新动作完成,不能代替标签加载和分流命中确认。

检查规则标签、顺序与内核兼容性

Geo 数据最常见的兼容问题不是文件完全无法读取,而是某个自定义标签在新数据中不存在。基础标签如 geoip:private 较常见,但地区、服务类别和扩展属性标签取决于数据集。若规则来自旧配置或其他数据来源,更新前必须确认新文件仍提供相同标签。

规则顺序同样重要。路由通常按顺序寻找匹配项,前面的宽泛规则可能覆盖后面的精确规则。例如先放置一个覆盖范围很大的 GeoSite 分类,再放单独域名直连规则,后者可能没有机会执行。处理关键域名时,可把明确的例外规则放在宽泛分类之前,并保留最终兜底出站。

域名分类规则

输入
请求域名
标签
geosite:cn
出站
direct
前提
标签存在且域名可见

适合先按域名分类处理,再由后续规则接管未命中的请求。

地址分类规则

输入
目标 IP
标签
geoip:private
出站
direct
策略
结合 domainStrategy

局域网地址应优先直连,避免管理页面或本地服务进入代理出站。

下面是用于理解结构的精简路由片段。实际导入 v2rayN 时,出站标签必须与当前配置中的标签一致;若客户端生成的是其他名称,应使用客户端现有值,不要机械照抄。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["domain:intranet.example"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      }
    ]
  }
}

其中 domain:intranet.example 是显式域名规则,不依赖 GeoSite 数据,适合作为关键内部服务的保护项。若新 GeoSite 文件缺少某个业务分类,先把少量关键域名改为显式规则,可以恢复基本使用;之后再决定寻找兼容数据还是调整分类设计。不要为了一个缺失标签一次性删除全部分流。

从启动日志确认文件和标签是否加载

判断更新是否成功,第一步是完全停止旧核心并重新启动,而不是只关闭设置窗口。核心通常在启动或首次解析对应标签时读取 Geo 数据。若旧进程仍在运行,即使磁盘上的文件已经替换,当前连接也可能继续使用旧资源。

在 v2rayN 中可先停止服务,再重新启动所选配置,然后打开日志窗口观察最初 30 秒。测试环境若使用本地 SOCKS 端口 127.0.0.1:10808,应先确认该入站监听成功,再检查 Geo 相关错误;端口占用导致核心未启动时,后续分流测试没有参考价值。10808 只是本文测试值,实际端口以「设置」→「参数设置」中的本地监听配置为准。

日志现象与优先处理方向
日志或现象 可能原因 下一步
找不到 geoip.dat 或 geosite.dat 文件不在当前核心读取的资源目录,或更新写入了另一套核心目录。 根据启动日志确认资源路径,将原文件恢复到当前核心实际读取的位置。
list not found 或标签缺失 规则引用了新数据不包含的分类标签。 恢复旧数据,或将规则改为新文件存在的标签后重新启动。
核心启动成功但分流相反 规则顺序、域名策略或分类内容发生变化。 开启路由日志,用固定测试域名比较实际命中的出站。
本地端口没有监听 核心在读取配置或资源时已经退出,也可能是端口被占用。 先处理首个错误,不要用浏览器访问结果反推 Geo 数据状态。

不同内核版本的错误文字可能略有差异,但判断顺序相同:先找日志中的第一条致命错误,再看它指向文件路径、标签名称还是配置字段。后续出现的连接失败往往只是核心未成功启动的连锁结果。可重点搜索 geoipgeositeroutingfailed 和具体标签名称。

更新结束了,为什么日志仍显示旧规则结果?

先在客户端停止核心,再确认任务管理器中旧进程已经退出,然后重新启动配置。只替换文件而不重启核心,当前进程可能继续使用已经载入的旧数据。

提示找不到某个 GeoSite 标签怎么办?

打开「设置」→「路由设置」,定位日志中点名的 geosite: 标签。先恢复旧文件验证配置可启动,再确认新数据是否提供同名标签;若没有,应调整规则而不是反复覆盖文件。

核心能启动,但指定域名还是走错出站?

把该域名临时写成一条显式 domain: 规则并放到宽泛分类前面。若显式规则能够命中,说明连接链路正常,应继续检查 GeoSite 分类内容与规则顺序。

v2rayNG 更新后需要重新导入订阅吗?

通常不需要。Geo 资源与 VMess、VLESS 节点订阅负责不同内容。先重启当前配置并查看运行日志,只有订阅本身的节点参数变化时才需要更新订阅。

只测试网页打开,能确认分流正确吗?

不能。网页可访问只能证明存在可用出站。应分别测试预期直连、预期代理和局域网目标,并结合路由日志确认三个请求实际使用的出站标签。

更新异常时按文件、规则、内核逐层回退

回退的目标是尽快恢复更新前的已知状态,而不是在异常状态下继续叠加修改。先停止核心,将新 geoip.datgeosite.dat 移出资源目录,再放回备份文件。重新启动后,如果原规则恢复正常,问题范围就已经收敛到新数据或标签兼容性。

如果恢复旧数据后仍然异常,再恢复更新前导出的路由配置,尤其要确认规则顺序、domainStrategy 和出站标签。若数据与规则都恢复后核心仍无法启动,检查更新过程中是否同时切换了 Xray 或 v2fly 内核。客户端版本、核心版本和数据文件应分别记录,避免把三个变量合并成一次更新。

恢复连接后,可以建立一个固定维护节奏:更新前保存两个数据文件与路由配置;更新后检查本地端口、首个日志错误和三个固定测试目标;确认无误后再删除临时备份。Geo 数据不需要为了日期变化而频繁替换,只有规则确实依赖新的地址段或域名分类时,更新才有明确收益。

最终判断:能启动、能连接、命中正确缺一不可

核心启动成功只证明资源可读取,网页可打开只证明某个出站可用。完成维护应同时满足日志没有 Geo 加载错误、固定测试请求能够连接、直连与代理目标命中预期出站。

v2rayN下载