GeoIP 与 GeoSite 数据库更新教程:路由规则不生效的排查思路

解释 geoip.dat 与 geosite.dat 在路由匹配中的作用,演示在 v2rayN 与 v2rayNG 内更新数据库的步骤,并针对规则不生效、误分流等现象给出按数据版本、规则写法逐项排查的方法。
节点能够连接,只能说明代理出站基本可用;国内站点绕远、局域网地址进入代理、某个域名始终不走指定线路,则通常要继续检查路由层。GeoIP 与 GeoSite 正是路由层常用的两组匹配数据。它们不会替代 VMess、VLESS 等协议配置,也不负责更新订阅,而是给 Xray、V2Fly 内核提供可查询的 IP 与域名集合。
本文速览
适合已经导入订阅、节点连接正常,但在 v2rayN 或 v2rayNG 中遇到规则未命中、国内流量误走代理、启动时报数据文件错误的用户;操作重点是确认文件位置与更新时间、更新两份数据库、核对规则前缀和顺序,再通过日志与实际连接逐项验证。

GeoIP 与 GeoSite 分别处理什么

geoip.dat 保存按国家、地区或用途整理的 IP 网段集合。规则中的 geoip:cn 会把目标 IP 与对应集合比对,geoip:private 通常用于匹配局域网、回环地址和其他私有地址。它适合处理已经得到目标 IP 的连接,也适合作为域名规则之后的补充判断。
geosite.dat 保存域名集合。规则中的 geosite:cngeosite:category-ads-all 等标签不是普通域名,而是从数据文件中读取一组域名条目。内核会按照完整域名、子域名或正则条目进行匹配,因此它能够在连接真正发往目标服务器前完成域名分流。
2 个文件
geoip.dat 与 geosite.dat
10808
v2rayN 常见本地 SOCKS 端口
10.6 MB
一次测试中的 GeoSite 文件大小
1.3 MB
同批次 GeoIP 文件大小
应用发起连接 取得目标信息 读取规则集合 按顺序匹配 选择出站线路
两类数据的作用不能互换。域名请求可能先由 GeoSite 命中;如果应用直接连接 IP,GeoSite 就没有域名可比对,只能依靠 GeoIP、端口或其他条件。启用 TUN 后还要结合嗅探和 DNS 设置判断:嗅探恢复出域名时,域名规则可能重新参与匹配;没有恢复域名时,连接仍会落到 IP 规则或最终规则。

在 v2rayN 中更新 Geo 文件

下面以 v2rayN 7.15.0 的中文界面为例。不同小版本可能把更新入口放进主菜单或托盘菜单,但菜单项通常仍包含“检查更新”和“Geo files”。更新前先让当前连接保持稳定;如果数据源只能经代理访问,需要先确认系统代理或 TUN 已经正常工作。
  1. 确认内核类型

    打开「设置」→「参数设置」→「Core 类型」,确认当前配置实际使用 Xray 内核还是 V2Fly 内核。订阅名称里出现 VLESS 或 VMess,不等于已经确认了运行内核。
  2. 打开更新入口

    回到主窗口,选择「检查更新」→「Geo files」。若当前版本显示为「更新 Geo 文件」,选择该项即可,不要误点“更新订阅”。
  3. 等待写入完成

    观察消息区域,确认 geoip.dat 与 geosite.dat 都完成下载并写入。一次测试中两个文件合计约 11.9 MB,网络稳定时通常在 5 至 30 秒内结束。
  4. 重启运行内核

    使用「重启服务」或先停止再启动当前配置。仅关闭设置窗口不会让已运行的内核重新加载数据文件。
  5. 核对启动日志

    打开「日志」窗口,确认没有出现 load geosite、load geoip 或 failed to start 等信息,再测试目标域名的出站结果。
便携版 v2rayN 需要特别检查写入权限。如果程序位于受系统保护的目录,界面可能显示下载完成,但旧文件并未被替换。可退出客户端后查看程序目录中两个文件的修改时间;修改时间应接近刚才的更新时刻,而不是安装包解压时刻。
更新完成后不建议立刻同时修改 DNS、路由和节点配置。先保留原规则,仅重启内核并复测,可以判断变化是否确实来自数据文件。若同时改动三处设置,出现误分流时很难确定是哪一项导致。

结论:先确认文件被重新加载

“下载成功”只代表文件传输结束;修改时间已变化、内核完成重启、启动日志没有加载错误,三项同时满足后,才能把新数据视为已经生效。

