路由分流 预计阅读 12 分钟

GeoIP 与 GeoSite 数据库怎么更新:文件位置、加载机制与规则引用

解释 geoip.dat 与 geosite.dat 的作用与存放路径,演示在 v2rayN 与 v2rayNG 中更新数据库的操作,说明数据过期导致分流失准的典型症状与验证方法。

V2Ray 与 Xray 的路由规则可以按域名、目标 IP、端口、网络类型和入站标签匹配流量。其中,geosite.dat 提供域名分类,geoip.dat 提供 IP 网段分类。规则里的 geosite:cngeoip:cn 并不是联网查询指令,而是让内核读取本地数据文件中的指定分类。

本文速览

本文适合已经在 v2rayN 或 v2rayNG 中启用路由分流、但遇到国内站点误走代理、域名分类加载失败或更新后规则未生效的用户。内容覆盖两个数据文件的职责、桌面端与安卓端更新路径、内核重新加载条件、配置引用方法,以及通过日志和对照请求验证结果的步骤。

GeoIP 与 GeoSite分别解决什么问题

geosite.dat 保存的是域名集合。一个分类可以包含完整域名、域名后缀、关键字或正则表达式,实际结构由数据生成规则决定。例如,geosite:cn 通常用于匹配面向中国大陆网络环境的域名集合,geosite:category-ads-all 用于引用广告域名分类。它处理的是请求目标中的域名,不等同于 DNS 返回地址所属地区。

geoip.dat 保存的是 CIDR 网段集合。geoip:cn 会把目标 IP 与对应国家或地区的网段比较,geoip:private 则用于匹配环回、局域网和其他私有地址范围。它只在路由阶段使用,不负责修改 DNS 结果,也不会替代订阅节点信息。

geosite.dat

匹配对象
域名
规则字段
domain
常用引用
geosite:cn
更新影响
域名分类边界

适合在 DNS 解析前按请求域名决定直连、代理或阻断出站。

geoip.dat

匹配对象
目标 IP
规则字段
ip
常用引用
geoip:cn
更新影响
网段归属范围

适合处理直接访问 IP、域名解析后的 IP 匹配以及私有网段放行。

域名规则是否继续解析 IP,还受 domainStrategy 影响。设为 AsIs 时,路由主要使用连接中已有的域名或 IP;设为 IPIfNonMatch 时,域名规则没有命中后才解析并尝试 IP 规则;设为 IPOnDemand 时,只要规则评估可能需要 IP,内核就可能触发解析。更新数据文件不能修复错误的策略组合,因此排查时要同时查看文件版本、规则顺序与域名策略。

  • 域名已知:优先用 geosite 分类判断,避免仅凭解析地址推断服务归属。
  • 直接访问 IP:只能由 geoip、具体 CIDR 或其他 IP 条件匹配。
  • 同一请求命中多条规则:路由从上到下评估,通常由第一条完整命中的规则决定出站。
  • 分类名称不存在:内核会在日志中报告资源或标签加载错误,而不是自动使用近似分类。

数据文件位置与内核加载机制

便携版 v2rayN 的程序目录通常同时包含界面程序、配置数据和一个或多个内核子目录。以 v2rayN 7.12.7 搭配 Xray 内核为例,常见位置是 v2rayN\bin\Xray\geoip.datv2rayN\bin\Xray\geosite.dat。如果用户选择的是 v2fly 内核,资源文件应位于该内核实际读取的目录,而不是机械复制到 Xray 目录。

不同安装方式、架构包和版本会调整目录层级,因此文件搜索结果只能作为线索。更可靠的方法是先在 v2rayN 的「设置」→「参数设置」中确认当前核心类型,再从核心日志查看启动路径。日志中的可执行文件目录与资产加载错误,能够指出当前进程究竟使用哪一份数据。

环境 常见存放方式 更新后的必要动作 验证入口
v2rayN 便携版 + Xray bin\Xray\geoip.dat
bin\Xray\geosite.dat
停止并重新启动核心 「信息」或核心日志窗口
v2rayN 其他核心目录 跟随当前核心可执行文件所在目录 切换核心后再次确认文件来源 「设置」→「参数设置」
v2rayNG 由应用管理的内部资源目录 更新完成后重启当前配置 主界面右上角菜单与日志
v2flyNG 由应用和 v2fly 内核管理 按客户端更新结果重载服务 应用日志与路由测试
2 个
核心地理数据文件
7.12.7
桌面操作路径参考版本
10808
常见本地 SOCKS 端口
10809
常见本地 HTTP 端口

内核一般在启动或配置重载阶段读取地理数据。直接覆盖正在使用的文件,不代表现有进程会立即采用新内容;部分情况下旧文件句柄仍由进程持有。更新完成后应停止当前核心,再重新启动配置。仅关闭系统代理开关通常不等于重启核心,判断依据应是日志中出现新的启动时间和配置加载记录。

