本文适合已经导入节点、准备调整路由分流的用户。先分清 IP 库与域名库,再更新客户端实际加载的文件,最后用一组最小路由验证匹配结果。示例采用 V2Ray/Xray 的传统 JSON 路由语法;通过 v2rayN 界面设置时,需要把字段对应到路由编辑项,而不是直接把代码粘贴到订阅地址栏。
GeoIP 与 GeoSite:分别匹配 IP 和域名
geoip.dat 保存按标签组织的 IP 网段集合,geosite.dat 保存按标签组织的域名规则集合。两者都是内核读取的数据文件,不是节点订阅,也不是代理协议。更新它们不会更改 VMess 或 VLESS 节点的服务器地址、用户标识和传输参数。
GeoIP:IP 网段集合
- 默认文件名
geoip.dat- 路由字段
ip- 常见写法
geoip:cn- 私有地址标签
geoip:private
标签是否存在取决于文件来源;地域归类也不等于网站运营主体所在地。
GeoSite:域名规则集合
- 默认文件名
geosite.dat- 路由字段
domain- 常见写法
geosite:cn- 独立域名写法
full:example.com
域名集合可能包含后缀、完整域名或正则规则,不应理解成单纯的域名后缀清单。
geosite:cn 表示读取当前域名库里的 cn 集合,不是“所有以 .cn 结尾的域名”。同样,geoip:cn 也不是查询某个网站的注册地。使用 CDN 的网站可能返回多个地区的 IP,按域名分流和按解析结果分流会得到不同结果。
更新前检查:文件来源、内核与生效位置
更新失败常见于三种情况:客户端更新了一个目录,内核却从另一个目录读取;新数据源不含旧规则引用的标签;下载得到的内容不是有效数据文件。开始前先备份当前可用的两份文件,以及路由规则或客户端设置导出文件。
- 先记录内核。在客户端的节点设置和启动日志中确认内核名称;不要只看桌面快捷方式的名称。
- 再确认来源。优先沿用当前客户端默认的数据源。若使用自定义来源,先查明是否提供
cn、private等现有规则需要的集合。 - 核对实际读取位置。以客户端管理的资源目录和启动错误中的路径为准。便携目录、独立数据目录、多个安装副本可能互不相通。
- 保留回退条件。同时记录原来源、更新时间与路由配置。只备份规则文本,不能解决新文件缺少标签的问题。
判断:先保持来源一致,再考虑更换规则库
如果当前分流正常,先更新同一来源的数据。只有确认所需分类不在现有库中时,再更换来源并逐项核对标签,避免把“更新文件”和“迁移规则体系”混成一次操作。
客户端内更新规则文件:下载后重新加载内核
客户端菜单名称会随版本和界面语言调整。桌面版 v2rayN 常见入口位于「检查更新」菜单下的 Geo 文件更新项;有些版本将 GeoIP、GeoSite 分开显示。以下以功能入口为准,找不到对应项时先查看当前版本的菜单与日志,不要把“更新订阅”当成更新规则库。
- 先建立可用连接。确认节点能使用。规则源若在当前网络无法访问,可在客户端支持的更新代理选项中启用代理下载;系统代理是否生效不能代替更新日志的判断。
- 执行 Geo 文件更新。在 v2rayN 中展开「检查更新」,选择 Geo 文件相关更新项;若拆成两项,分别执行 GeoIP 和 GeoSite 更新。等待每项显示完成,再继续修改路由。
- 核对错误信息。超时通常指向连接问题;解析、解压或写入失败则需要检查下载内容、目录权限与文件占用。文件修改时间变化只能作为辅助证据。
- 重新加载。执行客户端提供的重启服务或重载内核操作;没有独立按钮时,停止后重新启动连接。随后检查启动日志,确认没有数据文件或分类加载错误。
- 做一次分流验证。保留更新前相同的路由模式和测试目标,再比较实际出站。不要在这一步同时更换节点、DNS 与整套路由模板。
在安卓端,v2rayNG 的 Geo 资源更新入口通常可从侧边菜单或资源相关页面找到;进入后按页面提供的更新操作执行。v2flyNG 的菜单布局与可用更新项应以安装版本为准,不要照搬另一款客户端的菜单名称。移动端完成更新后,同样需要停止并重新启动连接。
路由规则写法:域名优先、IP 补充、最后兜底
路由按照规则排列顺序匹配,命中后使用对应的出站。下面演示“国内域名直连、私有与国内 IP 直连、其余 TCP/UDP 走代理”的基本结构。这里的 direct 和 proxy 都是出站标签,必须与现有配置里的 outbounds[].tag 完全一致。
这是配置片段,不是完整的客户端配置。适用于直接编辑 V2Ray/Xray JSON 的场景;通过客户端图形界面管理路由时,应在路由编辑器中建立相同顺序,并保存为当前启用的规则集。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": [
"geosite:cn"
],
"outboundTag": "direct"
},
{
"type": "field",
"ip": [
"geoip:private",
"geoip:cn"
],
"outboundTag": "direct"
},
{
"type": "field",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
- 第一条按域名集合判断。请求携带域名且命中
geosite:cn时直接选用direct,不需要依靠 GeoIP 再作同一次分流决定。 - 第二条按 IP 集合判断。同一
ip数组里的两个集合是“任一匹配即可”,不是要求目标同时属于两个集合。私有地址集合的具体范围以数据文件为准。 - 第三条显式兜底。前面都未命中的 TCP 与 UDP 请求进入
proxy。这条宽泛规则应放在末尾,否则后续规则可能没有机会匹配。 - 不要随意合并字段。同一条规则同时填写
domain与ip时,不表示“域名或 IP 任一命中”。不同条件字段通常需要同时满足,分成两条更容易审查。
IPIfNonMatch 的含义是:域名请求未能按域名条件确定路由时,解析目标 IP 再尝试 IP 条件。最终的 network 兜底不是域名分类,也不能代替这一步解析。若设置为 AsIs,路由模块不会为了 IP 规则主动解析域名,只有域名信息的请求就可能落到兜底出站。
DNS 与规则顺序:更新成功也可能分流不符
GeoSite 不会自动指定 DNS 服务器,GeoIP 也不会修复错误解析。路由模块决定连接走哪个出站;DNS 配置决定怎样取得地址。两者有关联,但不能把“国内域名直连”直接等同于“查询一定发送给国内 DNS”。DNS 服务器选择和查询出站仍需单独检查。
| 观察到的现象 | 优先检查 | 具体处理 |
|---|---|---|
| 域名规则一直不命中 | 内核收到域名还是 IP | 检查应用代理方式;按需要评估嗅探设置,不要假定每种加密连接都能恢复域名。 |
| 所有网站都走同一出口 | 路由模式与第一条规则 | 确认启用自定义分流,并将全匹配规则移至末尾。 |
| 同一站点偶尔改变出口 | CDN 地址与 IP 分类 | 检查是否依赖 GeoIP;有稳定需求时添加靠前的域名例外。 |
| 改规则后旧连接不变 | 连接是否已经建立 | 重新加载内核并新建测试连接,不用已有长连接判断新规则。 |
即使设置了 IPIfNonMatch,已经命中的靠前域名规则也不会再交给后面的 GeoIP 规则推翻。反过来,如果应用在进入代理前就把域名解析成 IP,GeoSite 未必有域名可匹配。嗅探能否取得域名取决于协议、流量形态与配置,不能视为百分之百有效的补救措施。
判断:先确认请求信息,再判断数据库是否过时
看到错误出站时,先核对日志中的目标域名或 IP、命中的出口与规则顺序。只有请求信息正确、规则也确实启用,而集合仍缺少目标时,才考虑更新数据或增加单独例外。
更新失败与分类不存在:常见问题处理
更新提示成功,为什么启动时报分类不存在?
先记录日志中缺失的标签,例如 geosite:cn。确认当前文件来源是否包含这个集合,再检查内核读取的路径。不要仅把标签改成相似名称;可先恢复备份文件,启动成功后再按新数据源提供的分类调整规则。
GeoIP 更新完成,GeoSite 下载超时怎么办?
分别查看两项更新结果,先检查失败项的来源和网络连通性。如果客户端支持代理更新,使用已经验证可用的节点重试。不要连续覆盖已有可用文件,也不要把一个文件复制并重命名成另一个文件。
订阅已更新,为什么路由数据库还是旧的?
订阅主要提供节点信息,Geo 文件有独立更新入口。到客户端的 Geo 资源更新项执行操作,再重新启动连接。若订阅服务另附路由配置,也应分别确认规则文本和数据文件的更新状态。
更新后部分网站打不开,要马上换节点吗?
先确认内核是否正常启动,再看该网站的出站是否变化。若更新前可用、回退两份数据文件后恢复,优先检查标签差异和分类变化;若所有连接都失败,再检查节点连接、DNS 与本地代理设置。
无需为了追求最新而每天更换数据源。普通使用可以每周检查一次,有明确分类变动或日志报错时再提前处理。规则库更新不会提高节点本身的带宽,也不会改变服务端是否支持某种协议;它改善的是路由判断所依据的数据。
生效验证:固定三个目标,保留一次回退
验证时选一个预计直连的域名、一个预计代理的域名,再选一个有权限访问的局域网服务。目的不是测速度,而是确认三类连接分别进入预期出站。局域网服务应使用真实存在的地址,不要向随机地址反复发送测试请求。
- 确认入口一致。例如应用使用
127.0.0.1:10808时,先确认该端口确实是当前客户端的监听端口,并核对它接受的代理协议。10808 只是示例,不能替代实际设置。 - 确认配置加载。保存路由,重新加载内核,查看是否出现文件读取、标签缺失或配置解析错误。启动失败时不要继续用浏览器表现推测路由。
- 逐个建立新连接。记录目标、时间和日志显示的出站标签。客户端若只显示
direct/proxy,这些信息可以验证出口,但不一定能指出具体命中了哪条规则。 - 缩小异常范围。必要时临时保留最小规则集,或提高日志详细程度进行一次短时复现。排查结束后恢复常用日志级别,分享日志前删去节点地址、用户标识与访问记录。
- 保留可用版本。确认三个目标均符合预期后,再清理过期备份。遇到问题先恢复原文件与原规则,再分别重做更新和修改。
最终应保存三类信息:规则文件来源、路由排列顺序、实际使用的内核。后续即使换设备或重装客户端,也能先恢复一致的分流逻辑,再决定是否调整分类与 DNS。更多初始设置可参阅配置教程,字段含义可对照协议手册。