GeoIP 与 GeoSite 数据库怎么更新:文件位置、加载机制与规则引用
解释 geoip.dat 与 geosite.dat 的作用与存放路径,演示在 v2rayN 与 v2rayNG 中更新数据库的操作,说明数据过期导致分流失准的典型症状与验证方法。
V2Ray 与 Xray 的路由规则可以按域名、目标 IP、端口、网络类型和入站标签匹配流量。其中,geosite.dat 提供域名分类,geoip.dat 提供 IP 网段分类。规则里的 geosite:cn 与 geoip: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.dat 与 v2rayN\bin\Xray\geosite.dat。如果用户选择的是 v2fly 内核,资源文件应位于该内核实际读取的目录,而不是机械复制到 Xray 目录。
不同安装方式、架构包和版本会调整目录层级,因此文件搜索结果只能作为线索。更可靠的方法是先在 v2rayN 的「设置」→「参数设置」中确认当前核心类型,再从核心日志查看启动路径。日志中的可执行文件目录与资产加载错误,能够指出当前进程究竟使用哪一份数据。
| 环境 | 常见存放方式 | 更新后的必要动作 | 验证入口 |
|---|---|---|---|
| v2rayN 便携版 + Xray | bin\Xray\geoip.datbin\Xray\geosite.dat |
停止并重新启动核心 | 「信息」或核心日志窗口 |
| v2rayN 其他核心目录 | 跟随当前核心可执行文件所在目录 | 切换核心后再次确认文件来源 | 「设置」→「参数设置」 |
| v2rayNG | 由应用管理的内部资源目录 | 更新完成后重启当前配置 | 主界面右上角菜单与日志 |
| v2flyNG | 由应用和 v2fly 内核管理 | 按客户端更新结果重载服务 | 应用日志与路由测试 |
内核一般在启动或配置重载阶段读取地理数据。直接覆盖正在使用的文件,不代表现有进程会立即采用新内容;部分情况下旧文件句柄仍由进程持有。更新完成后应停止当前核心,再重新启动配置。仅关闭系统代理开关通常不等于重启核心,判断依据应是日志中出现新的启动时间和配置加载记录。
在 v2rayN 中更新 geoip.dat 与 geosite.dat
v2rayN 的菜单文字会随版本调整,但 7.x 的操作逻辑基本一致:由客户端执行 Geo 数据更新,把文件写入对应核心目录,然后重启核心。更新前先保证当前节点可以正常连接,因为数据获取失败与路由规则本身无关,不能通过反复改写规则解决。
- 启动 v2rayN,在主窗口确认已选中一个可用配置,并记录当前核心类型。
- 打开「设置」→「参数设置」,检查本地监听端口与核心选项。常见默认值为 SOCKS
10808、HTTP10809,实际以本机界面为准。 - 返回主界面,打开「检查更新」菜单,选择「更新 Geo 文件」或当前版本中名称相近的 Geo 数据更新项。
- 等待状态栏或日志显示两个数据文件处理完成。若只完成其中一个,不要直接视为更新成功。
- 执行「重启服务」;如果该入口不可见,可先停止服务,再重新启动当前配置。
- 打开核心日志,确认没有
failed to load geoip、failed to load geosite或分类不存在等错误。
更新过程中如果提示连接超时,先检查订阅更新和普通网页请求是否也失败。两者都失败时,应优先处理当前节点、系统时间或本地代理端口问题。只有 Geo 数据更新失败时,则要检查更新功能使用的网络路径、目标目录写入权限以及安全软件是否暂时锁定了正在运行的文件。
v2rayN\
├─ v2rayN.exe
└─ bin\
└─ Xray\
├─ xray.exe
├─ geoip.dat
└─ geosite.dat手工替换文件时,应先完全退出核心进程,保留旧文件副本,再把两个文件放到同一套核心的资产目录中。不要只依据文件名覆盖搜索到的第一份结果。替换后重新运行并检查日志;如果启动立即报错,先恢复旧文件,再判断新文件是否与当前核心支持的数据格式或分类约定一致。
在 v2rayNG 中更新并重新加载数据
v2rayNG 使用 Xray 内核,Geo 数据通常由应用放入内部资源目录。普通用户无需寻找安卓文件系统中的实际路径,也不应把桌面端目录结构照搬到移动端。以 v2rayNG 1.10.x 界面为例,可从主界面右上角菜单查找「更新 Geo 文件」;具体文字可能随构建版本略有变化。
- 先选中一条可连接的配置,点击启动按钮,确认实时测试能够得到延迟结果。
- 打开右上角菜单,选择「更新 Geo 文件」,保持应用在前台直到结果提示完成。
- 停止当前 VPN 服务,再重新启动所选配置,让 Xray 重新读取资产文件与路由配置。
- 进入「设置」→「路由设置」,确认当前启用的规则中确实包含
geosite或geoip引用。 - 打开日志,分别访问一个预期直连域名和一个预期代理域名,对照目标、规则与出站标签。
订阅更新与 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:cn 与 geoip:cn 不能互相替代。某个国际服务可能在中国大陆部署节点,其域名分类仍按服务属性整理,而解析地址可能落入 geoip:cn。如果配置使用 IPIfNonMatch,域名分类先命中时就不会继续依赖 IP 归属;这正是需要明确规则意图的原因。
- 需要直连局域网设备时,把
geoip:private放在兜底代理之前。 - 需要按具体域名覆盖分类时,把精确域名规则放在宽泛的
geosite规则之前。 - 需要处理 IPv6 时,确认当前
geoip数据和自定义 CIDR 规则包含对应地址族。 - 自定义规则修改后先重启核心,再通过日志验证,不要只看网页是否偶然打开。
数据过期、规则冲突与加载失败怎么区分
数据过期最常见的表现是少量新域名、新网段或近期调整基础设施的服务分流异常,而大量旧规则仍能正常工作。规则冲突通常具有稳定性:只要访问同一目标,就始终被前面的宽泛规则截获。加载失败则更直接,核心启动日志会出现文件缺失、无法读取或标签不存在等信息。
| 现象 | 优先怀疑 | 检查方法 | 处理动作 |
|---|---|---|---|
| 只有近期新增域名误走代理 | GeoSite 数据偏旧 | 用精确域名临时规则做对照 | 更新数据并重启核心 |
| 大量国内域名全部走代理 | 规则顺序或规则未启用 | 检查兜底规则是否位于顶部 | 调整顺序并重新加载配置 |
| 域名规则正常,直接访问 IP 失准 | GeoIP 数据或 IP 规则缺失 | 记录目标 IP 与命中的出站 | 更新 GeoIP 或补充 CIDR |
| 核心启动后立即停止 | 文件损坏、路径错误或分类不存在 | 查看第一条资产加载错误 | 恢复可用文件并核对分类名 |
| 更新完成但行为完全不变 | 核心未重启或更新了错误目录 | 核对日志启动时间和核心路径 | 停止进程后从正确目录启动 |
验证时应选择至少四类目标:局域网地址、已知国内域名、预期代理域名、直接 IP 请求。先清理浏览器连接复用影响,再逐个发起新连接。v2rayN 可同时观察核心日志与本地端口连接,v2rayNG 可在日志页面查看目标地址和出站结果。单次延迟高低不能证明路由命中,因为网络拥塞也会改变响应时间。
- 记录当前核心类型、数据文件修改时间和路由模式。
- 重启核心,确认日志中没有 Geo 资产加载错误。
- 测试
127.0.0.1或局域网目标,确认私有地址直连。 - 测试一个稳定的国内域名,确认命中直连出站。
- 测试一个明确配置为代理的域名,确认落入代理出站。
- 把临时精确规则放到最前方复测,用结果区分分类数据问题与规则顺序问题。
如果精确域名规则能够修正分流,而对应 geosite 分类仍未命中,才有理由继续检查 GeoSite 内容或版本。如果精确规则也不生效,应先检查客户端是否使用了另一套路由模式、订阅生成配置是否覆盖了自定义项,以及修改后是否真正重启了内核。
更新频率与维护边界
Geo 数据没有适合所有环境的固定更新周期。日常使用中,每月检查一次通常足以覆盖常规网段和域名变化;遇到新服务分流异常、运营商地址调整或日志提示分类缺失时,可以立即更新。频繁更新本身不会改善错误的规则顺序,也不会提高节点线路质量。
团队或多设备环境应记录客户端版本、核心类型、更新时间和规则版本。桌面端与安卓端可以使用相同的规则意图,但不应假定它们加载的是同一份物理文件。v2rayN、v2rayNG 与 v2flyNG 的内核、资产目录和更新入口各自独立,验证结果也应分别保存。
- 更新前保留当前可工作的规则配置,便于失败时回退。
- 更新后必须重启核心,并核对新的启动日志。
- 同时测试域名与 IP,避免只验证 GeoSite 或只验证 GeoIP。
- 订阅变化、DNS 变化和 Geo 数据变化要分开记录。
- 规则异常先查顺序和启用状态,再判断数据是否过期。
稳定的维护流程不是反复替换文件,而是确认内核路径、通过客户端入口更新、重载进程、检查日志,再用固定测试目标验证。只有把文件版本、加载过程和规则命中三部分连起来,才能判断分流变化究竟来自数据库、配置还是网络环境。