在 v2rayN 中更新 geoip.dat 与 geosite.dat

v2rayN 的菜单文字会随版本调整,但 7.x 的操作逻辑基本一致:由客户端执行 Geo 数据更新,把文件写入对应核心目录,然后重启核心。更新前先保证当前节点可以正常连接,因为数据获取失败与路由规则本身无关,不能通过反复改写规则解决。

  1. 启动 v2rayN,在主窗口确认已选中一个可用配置,并记录当前核心类型。
  2. 打开「设置」→「参数设置」,检查本地监听端口与核心选项。常见默认值为 SOCKS 10808、HTTP 10809,实际以本机界面为准。
  3. 返回主界面,打开「检查更新」菜单,选择「更新 Geo 文件」或当前版本中名称相近的 Geo 数据更新项。
  4. 等待状态栏或日志显示两个数据文件处理完成。若只完成其中一个,不要直接视为更新成功。
  5. 执行「重启服务」;如果该入口不可见,可先停止服务,再重新启动当前配置。
  6. 打开核心日志,确认没有 failed to load geoipfailed to load geosite 或分类不存在等错误。

更新过程中如果提示连接超时,先检查订阅更新和普通网页请求是否也失败。两者都失败时,应优先处理当前节点、系统时间或本地代理端口问题。只有 Geo 数据更新失败时,则要检查更新功能使用的网络路径、目标目录写入权限以及安全软件是否暂时锁定了正在运行的文件。

v2rayN\
├─ v2rayN.exe
└─ bin\
   └─ Xray\
      ├─ xray.exe
      ├─ geoip.dat
      └─ geosite.dat

手工替换文件时,应先完全退出核心进程,保留旧文件副本,再把两个文件放到同一套核心的资产目录中。不要只依据文件名覆盖搜索到的第一份结果。替换后重新运行并检查日志;如果启动立即报错,先恢复旧文件,再判断新文件是否与当前核心支持的数据格式或分类约定一致。

在 v2rayNG 中更新并重新加载数据

v2rayNG 使用 Xray 内核,Geo 数据通常由应用放入内部资源目录。普通用户无需寻找安卓文件系统中的实际路径,也不应把桌面端目录结构照搬到移动端。以 v2rayNG 1.10.x 界面为例,可从主界面右上角菜单查找「更新 Geo 文件」;具体文字可能随构建版本略有变化。

  1. 先选中一条可连接的配置,点击启动按钮,确认实时测试能够得到延迟结果。
  2. 打开右上角菜单,选择「更新 Geo 文件」,保持应用在前台直到结果提示完成。
  3. 停止当前 VPN 服务,再重新启动所选配置,让 Xray 重新读取资产文件与路由配置。
  4. 进入「设置」→「路由设置」,确认当前启用的规则中确实包含 geositegeoip 引用。
  5. 打开日志,分别访问一个预期直连域名和一个预期代理域名,对照目标、规则与出站标签。

订阅更新与 Geo 数据更新是两条独立流程。订阅负责服务器地址、端口、用户标识、传输方式等节点信息;Geo 更新负责路由分类。更新订阅不会自动证明地理数据库已更新,更新地理数据库也不会改变 VMess 或 VLESS 节点参数。

点击更新后一直提示超时怎么办?

先启动一条可用配置并确认普通网页能够加载,再返回右上角菜单重试。若日志显示 DNS 超时,检查「设置」→「DNS 设置」中的服务器地址与当前网络可达性。

提示更新成功,国内网站仍然走代理?

停止并重新启动服务,然后检查「设置」→「路由设置」中规则的启用状态和顺序。位于顶部的全匹配代理规则会先截获流量,使后面的 geosite:cn 无法执行。

更新后所有配置都无法启动?

打开日志查看是否出现 Geo 资源加载错误。若错误明确指向数据文件,可使用客户端提供的更新入口重新获取;同时确认应用存储空间充足,再重启当前配置。

v2flyNG 能直接使用同一操作路径吗?

不能假定菜单和内部目录完全一致。v2flyNG 使用 v2fly 内核,应在其自身设置与更新入口中处理资产,并通过应用日志确认分类是否被当前内核加载。

移动网络和 Wi-Fi 可能使用不同 DNS、不同 IPv6 路径。测试时最好固定一种网络环境,并分别记录更新前后的日志。若 Wi-Fi 下命中正确、移动网络下失准,问题可能来自 DNS 返回差异、IPv6 规则缺失或私有 DNS 设置,而不是 Geo 文件本身。

规则中如何引用 geosite 与 geoip

