本文适合已经使用 v2rayN、v2rayNG 或 v2flyNG 路由规则,但遇到直连网站误走代理、代理域名被错误直连、广告规则不完整等问题的用户。读完可以分清 GeoIP 与 GeoSite 的匹配阶段,完成客户端内更新、手动替换和更新后验证,并建立按周检查的数据维护节奏。
GeoIP 与 GeoSite 分别解决什么问题
V2Ray 与 Xray 的路由模块需要依据请求特征选择出站。一个连接可以交给直连出站、代理出站或阻断出站,而判断条件通常来自域名、目标 IP、端口、网络类型及协议。GeoSite 和 GeoIP 不是节点配置,也不负责建立 VMess、VLESS 等连接;它们是供路由规则查询的分类数据。
geosite.dat 保存域名分类。规则中的 geosite:cn、geosite:category-ads-all 等写法,会在该文件中查找对应标签。客户端拿到域名时可以先做 GeoSite 匹配,因此域名规则通常应放在需要解析目标 IP 的规则之前。
geoip.dat 保存 IP 地址段分类。常见的 geoip:private 用于识别局域网与保留地址,geoip:cn 用于识别归类到中国大陆的地址段。域名没有命中前置规则,或者连接本身直接使用 IP 地址时,GeoIP 规则才更容易成为决定出站的依据。
GeoSite 域名分类
- 数据文件
- geosite.dat
- 典型输入
- 完整域名
- 常用标签
- geosite:cn
- 匹配时机
- 域名解析前
适合按站点类别分流,标签是否存在取决于当前数据集。
GeoIP 地址分类
- 数据文件
- geoip.dat
- 典型输入
- IPv4 或 IPv6
- 常用标签
- geoip:private
- 匹配时机
- 获得目标 IP 后
适合处理直接使用 IP 的连接,并为域名规则提供后续判断。
哪些现象说明数据可能过旧
数据文件不会像订阅节点一样直接显示“失效”。更常见的表现是连接仍然成功,但出站选择不符合预期。例如原本应直连的新域名开始走代理,新分配的地址段没有被 geoip:cn 命中,或者已调整归属的服务仍按旧分类处理。
不过,单次访问异常不能直接证明 Geo 数据过期。DNS 返回结果、路由规则顺序、域名嗅探、节点可用性和系统代理状态都会影响结果。判断时应先看客户端日志中的目标域名、目标 IP 与 outboundTag,再对照规则命中顺序。
- 新域名持续误分流:同一服务近期启用了新域名,而旧数据尚未将它加入对应 GeoSite 分类。
- 新地址段未命中:日志显示域名已解析,但目标 IP 落到默认规则,而不是预期的 GeoIP 规则。
- 规则标签读取失败:核心日志出现找不到 geosite 或 geoip 标签的提示,说明文件缺失、来源不兼容或标签名写错。
- 更新客户端后规则异常:程序升级并不必然同步替换 Geo 数据,需要单独检查数据文件更新时间。
结论:先确认命中对象,再决定是否更新
日志里有域名却未命中 GeoSite,应先检查标签和规则顺序;已经进入 IP 匹配但新地址段未分类,再把更新 geoip.dat 作为优先操作。这样可以避免把 DNS 或节点故障误判成数据问题。
在 v2rayN 中更新 Geo 数据文件
以 v2rayN 7.x 的常见界面为例,Geo 数据更新入口位于主窗口的更新菜单中。不同小版本可能把入口显示为“检查更新”或“检查更新 → Geo files”,但操作目标相同:下载与当前核心兼容的 geoip.dat 和 geosite.dat,随后让核心重新载入。
- 先连接一个可正常使用的节点,确认 v2rayN 主窗口日志没有持续出现连接超时。
- 打开主菜单中的「检查更新」→「更新 Geo 文件」。如果当前版本显示子菜单,选择同时包含 GeoIP 与 GeoSite 的更新项。
- 等待界面或日志给出下载完成提示。更新期间不要关闭程序,也不要同时启动第二个 v2rayN 实例。
- 更新完成后执行「重启服务」,或者完全退出 v2rayN 后重新打开,使 Xray 核心重新读取数据。
- 进入「设置」→「路由设置」,选中正在使用的路由规则集,确认其中引用的
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 路由语法和现有标签相容的数据文件。
- 停止当前连接,打开客户端设置并找到 Geo 文件或路由数据相关入口。
- 记录当前路由模式与自定义规则,避免更新后误把规则模式切换成其他预设。
- 执行 GeoIP、GeoSite 更新,等待两个任务都显示完成。
- 返回主界面重新连接节点,再打开实时日志检查路由命中结果。
Android 系统可能在客户端切到后台后限制网络活动。更新时保持客户端位于前台,直到两个文件都处理完成。如果文件较大、网络在 Wi-Fi 与移动网络之间切换,下载可能中断,此时应回到稳定网络后重新执行,而不是使用只完成一半的文件。
若某个版本没有独立更新按钮,优先使用客户端版本提供的资源管理入口。不同内核虽然都能识别常见 Geo 数据格式,但自定义标签集合不一定相同。使用 geosite:category-ads-all 等标签前,应以客户端日志是否成功载入为准。
手动替换 geoip.dat 与 geosite.dat
内置更新无法使用时,可以手动替换数据文件,但手动操作的重点不是“复制进去”这一步,而是确认实际生效目录。桌面客户端可能同时保存多个核心目录,旧版目录里也可能残留同名文件。只替换搜索结果中的第一个文件,未必会影响当前正在运行的核心。
- 在客户端日志或核心设置中确认当前启用的是 Xray 还是 v2fly 内核,并找到该内核的实际程序目录。
- 完全退出客户端,确认后台不再保留核心进程。
- 将现有
geoip.dat与geosite.dat改名保存为本地备份,避免新数据不兼容时无法恢复。 - 把新的两个文件放到同一核心资源目录,文件名保持全小写且扩展名为
.dat。 - 重新打开客户端,先观察启动日志,再测试至少一条 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:private 或 geoip: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 规则之前。