本文适合已经导入节点、准备检查路由分流的用户。先区分域名分类与 IP 地址库,再按客户端更新实际使用的数据文件,最后用最小路由示例和日志验证命中结果。重点是把“文件下载成功”“分类能够加载”“请求走对出口”分开检查,避免反复更新却没有解决误分流。
两个数据库分别匹配什么
geosite.dat 保存按标签组织的域名条目;geoip.dat 保存按标签组织的 IP 地址段。它们是供内核读取的二进制数据文件,不是可直接粘贴到路由编辑框里的 JSON,也不保存订阅链接、节点密码或传输协议参数。
例如,geosite:cn 查询域名库中的 cn 分类,geoip:cn 查询地址库中的 cn 地址段。两者不是同一份名单:域名被归入某个分类,不代表它当前解析出的每一个地址都属于相同地区;使用境外 CDN 的站点尤其容易出现这种差别。
| 资源 | 匹配对象 | 典型引用 | 边界 |
|---|---|---|---|
geosite.dat | 请求携带或内核识别出的域名 | geosite:cn | 依赖分类收录情况,不是实时 DNS 查询结果 |
geoip.dat | 目标 IP 地址 | geoip:cn | 仅反映 IP 地址段分类,不能据此判断服务运营主体 |
geoip.dat | 数据源定义的私有或保留地址集合 | geoip:private | 具体范围以该数据源的标签内容为准 |
只有 IP 的请求无法直接用域名分类匹配。域名请求能否进一步进行 IP 匹配,则与路由的域名策略和 DNS 解析有关。因而“更新了 geosite,所有应用都按域名分流”并不成立,还要检查客户端接收到的目标信息。
数据来源与更新方式选择
常见数据来自社区维护的域名名单和 IP 地址段项目,再由构建流程编译成 DAT 文件。域名条目可以包含完整域名、后缀匹配、关键词或正则等不同形式;地址库主要按标签聚合 CIDR 网段。Xray 与 V2Ray 生态中的这些文件有相应格式约定,但相同文件名并不保证不同来源具有相同标签。
客户端程序、内核程序、规则数据和路由规则是四层内容。更新 v2rayN 不等于已更新正在使用的 Geo 文件;更新 Geo 文件也不会自动重排自定义规则。切换数据源之前,应先记录规则中引用的标签,例如 cn、private 和业务分类,确认新来源确实提供它们。
客户端内置更新
推荐由客户端按已配置的资源地址获取文件,并写入它管理的资源位置。更容易避免把新文件放进旧目录,更新日志也便于追踪失败环节。
适合:日常维护、沿用默认数据源、首次排查。
手动导入或替换
先确认当前内核实际读取的资源位置,再使用已知来源的文件。安卓端优先使用客户端提供的资源导入功能,不猜测应用私有目录。
适合:离线更新、内置下载不可达、需要固定数据版本。
切换自定义来源
同时核对下载地址、文件格式与分类清单。不要仅因为文件体积更大就替换;新增分类未必有用,缺少正在引用的分类反而可能阻止内核启动。
适合:明确依赖某个业务分类、能够维护规则引用的用户。
结论:先固定来源,再更新数据
保留现有资源和路由配置的备份,先在同一来源内更新并验证。只有确认需要的标签缺失时,再考虑换源;不要在一次排查中同时换源、改 DNS 和调整规则顺序。
v2rayN 更新与重载步骤
桌面端先确认当前连接使用 Xray 或 V2Ray 的 DAT 路由配置。本文示例不适用于其他格式的规则集。v2rayN 不同版本的菜单布局会调整,常见更新入口是主窗口「检查更新」中的「Geo 文件」或「更新 Geo 文件」;如果版本将其放入资源管理页,应以当前菜单名称和日志为准,不要把“更新订阅”当作规则数据更新。
-
记录现有设置
打开「设置」→「路由设置」,记录当前启用的路由方案、规则顺序和使用的分类。另行备份自定义配置;有些版本保存方案后,还需要在主窗口选中该方案才会使用。
-
更新规则数据
打开主窗口「检查更新」→「Geo 文件」,执行更新。分别查看
geoip.dat与geosite.dat的结果,不要看到第一项成功就关闭日志。 -
核对下载结果
若提示连接失败,先检查资源下载地址和更新操作是否需要经过当前代理。若返回内容无法解析,检查是否把网页地址填成了文件地址;有文件名并不代表内容就是 DAT 数据。
-
重启当前服务
数据写入后重新启动当前连接,确保内核重新加载资源。只切换主窗口标签页不会重载;已经建立的长连接也不能代表新规则的处理结果。
-
检查启动日志
确认没有出现资源打开失败、分类不存在或路由构建失败。随后重新发起测试请求;若客户端启用了自动恢复旧配置,还需确认运行的确实是刚保存的方案。
v2rayNG 的资源更新入口
安卓端 v2rayNG 使用 Xray 内核,Geo 数据通常由应用管理。提供独立资源管理页的版本,可从侧边菜单进入「Geo 资源文件」,在该页更新或导入资源;较早版本可能将「更新 Geo 文件」放在主界面右上角菜单。入口名称和布局有差异时,先查找 Geo 资源相关项目,而不是在订阅分组里寻找。
- 更新前:在侧边菜单「路由设置」中记录当前规则,确认没有临时启用全局代理或全局直连模式,否则测试不到预期的分流效果。
- 更新时:分别确认两项资源的成功状态。若资源页允许修改下载地址,填写能返回原始文件内容的地址,不填写项目介绍页。
- 更新后:停止再启动底部连接服务,让新的内核进程加载数据;返回应用不等于重启连接。
- 手动导入:使用资源页实际提供的导入操作,并核对文件类型。若当前版本没有导入入口,不应通过猜测私有目录来替换资源。
当更新必须经过代理时,要先保证已有连接可以访问资源服务器;当代理本身因为资源加载失败而无法启动时,应改用当前网络可访问的下载来源或离线导入。不要把“下载通道依赖代理”和“路由文件依赖更新”混在一起反复重试。
geosite 与 geoip 的引用写法
在 Xray 路由 JSON 中,geosite: 引用写入 domain 数组,geoip: 引用写入 ip 数组。分类名不是任意描述文字,必须存在于当前文件中。geoip:cn 中的 cn 是常用地区代码标签;private 则是数据集约定的特殊标签,不是国家代码。
{
"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",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
这是一段路由配置示例,不是可单独启动的完整配置。它假定完整配置已经定义 direct 与 proxy 出口;如果需要阻断,还要另行定义并引用 block。这些标签只是名称,必须与实际 outbounds 对应,不能照抄后期待客户端自动创建出口。图形化规则编辑器通常只需要填写相应匹配字段,不应粘贴整段 JSON。
- 规则顺序:规则按顺序匹配,首条符合条件的规则决定出口。将宽泛的兜底规则放在前面,会使后续精细分类没有机会命中。
- 域名策略:
IPIfNonMatch会在域名规则未匹配时尝试解析并进行 IP 匹配;它不代表每个请求都先解析,也不是 DNS 服务器地址设置。 - 后缀与完整域名:
domain:example.com和full:example.com是直接域名匹配写法,不是数据库分类。前者覆盖对应域名及其子域,后者只匹配该完整域名。 - 分类差异:
geosite:category-ads-all只有在当前数据源包含该标签时才能使用。某个来源支持的业务分类,不应直接视为其他来源也支持。
需要指定另一份文件时,Xray 支持类似 ext:custom-site.dat:cn 的外部资源引用。它要求对应文件位于内核可访问的资源位置,并包含该分类。普通使用场景先沿用默认文件名即可,不必为了更新数据引入外部文件引用。
更新后的生效检查与故障定位
验证应沿着“资源已加载 → 规则能命中 → 流量到达预期出口”的顺序进行。仅看网站能否打开不够:代理和直连都可能成功,而网页缓存会进一步掩盖路由变化。建议更新前后各记录一轮结果,保持节点、DNS 和测试目标不变。
| 现象 | 优先检查 | 处理动作 |
|---|---|---|
| 内核启动失败 | 资源路径、文件内容、分类名 | 查启动日志中的文件名与标签,恢复旧资源后逐项修正 |
| 更新成功但行为不变 | 运行配置、服务重启、现有长连接 | 重启连接服务,用新请求检查实际出口 |
| 域名规则没有命中 | 目标域名可见性、分类收录、前置规则 | 临时添加完整域名规则,区分数据缺项与请求信息缺失 |
| IP 规则没有命中 | 真实目标地址、域名策略、解析结果 | 核对日志中的目标 IP,检查是否需要域名解析后再匹配 |
| 局域网服务被代理 | 私有地址规则、规则顺序、局域网域名 | 先检查具体目标地址,再设置明确的直连规则 |
可以在自有测试环境中请求 192.168.1.10:8080 的服务,用于检查局域网地址直连;这里的地址和端口只是测试示例,必须替换成网络内真实存在的服务。再选一个明确收录于当前域名分类的站点和一个应走代理的站点,分别观察访问日志中的目标与出口标签。没有启用访问日志时,可临时开启适当日志级别,测试完成后恢复,避免长期保存不必要的访问记录。
结论:先用单条规则隔离问题
对误分流域名临时添加一条置顶的完整域名规则:若出口随之改变,继续查分类收录和规则优先级;若仍不改变,先确认流量是否进入当前客户端、运行配置是否正确,以及内核是否获得了域名信息。
稳定后再删除临时测试规则,并记录本次数据来源、更新时间和有效分类。Geo 数据适合周期维护,但不必每遇到连接异常就更新:认证失败、服务器不可达和传输参数不一致,通常需要检查节点或协议设置,而不是修改地理分类。