地理数据文件只有被路由规则引用时才参与匹配。下面的结构先阻断广告分类,再放行私有地址与中国大陆网段,随后让中国大陆域名直连。未命中的流量交给更靠后的代理规则或默认出站。实际配置中的出站标签必须与客户端生成的标签一致,不能机械使用示例名称。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "ip": ["geoip:private", "geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}
接收目标 读取规则 查询分类 首条命中 选择出站

规则顺序比分类数量更重要。若第一条规则已经用 network: tcp,udp 匹配所有连接并送往代理,后面的国内直连规则不会再获得匹配机会。广告阻断一般放在普通直连规则之前,私有网段放行应靠前,兜底代理规则放在末尾。

geosite:cngeoip:cn 不能互相替代。某个国际服务可能在中国大陆部署节点,其域名分类仍按服务属性整理,而解析地址可能落入 geoip:cn。如果配置使用 IPIfNonMatch,域名分类先命中时就不会继续依赖 IP 归属;这正是需要明确规则意图的原因。

  • 需要直连局域网设备时,把 geoip:private 放在兜底代理之前。
  • 需要按具体域名覆盖分类时,把精确域名规则放在宽泛的 geosite 规则之前。
  • 需要处理 IPv6 时,确认当前 geoip 数据和自定义 CIDR 规则包含对应地址族。
  • 自定义规则修改后先重启核心,再通过日志验证,不要只看网页是否偶然打开。

数据过期、规则冲突与加载失败怎么区分

数据过期最常见的表现是少量新域名、新网段或近期调整基础设施的服务分流异常,而大量旧规则仍能正常工作。规则冲突通常具有稳定性:只要访问同一目标,就始终被前面的宽泛规则截获。加载失败则更直接,核心启动日志会出现文件缺失、无法读取或标签不存在等信息。

现象 优先怀疑 检查方法 处理动作
只有近期新增域名误走代理 GeoSite 数据偏旧 用精确域名临时规则做对照 更新数据并重启核心
大量国内域名全部走代理 规则顺序或规则未启用 检查兜底规则是否位于顶部 调整顺序并重新加载配置
域名规则正常,直接访问 IP 失准 GeoIP 数据或 IP 规则缺失 记录目标 IP 与命中的出站 更新 GeoIP 或补充 CIDR
核心启动后立即停止 文件损坏、路径错误或分类不存在 查看第一条资产加载错误 恢复可用文件并核对分类名
更新完成但行为完全不变 核心未重启或更新了错误目录 核对日志启动时间和核心路径 停止进程后从正确目录启动

验证时应选择至少四类目标:局域网地址、已知国内域名、预期代理域名、直接 IP 请求。先清理浏览器连接复用影响,再逐个发起新连接。v2rayN 可同时观察核心日志与本地端口连接,v2rayNG 可在日志页面查看目标地址和出站结果。单次延迟高低不能证明路由命中,因为网络拥塞也会改变响应时间。

  1. 记录当前核心类型、数据文件修改时间和路由模式。
  2. 重启核心,确认日志中没有 Geo 资产加载错误。
  3. 测试 127.0.0.1 或局域网目标,确认私有地址直连。
  4. 测试一个稳定的国内域名,确认命中直连出站。
  5. 测试一个明确配置为代理的域名,确认落入代理出站。
  6. 把临时精确规则放到最前方复测,用结果区分分类数据问题与规则顺序问题。

如果精确域名规则能够修正分流,而对应 geosite 分类仍未命中,才有理由继续检查 GeoSite 内容或版本。如果精确规则也不生效,应先检查客户端是否使用了另一套路由模式、订阅生成配置是否覆盖了自定义项,以及修改后是否真正重启了内核。

更新频率与维护边界

Geo 数据没有适合所有环境的固定更新周期。日常使用中,每月检查一次通常足以覆盖常规网段和域名变化;遇到新服务分流异常、运营商地址调整或日志提示分类缺失时,可以立即更新。频繁更新本身不会改善错误的规则顺序,也不会提高节点线路质量。

团队或多设备环境应记录客户端版本、核心类型、更新时间和规则版本。桌面端与安卓端可以使用相同的规则意图,但不应假定它们加载的是同一份物理文件。v2rayN、v2rayNG 与 v2flyNG 的内核、资产目录和更新入口各自独立,验证结果也应分别保存。

  • 更新前保留当前可工作的规则配置,便于失败时回退。
  • 更新后必须重启核心,并核对新的启动日志。
  • 同时测试域名与 IP,避免只验证 GeoSite 或只验证 GeoIP。
  • 订阅变化、DNS 变化和 Geo 数据变化要分开记录。
  • 规则异常先查顺序和启用状态,再判断数据是否过期。

稳定的维护流程不是反复替换文件,而是确认内核路径、通过客户端入口更新、重载进程、检查日志,再用固定测试目标验证。只有把文件版本、加载过程和规则命中三部分连起来,才能判断分流变化究竟来自数据库、配置还是网络环境。

下载 v2rayN 进入客户端安装包页面