本文适合已经能够正常使用 v2rayN 或 v2rayNG、但发现国内站点绕行代理、域名分流失效或规则标签无法识别的用户。内容覆盖两类 Geo 数据的匹配逻辑、桌面端与安卓端更新步骤、版本检查方法、规则验证命令和故障处理;完成操作后,可以判断问题来自数据文件、规则顺序还是 DNS 解析,而不是反复更换节点。
GeoIP 与 GeoSite 分别解决什么问题
V2Ray 与 Xray 的路由模块需要先识别连接目标,再决定交给直连、代理或阻断出站。目标如果是 IP 地址,可以由 GeoIP 数据集合判断所属网络范围;目标如果仍保留域名,则可以由 GeoSite 数据集合判断站点类别。两种文件都不是客户端程序本身,也不会改变 VMess、VLESS 等协议参数,它们只为路由匹配提供数据。
geoip.dat 保存按地区或用途整理的 IP 网段。常见规则写法包括 geoip:cn 与 geoip:private:前者通常用于匹配国内 IP,后者用于匹配局域网、回环地址等保留网段。数据库过旧时,新分配的地址段可能无法命中原有集合,结果便会落到最后一条兜底规则。
geosite.dat 保存按类别组织的域名集合。常见标签包括 geosite:cn、geosite:geolocation-!cn 和部分数据源提供的分类标签。它匹配的是域名,不是网页内容。某个站点更换域名、增加静态资源域名或调整服务入口后,旧数据可能只命中主域名,却遗漏图片、接口或登录域名。
| 数据文件 | 主要匹配对象 | 典型规则 | 常见用途 |
|---|---|---|---|
geoip.dat |
IPv4、IPv6 网段 | geoip:private |
局域网地址直连 |
geoip.dat |
地区 IP 集合 | geoip:cn |
国内地址直连 |
geosite.dat |
域名与域名后缀 | geosite:cn |
国内域名直连 |
geosite.dat |
地区外域名集合 | geosite:geolocation-!cn |
交给代理出站 |
更新前先记录版本、路径与现有规则
不要在连接异常时直接覆盖全部文件。先记录客户端版本、核心类型、当前出站标签和自定义路由规则,这样才能在更新后判断变化来自哪一项。本文界面路径以 v2rayN 7.x、v2rayNG 1.10.x 与 Xray 内核为操作基线,小版本可能调整菜单文案,但检查顺序不变。
桌面端还要确认当前实际使用的核心目录。v2rayN 可以在“设置”→“参数设置”→“核心设置”中查看已选择的核心;不同安装方式下,Geo 文件可能位于程序数据目录或对应核心目录。不要只根据搜索结果覆盖第一个同名文件,应先从运行日志确认核心启动路径。
- 导出或复制当前自定义路由配置,重点保留
domain、ip、inboundTag与outboundTag。 - 在日志中记录当前核心版本及配置文件位置,避免把 v2fly 与 Xray 的运行目录混淆。
- 确认系统时间与时区正确。时间明显偏差会影响更新请求以及 TLS 连接,不应误判为 Geo 数据故障。
- 保留当前可用的
geoip.dat与geosite.dat副本;回退时两份文件应成对恢复。
桌面端检查项
- 客户端
- v2rayN 7.x
- 菜单
- 设置 → 参数设置
- 核心
- Xray 或 v2fly
- 日志
- 查看核心启动路径
先确认实际核心目录,再执行内置 Geo 文件更新。
安卓端检查项
- 客户端
- v2rayNG 1.10.x
- 内核
- Xray
- 入口
- 设置 → Geo 资源文件
- 动作
- 下载并重启服务
使用应用内更新入口,不通过文件管理器覆盖内部数据。
在 v2rayN 中更新 Geo 数据文件
v2rayN 的内置更新入口会根据当前版本下载对应数据并替换核心读取的文件,优先使用该入口比手动判断目录可靠。开始前先停止当前代理服务,避免核心进程仍占用旧文件。若正在使用 TUN 模式,也应先关闭 TUN,再执行更新。
- 打开 v2rayN 主窗口,在状态栏确认当前核心已经停止运行。
- 进入“检查更新”菜单,选择“更新 Geo 文件”或同义的 Geo 数据更新项。部分 7.x 版本会把该入口放在更新子菜单内。
- 等待界面显示下载与替换完成。不要在进度尚未结束时退出客户端。
- 打开“设置”→“参数设置”→“核心设置”,再次确认当前选中的核心与刚才更新的目标一致。
- 启动原节点,再打开日志窗口,确认没有出现找不到
geoip.dat、找不到geosite.dat或规则标签不存在等错误。 - 重新启用系统代理或 TUN 模式,用一个国内域名和一个需要代理的域名分别验证出站结果。
如果内置更新提示文件占用,先退出 v2rayN,再在任务管理器中确认对应核心进程已经结束,然后重新打开客户端执行一次。若提示写入失败,应检查程序目录是否具有当前账户的写入权限。不要通过管理员模式长期运行来掩盖目录权限问题,更稳妥的做法是把程序数据放在账户可写的位置。
手动替换只适用于已经取得可信数据文件、并且明确知道当前核心读取位置的情况。操作时必须停止核心,将两份旧文件改名留存,再把新的 geoip.dat 与 geosite.dat 一起放入同一数据目录。只替换其中一个文件可能造成标签覆盖范围不一致,排查时会增加额外变量。
在 v2rayNG 中检查并更新 Geo 资源
v2rayNG 使用 Xray 内核处理路由,Geo 文件由应用管理。安卓系统通常不会把应用内部数据目录作为普通文件目录开放,因此应从 v2rayNG 的设置页面更新,而不是把桌面端文件复制到下载目录后等待客户端自动识别。
操作前先点击主界面的停止按钮,确认状态栏中的代理服务已经结束。如果开启了“绕过局域网”或自定义路由,也要记录当前选项,因为更新资源不会自动修正规则顺序。
- 打开 v2rayNG,停止当前连接。
- 进入右上角菜单,依次打开“设置”→“Geo 资源文件”。不同小版本可能显示为“Geo 文件”或“更新 Geo 数据”。
- 分别执行 GeoIP 与 GeoSite 更新,等待两项都显示完成。网络较慢时保持应用在前台,避免系统中断任务。
- 返回设置页,进入“路由设置”,检查预定义规则与自定义规则是否仍处于启用状态。
- 回到主界面重新启动节点,再查看运行日志,确认资源加载与路由初始化没有报错。
- 切换一次飞行模式后恢复网络,再进行域名与 IP 测试,以排除旧连接和 DNS 缓存的影响。
| 更新后现象 | 优先检查位置 | 处理动作 |
|---|---|---|
| 服务无法启动 | 运行日志首个错误 | 检查文件下载是否完整,并重新执行两项更新 |
| 国内域名仍走代理 | 路由规则顺序 | 把明确的直连规则放在最终代理规则之前 |
| 域名规则不命中 | DNS 与 domainStrategy | 确认路由阶段是否仍保留域名 |
| 部分应用没有变化 | 应用连接缓存 | 结束目标应用进程后重新发起连接 |
规则顺序决定更新后的实际效果
Geo 数据只是提供可匹配的集合,最终出站仍由路由规则从上到下决定。更具体的局域网、指定域名和指定 IP 规则应放在前面,范围更大的地区集合放在后面,最后再设置代理或直连兜底。如果第一条规则已经匹配全部 0.0.0.0/0,后面的 GeoIP 规则不会获得处理机会。
下面的片段展示一种常见顺序:私有地址先直连,国内域名与 IP 再直连,地区外域名交给代理。配置中的 direct 与 proxy 必须和实际出站标签一致,不能直接照抄标签名而忽略客户端生成的配置。
{
"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",
"domain": ["geosite:geolocation-!cn"],
"outboundTag": "proxy"
}
]
}
}
IPIfNonMatch 表示域名规则没有命中时,再解析 IP 并尝试 IP 规则。它适合同时使用 GeoSite 与 GeoIP 的配置,但会增加一次解析过程。若设置为 AsIs,核心不会为了 IP 路由主动解析域名,此时依赖 geoip:cn 的规则可能无法处理仍以域名形式存在的目标。
- 局域网规则放在地区规则前,避免打印机、路由器后台和本地服务进入代理出站。
- 精确域名规则放在大范围 GeoSite 标签前,便于覆盖少数需要特殊处理的站点。
- 阻断规则只使用当前数据文件确实包含的标签;日志出现标签不存在时,应核对数据来源与标签名称。
- 最终兜底规则只保留一个明确方向,避免多个空条件规则互相遮挡。
怎样确认新数据已经被核心加载
仅凭“更新成功”提示不足以证明路由已经采用新数据。验证应分为文件加载、规则命中和实际出站三层。第一层查看启动日志,第二层检查规则顺序,第三层比较目标连接走直连还是代理。三层分开检查,才能避免把 DNS 缓存、节点延迟或浏览器连接复用误认为 Geo 文件失效。
- 重启核心后立即查看日志,搜索
geoip、geosite、failed与routing等关键词。 - 访问一个路由规则明确指定为直连的国内域名,记录日志中的目标域名、目标 IP 和出站标签。
- 再访问一个由
geosite:geolocation-!cn处理的域名,确认日志显示代理出站。 - 直接连接一个已知 IP,检查 GeoIP 规则是否参与匹配。该步骤与域名测试分开执行。
- 如果使用本地 HTTP 或 SOCKS 入口,确认应用连接的端口与客户端显示值一致,例如常见组合中的
10808,不要用旧端口测试新配置。
| 日志信息 | 含义 | 下一步 |
|---|---|---|
| 资源文件无法打开 | 路径、权限或文件状态异常 | 停止核心后重新更新,并核对实际核心目录 |
| 规则标签不存在 | 当前 Geo 数据不含该标签 | 改用现有标签或更新成匹配的数据集合 |
| 全部命中最终规则 | 前置条件未匹配 | 检查域名是否已解析以及规则排列顺序 |
| 出站正确但访问失败 | 问题不在 Geo 分流层 | 继续检查节点、DNS、传输参数与目标服务状态 |
更新频率与常见问题
Geo 数据没有适用于所有人的固定更新周期。普通使用场景可以按月检查一次;经常调整自定义路由、需要识别新域名或发现部分地址突然走错出站时,可以立即检查。客户端升级核心后也应确认 Geo 文件仍能正常加载,但没有异常时不必每天重复更新。
更新应作为路由维护的一部分,而不是连接故障的通用修复按钮。节点不可用、VMess 或 VLESS 参数错误、系统代理未开启、端口被占用等问题,都不会因为替换 Geo 文件而自动解决。先根据日志确定故障位于路由层,再执行数据更新。
更新后国内网站反而走代理了?
先检查 geosite:cn 与 geoip:cn 是否位于最终代理规则之前,再确认 domainStrategy 不是导致域名跳过 IP 匹配的 AsIs。修改后停止核心约 2 秒并重新启动。
只更新 geoip.dat 可以吗?
技术上可以单独替换,但不建议在排障期间这样操作。GeoIP 与 GeoSite 通常共同参与一套路由,成对更新能减少标签覆盖范围和生成时间不一致带来的判断偏差。
v2rayNG 更新一直提示超时?
先连接一个确认可用的节点,再到“设置”→“Geo 资源文件”重新执行更新;同时关闭省电限制并保持应用在前台。如果普通网页也无法访问,应先处理节点或 DNS 问题。
文件更新了为什么旧连接没变化?
核心和目标应用都可能保留现有连接。依次停止代理服务、结束目标应用、等待 2 至 5 秒,再重新启动核心与应用。浏览器测试时可新建独立窗口,减少连接复用影响。
自定义标签提示找不到怎么办?
不同 Geo 数据集合包含的标签并不完全相同。先从核心日志抄下准确标签名,再检查规则是否拼写错误;无法确认标签存在时,改用 cn、private 等当前文件已验证可识别的集合。