在 v2rayNG 中更新 Geo 文件

下面以 v2rayNG 1.10.31 的中文界面为例。安卓端的菜单布局会随屏幕宽度略有变化,相关入口可能位于右上角菜单中。操作期间先保持一个可用配置处于选中状态,以便更新地址需要代理时能够正常访问。
  1. 检查文件地址

    进入右上角菜单的「设置」→「Geo files 设置」,检查 GeoIP 与 GeoSite 下载地址是否分别指向对应的 dat 文件,避免两个输入框填入同一个文件地址。
  2. 执行数据更新

    返回主界面,打开右上角菜单并选择「更新 Geo files」。等待页面提示两份文件处理完成,中途不要强制结束客户端进程。
  3. 重启连接服务

    断开当前连接,等待约 2 秒后重新连接。这样可以让 Xray 内核重新初始化路由模块并读取新文件。
  4. 打开运行日志

    从主界面进入「日志」,搜索 geoipgeositerouting 等关键词,确认启动阶段没有文件读取错误。
  5. 复测目标连接

    先测试一个明确应直连的国内域名,再测试一个应走代理的域名。分别记录出口地址和连接耗时,避免只凭页面能否打开判断规则是否命中。
若当前版本没有独立的 Geo 更新菜单,应先确认客户端版本及所用内核,不要把“更新订阅”当成数据库更新。订阅更新处理的是服务器配置列表,Geo 更新处理的是路由集合,两者存储位置和加载时机都不同。v2flyNG 同样使用 Geo 数据概念,但应使用与其 V2Fly 内核和规则标签相匹配的数据文件。

规则写法与匹配顺序检查

数据库是新的,规则仍可能因为写法错误而完全不生效。最常见的问题是漏掉前缀、把域名标签填进 IP 条件、使用数据文件里不存在的标签,或者让一条范围更大的规则排在前面。路由通常按顺序判断,连接命中第一条可用规则后,后面的规则不会再覆盖它。
{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}
这段示例先放行私有 IP,再按国内域名直连,然后按国内 IP 直连,最后让剩余 TCP 与 UDP 连接进入代理出站。实际配置中的 directproxy 必须和现有出站标签一致;如果客户端生成的标签是 freedomblock 或其他名称,应以当前完整配置为准。
  • geosite:cn 应写入域名条件,不应写入 IP 条件。
  • geoip:cngeoip:private 应写入 IP 条件。
  • domain:example.com 用于匹配该域名及常见子域名范围,完整匹配可按内核支持的规则形式配置。
  • 自定义数据标签必须真实存在于所用 dat 文件中,不能根据文件名猜测标签。
  • 阻断规则、直连规则和代理规则要按具体范围从窄到宽排列,最后再放兜底规则。
domainStrategy 也会影响结果。AsIs 主要按原始域名信息匹配;IPIfNonMatch 会在域名规则未命中时解析 IP,再尝试 IP 规则;IPOnDemand 可能更早触发解析。修改该选项会牵涉 DNS 路径,不应把它当成单纯的“增强分流”开关。

结论:先查第一条命中规则

规则结果与预期相反时,优先向上检查是否存在更宽的域名、IP、端口或全网络规则;仅把目标规则移动到列表末尾,通常不会提高它的优先级。

启动报错与数据库异常排查

文件不存在、内容损坏或标签缺失时,内核一般会在启动日志里留下比“连接失败”更具体的信息。排查时应保留完整错误链,尤其是文件名、标签名和底层读取原因,不要只截取最后一行。

报错:failed to load geosite: geosite.dat: no such file or directory

原因与解法:内核工作目录中找不到 geosite.dat,或客户端指向了错误路径——重新执行 Geo files 更新,确认文件写入当前内核目录后重启服务。

报错:failed to load GeoIP: geoip.dat: no such file or directory

原因与解法:GeoIP 文件缺失、被移动或更新未完成——退出客户端,核对 geoip.dat 是否存在且大小不是 0 字节,再重新下载。

报错:failed to decode geosite.dat: invalid wire-format data

原因与解法:下载结果不是有效数据文件,常见于传输中断或地址返回了网页内容——删除异常文件,通过客户端更新入口重新获取并重启内核。

报错:failed to load geosite: list not found

