GeoIP 与 GeoSite 数据文件更新方法:路由分流规则的数据基础

geoip.dat 与 geosite.dat 决定了域名和 IP 归类的准确性,数据过旧会导致分流误判。本文讲解两个数据文件的作用、在客户端里的更新入口与更新频率建议。

本文速览

本文适合已经使用 v2rayN、v2rayNG 或 v2flyNG 路由规则,但遇到直连网站误走代理、代理域名被错误直连、广告规则不完整等问题的用户。读完可以分清 GeoIP 与 GeoSite 的匹配阶段,完成客户端内更新、手动替换和更新后验证,并建立按周检查的数据维护节奏。

GeoIP 与 GeoSite 分别解决什么问题

V2Ray 与 Xray 的路由模块需要依据请求特征选择出站。一个连接可以交给直连出站、代理出站或阻断出站,而判断条件通常来自域名、目标 IP、端口、网络类型及协议。GeoSite 和 GeoIP 不是节点配置,也不负责建立 VMess、VLESS 等连接;它们是供路由规则查询的分类数据。

geosite.dat 保存域名分类。规则中的 geosite:cngeosite:category-ads-all 等写法,会在该文件中查找对应标签。客户端拿到域名时可以先做 GeoSite 匹配,因此域名规则通常应放在需要解析目标 IP 的规则之前。

geoip.dat 保存 IP 地址段分类。常见的 geoip:private 用于识别局域网与保留地址,geoip:cn 用于识别归类到中国大陆的地址段。域名没有命中前置规则,或者连接本身直接使用 IP 地址时,GeoIP 规则才更容易成为决定出站的依据。

应用发起请求读取目标域名GeoSite 匹配解析目标 IPGeoIP 匹配选择出站

GeoSite 域名分类

数据文件
geosite.dat
典型输入
完整域名
常用标签
geosite:cn
匹配时机
域名解析前

适合按站点类别分流,标签是否存在取决于当前数据集。

GeoIP 地址分类

数据文件
geoip.dat
典型输入
IPv4 或 IPv6
常用标签
geoip:private
匹配时机
获得目标 IP 后

适合处理直接使用 IP 的连接,并为域名规则提供后续判断。

哪些现象说明数据可能过旧

数据文件不会像订阅节点一样直接显示“失效”。更常见的表现是连接仍然成功,但出站选择不符合预期。例如原本应直连的新域名开始走代理,新分配的地址段没有被 geoip:cn 命中,或者已调整归属的服务仍按旧分类处理。

不过,单次访问异常不能直接证明 Geo 数据过期。DNS 返回结果、路由规则顺序、域名嗅探、节点可用性和系统代理状态都会影响结果。判断时应先看客户端日志中的目标域名、目标 IP 与 outboundTag,再对照规则命中顺序。

2 个
核心数据文件
7 天
常规检查周期
1 次
更新后完整重启
3 项
域名、IP、出站验证

结论:先确认命中对象,再决定是否更新

日志里有域名却未命中 GeoSite,应先检查标签和规则顺序;已经进入 IP 匹配但新地址段未分类,再把更新 geoip.dat 作为优先操作。这样可以避免把 DNS 或节点故障误判成数据问题。

在 v2rayN 中更新 Geo 数据文件

以 v2rayN 7.x 的常见界面为例,Geo 数据更新入口位于主窗口的更新菜单中。不同小版本可能把入口显示为“检查更新”或“检查更新 → Geo files”,但操作目标相同:下载与当前核心兼容的 geoip.datgeosite.dat,随后让核心重新载入。

  1. 先连接一个可正常使用的节点,确认 v2rayN 主窗口日志没有持续出现连接超时。
  2. 打开主菜单中的「检查更新」→「更新 Geo 文件」。如果当前版本显示子菜单,选择同时包含 GeoIP 与 GeoSite 的更新项。
  3. 等待界面或日志给出下载完成提示。更新期间不要关闭程序,也不要同时启动第二个 v2rayN 实例。
  4. 更新完成后执行「重启服务」,或者完全退出 v2rayN 后重新打开,使 Xray 核心重新读取数据。
  5. 进入「设置」→「路由设置」,选中正在使用的路由规则集,确认其中引用的 geosite:geoip: 标签没有拼写变化。