原因与解法:规则引用的标签不在当前 geosite.dat 中——核对标签拼写和数据来源,临时移除该规则后确认内核能否正常启动。
如果更新后客户端无法启动,可以先备份路由配置,再暂时禁用所有引用 Geo 标签的自定义规则。内核能够启动时,说明节点协议和基础出站大概率正常,问题集中在数据文件或规则标签;仍然无法启动时,则应继续查看端口占用、配置语法和内核路径。
还要检查文件是否被重复放置。客户端目录、内核子目录和自定义资源目录里可能各有一份同名文件,实际读取的未必是刚更新的那份。最直接的办法是查看启动日志暴露的资源路径,再对照该路径下文件的修改时间与大小。

规则命中但仍然误分流

日志没有错误,不代表分流结果一定符合预期。Geo 数据按集合维护,域名归属与服务器 IP 都可能变化;大型站点还会使用多地解析和内容分发,同一个域名在不同网络下可能得到不同地址。此时需要区分“规则没有命中”和“规则命中后选择的出站不符合预期”。
现象 优先检查 验证动作
国内域名进入代理 GeoSite 标签与规则顺序 把目标域名单独加入直连规则并置于宽泛代理规则之前
直接连接 IP 时未命中 GeoIP 条件与目标 IP 归属 记录目标 IP,再检查是否命中 geoip:cn 或私有地址集合
TUN 下结果与系统代理不同 嗅探、DNS 与 domainStrategy 保持节点不变,分别记录两种模式下日志中的目标域名和 IP
更新后只有部分规则失效 自定义标签是否存在 逐条停用扩展标签,保留 geosite:cn 与 geoip:cn 做基线测试
局域网设备无法访问 geoip:private 的位置 将私有 IP 直连规则放到代理兜底规则之前重新连接
建议建立最小测试配置:保留一个可用节点、一条私有地址直连、一条国内域名直连、一条国内 IP 直连和一条代理兜底。确认这组规则正常后,再逐批恢复广告域名、自定义域名、进程或端口规则。每恢复一批就测试一次,比一次加载数十条规则更容易定位冲突。
验证时至少记录三个结果:目标域名解析出的 IP、内核选择的出站标签、最终出口地址。网页打开速度容易受到缓存、服务器负载和网络抖动影响,不能单独证明分流是否正确。若本地 SOCKS 监听端口设为 10808,还要确认测试工具确实连接该端口,而不是绕过客户端使用系统直连。

结论:用最小规则集区分数据问题与顺序问题

基础的 geosite:cn 与 geoip:cn 能正常工作,逐步恢复扩展规则后才出现误分流,问题通常在新增规则的范围或顺序,而不是两份数据库本身。

更新后的完整验证清单

一次可靠的更新应同时覆盖文件、内核、规则和连接四个层面。只看到菜单提示“完成”,不足以证明路由已经按新数据运行。完成下面的检查后,再恢复自动启动、定时订阅更新等日常设置。
  1. 确认 geoip.dat 与 geosite.dat 都存在,文件大小大于 0 字节,修改时间接近本次更新时刻。
  2. 确认当前运行的是预期内核,v2rayN 可从「设置」→「参数设置」→「Core 类型」核对。
  3. 断开并重新连接,确保旧内核进程已经退出,新进程重新读取资源文件。
  4. 查看启动日志,排除 file not found、decode、list not found 等加载错误。
  5. 检查 GeoSite 标签位于域名条件,GeoIP 标签位于 IP 条件,出站标签与现有配置一致。
  6. 将私有地址、精确域名等窄规则放在宽泛代理兜底之前,避免提前命中。
  7. 分别测试域名连接与直接 IP 连接,记录实际选择的出站,而不是只看页面是否打开。
  8. 确认系统代理或 TUN 模式下的应用流量确实进入客户端,测试工具未绕过本地代理端口。
Geo 数据不需要在每次订阅更新后重复下载。订阅变化主要影响节点列表,Geo 文件变化主要影响路由集合。可以按实际需要定期更新,也可以在出现新域名无法分类、旧 IP 归属明显变化、扩展标签缺失时手动更新。频繁覆盖文件却不重启内核,反而容易让磁盘版本与运行版本不一致。
如果最终确认某个域名长期被集合错误分类,最稳妥的临时处理是添加一条范围更窄的自定义域名规则,并放在对应集合规则之前。这样既能修正当前连接,也不必删除整组 GeoSite 或 GeoIP 规则。后续数据更新后,再复测该域名是否仍需保留例外项。
客户端下载安装 前往下载页选择平台