如果下载过程提示超时,先检查更新请求是否需要经过当前代理。部分网络环境下,只有先启用可用节点并打开系统代理,更新请求才能完成。若主窗口已有正常代理连接但更新仍失败,应查看日志中是 DNS 解析失败、连接超时,还是文件写入被拒绝。

便携版目录没有写入权限时,程序可能成功下载临时文件,却无法覆盖核心正在使用的数据。可完全退出客户端后重新启动,再执行一次更新;如果程序位于受保护目录,应迁移到当前账户可读写的位置,而不是反复点击更新。

在 v2rayNG 与 v2flyNG 中检查更新

v2rayNG 使用 Xray 内核,v2flyNG 使用 v2fly 内核,两者都可能通过路由设置引用 Geo 数据。Android 客户端的菜单名称会随版本调整,常见路径是主菜单中的「检查更新」或「设置」→「Geo files settings」。进入后应同时确认下载地址配置、当前文件状态与更新动作,而不是只修改路由规则。

v2rayNG 检查项

平台
Android
内核
Xray
入口
设置 → Geo files settings
更新对象
GeoIP 与 GeoSite

更新完成后停止当前连接,再重新启动一次连接服务。

v2flyNG 检查项

平台
Android
内核
v2fly
入口
设置 → 路由设置
验证对象
规则标签与文件状态

应选择与 v2fly 路由语法和现有标签相容的数据文件。

  1. 停止当前连接,打开客户端设置并找到 Geo 文件或路由数据相关入口。
  2. 记录当前路由模式与自定义规则,避免更新后误把规则模式切换成其他预设。
  3. 执行 GeoIP、GeoSite 更新,等待两个任务都显示完成。
  4. 返回主界面重新连接节点,再打开实时日志检查路由命中结果。

Android 系统可能在客户端切到后台后限制网络活动。更新时保持客户端位于前台,直到两个文件都处理完成。如果文件较大、网络在 Wi-Fi 与移动网络之间切换,下载可能中断,此时应回到稳定网络后重新执行,而不是使用只完成一半的文件。

若某个版本没有独立更新按钮,优先使用客户端版本提供的资源管理入口。不同内核虽然都能识别常见 Geo 数据格式,但自定义标签集合不一定相同。使用 geosite:category-ads-all 等标签前,应以客户端日志是否成功载入为准。

手动替换 geoip.dat 与 geosite.dat

内置更新无法使用时,可以手动替换数据文件,但手动操作的重点不是“复制进去”这一步,而是确认实际生效目录。桌面客户端可能同时保存多个核心目录,旧版目录里也可能残留同名文件。只替换搜索结果中的第一个文件,未必会影响当前正在运行的核心。

  1. 在客户端日志或核心设置中确认当前启用的是 Xray 还是 v2fly 内核,并找到该内核的实际程序目录。
  2. 完全退出客户端,确认后台不再保留核心进程。
  3. 将现有 geoip.datgeosite.dat 改名保存为本地备份,避免新数据不兼容时无法恢复。
  4. 把新的两个文件放到同一核心资源目录,文件名保持全小写且扩展名为 .dat
  5. 重新打开客户端,先观察启动日志,再测试至少一条 GeoSite 规则和一条 GeoIP 规则。
核心资源目录/
├── geoip.dat
├── geosite.dat
└── 核心程序

路由引用示例:
domain: geosite:cn
ip:     geoip:private
ip:     geoip:cn

如果客户端支持自定义资源目录,应以设置中显示的目录为准。环境变量、启动参数或多核心切换都可能改变查找位置。最可靠的验证方式是临时记录两个文件的修改时间,重启后查看日志是否仍提示旧标签缺失。

两个文件最好来自同一套发布节奏,并在同一次维护中完成替换。GeoIP 与 GeoSite 并不存在必须完全同步的内部版本号,但混用长期未更新的旧文件和新文件,会让排查变得困难:同一条路由链中,域名阶段与 IP 阶段可能依据不同时间范围的数据作出判断。

更新后怎样验证分流是否生效

更新成功提示只能证明文件处理流程结束,不能证明每条规则都按预期命中。验证应选择能够代表不同分支的目标:一个局域网地址、一组预期直连域名、一组预期代理域名,以及一个直接使用 IP 的连接。测试时保持节点、DNS 和系统代理设置不变。

在 v2rayN 中可打开主窗口日志,提高日志等级后观察目标、路由规则和出站标签。若规则把 geosite:cn 指向 direct,日志中对应域名应进入直连出站;若目标直接以 IP 形式出现,则应检查 geoip:privategeoip:cn 是否命中。

测试对象 主要检查项 异常时先排查
局域网地址 是否命中 geoip:private 私有地址规则是否位于默认代理规则之前
普通域名 是否命中目标 GeoSite 标签 域名嗅探、DNS 与标签拼写
直接输入 IP 是否进入预期 GeoIP 分支 地址段分类与规则顺序
未分类目标 是否进入最终默认规则 默认出站是否放在规则列表末尾

规则顺序是更新后最容易被忽略的因素。V2Ray 与 Xray 通常按规则列表从前向后判断,较宽泛的规则如果排在前面,会提前截获请求。例如把“所有端口走代理”放在 geosite:cn 之前,后面的域名分类即使已更新也没有机会生效。

还要区分“没有命中”和“命中后连接失败”。前者应检查数据、标签和规则顺序;后者已经选中了出站,应转而检查节点连接、目标端口和 DNS 返回。两类问题在用户侧都可能表现为网页打不开,但处理方向完全不同。

结论:用日志中的 outboundTag 作为验收结果

文件修改时间只能说明发生过替换,真正的更新验收应落到具体请求:域名或 IP 被哪条规则识别,最后进入 direct、proxy 还是 block。连续测试 3 类目标,比反复更新文件更能发现规则顺序问题。

更新频率与常见问题

普通使用场景不需要每天更新。建议每 7 天检查一次,或者在客户端升级、路由规则调整、连续出现新域名误分流时执行更新。过于频繁地替换文件不会提升连接速度,也不会改善节点延迟;Geo 数据只参与分类判断。

维护时一次只改变一个变量。先更新 Geo 文件并验证,确认结果后再调整 DNS 或路由规则。若更新前后都保留同一组测试目标和日志等级,就能直接比较规则命中变化,避免凭网页体感作判断。

更新后所有网站都走代理了?

打开「设置」→「路由设置」,检查默认代理规则是否被移到列表顶部。把精确的 GeoSite 与 GeoIP 规则放在宽泛规则之前,保存后重启核心再测。

日志提示找不到 geosite 标签?

先核对标签拼写,再确认新 geosite.dat 是否包含该分类。若问题从手动替换后开始,恢复备份文件并重启,避免继续使用不兼容的数据集。

GeoIP 更新成功但分流没有变化?

确认测试请求是否直接使用 IP,或是否已经在前面的域名规则中命中。GeoSite 先完成匹配时,后续 GeoIP 规则不会参与这次出站选择。

两个文件必须一起更新吗?

格式上可以分别替换,但维护时建议同批更新。完成后记录两个文件的修改时间,并各测试一条域名规则和一条 IP 规则。

更新时一直显示连接超时?

先连接可用节点,再确认系统代理或客户端的代理更新选项已启用。仍然超时时,查看日志中的 DNS 与连接错误,不要连续启动多个更新任务。

Geo 数据维护的目标是保持分类规则与现实网络变化接近,而不是让全部请求都命中某个预设标签。对于业务上必须固定直连或固定代理的域名,使用明确的自定义域名规则通常比等待公共分类更新更可控,并且应放在通用 Geo 规则之前。

下载 v2rayN查看四个平台安装包