geoip.dat 管 IP 地址集合,geosite.dat 管域名集合。本文适合已能连接节点、但遇到直连与代理分流异常的用户:先确认当前内核和路由模式,再更新实际被读取的数据文件,最后用规则顺序、DNS 策略和日志验证结果。更新订阅不能代替更新规则库,更新成功也不等于当前流量一定命中预期规则。
geoip 与 geosite:先分清匹配对象
V2Ray 与 Xray 的路由模块可以引用外部数据集合,避免把大量域名和 IP 网段逐条写入配置。geosite.dat 保存带标签的域名列表;geoip.dat 保存带标签的 IP 网段列表。文件本身不决定流量走向,只有路由规则引用这些集合,并指定出站,才会产生分流效果。
| 项目 | geosite.dat | geoip.dat |
|---|---|---|
| 匹配对象 | 目标域名 | 目标 IP 地址 |
| 常用引用 | geosite:cn | geoip:cn、geoip:private |
| JSON 字段 | domain 数组 | ip 数组 |
| 常见偏差 | 域名不在集合中,或连接未提供域名 | 地址归属变化,或尚未获得目标 IP |
geosite:cn 不是“所有以 .cn 结尾的域名”,而是当前数据源里名为 cn 的集合。集合可以包含其他后缀的域名,具体成员由数据源维护。geoip:cn 也不是按网页语言判断,而是按数据文件记录的 IP 网段匹配;它不能独立识别网站业务归属。
规则库过旧会漏掉新增域名或变化的网段,但不是所有异常都由旧文件引起。目标域名不可见、规则被提前截获、当前路由模式没有使用这份配置,都可能表现为“更新后仍不生效”。因此先记录现象,再更新,比直接反复替换文件更容易定位。
v2rayN 更新 Geo 文件:先确认内核再操作
v2rayN 是管理界面,实际读取规则库的是启动后的内核。本文的 .dat 用法针对 V2Ray 与 Xray;如果当前配置使用其他规则数据格式,不要只凭同一个客户端名称就套用文件路径。先查看启动日志中的内核名称和配置位置,再进行下面的更新。
-
记录当前状态
在主界面记录当前服务器、系统代理状态和路由选择。保存现有路由设置;自定义配置还应保留可恢复的副本。排查期间不要同时更换节点与规则模式。
-
检查更新入口
在提供此入口的 v2rayN 界面中,打开「检查更新」→「更新 Geo 文件」。不同界面构建的入口位置和译名可能变化;如果看不到该项,先查看当前界面的更新菜单,不要把「更新订阅」当成替代操作。
-
等待完成提示
查看更新结果或日志,确认需要的两个数据文件都已完成下载。遇到超时,先确认更新源可达;更新操作如提供代理选项,可通过已验证可用的代理重试,不要连续重复点击。
-
重新加载内核
更新完成后重新启动当前服务或内核;无法确认是否重载时,退出并重新打开 v2rayN。检查启动日志,确认没有文件不存在、读取失败或分类不存在的错误。
-
复测相同目标
保留原来的节点和路由模式,重新打开之前异常的目标。建立新连接再看出站记录;更新前已建立的连接,不一定会重新经过路由判断。
更新失败时:选择内置更新或手动替换
优先使用客户端提供的更新入口,它更容易把文件放进当前环境使用的位置。不要照抄别人的绝对路径:便携目录、安装目录、用户数据目录以及自定义启动方式,可能使用不同的资源路径。磁盘上存在同名文件,也不代表运行中的内核读取了它。
客户端内置更新
推荐从当前更新入口获取规则库,保留下载结果与启动日志。完成后重启内核,核对实际使用的数据目录,减少把文件放错位置的可能。
适合:日常维护、更新入口可正常访问
手动替换文件
从所选规则数据源的正式发布渠道取得对应的二进制数据文件。停止内核后备份旧文件,再放入已确认的资源目录;如果下载的是压缩包,先解压,不要把压缩包直接改名成 .dat。
适合:自动更新失败、明确知道资源目录与数据源
结论:先确认读取位置,再替换文件
手动更新前记录内核启动参数与资源目录;替换后立刻重启并检查加载错误。路径不明确时,先解决路径问题,不要向多个目录同时复制文件,以免下次更新无法判断生效的是哪份。
手动替换还要检查分类是否存在。不同数据源即使都叫 geosite.dat,也不一定提供相同标签;带 @ 的属性过滤写法同样依赖源文件内容。出现“找不到分类”时,应核对规则引用的集合与数据源说明,而不是修改节点协议。保留原文件可以让配置加载失败时迅速回退。
geosite:cn 与 geoip:cn 的路由写法
下面是合并到内核配置中的 routing 片段,不是可直接运行的完整客户端配置。它假定已有名为 direct 的直连出站;这些出站标签必须与实际配置完全一致。在 v2rayN 使用图形路由编辑时,可按相同逻辑填写域名、IP 与出站字段,不要直接覆盖客户端自动生成的整份配置。
{
"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"
}
]
}
}
IPIfNonMatch 表示先尝试按现有目标信息匹配;域名请求没有命中规则时,再解析为 IP 尝试 IP 规则。它不是“所有请求先解析”。如果前面已经有一条覆盖全部域名的代理规则,匹配会在那条规则结束,后面的 geoip:cn 不会成为万能补救。
- 拆开两条规则:要表达“命中 cn 域名或 cn 地址就直连”,应像示例一样拆开。把
domain与ip放入同一条规则,不等同于二者任选其一;一条规则内的多个条件类型需要同时满足。 - 明确未命中去向:示例没有定义兜底代理。没有规则匹配时,V2Ray/Xray 通常使用第一个出站,需结合实际完整配置确认;不要把
direct标签本身误认为全局默认策略。 - 处理特定例外:某个站点必须走代理时,把它的精确域名规则放到较宽泛的 cn 直连规则前。是否覆盖全部子域名,应按实际业务范围选择匹配方式。
规则不生效:按顺序、域名与 DNS 排查
路由按规则从上到下判断,首次匹配后确定出站。数据库只回答“目标是否属于某个集合”,不会纠正前面已经命中的规则。因此,排查时应同时看路由列表、目标地址和日志中的出站标签,不要只看网页是否能打开。
- 确认模式:检查主界面当前路由选择是否为预期配置。全局代理或全局直连模式可能绕开你正在编辑的分流逻辑。
- 确认域名:如果应用只交给代理一个 IP,域名规则不一定能匹配。嗅探可能从部分协议中恢复域名,但并非覆盖所有连接,也不能保证每次成功。
- 确认 DNS:当路由需要 IP 判断时,解析结果会影响匹配。传统 DNS 常使用 UDP/TCP 53,加密 DNS 另有传输方式;网页连接走代理,不代表 DNS 查询也走同一路径。
- 确认顺序:检查前面是否有宽泛域名规则、端口规则或兜底规则。先用一条精确域名规则验证出站,再恢复集合规则,能区分规则库问题与配置顺序问题。
- 确认新连接:关闭目标页面或重启测试应用后重试。必要时短时启用更详细的日志,完成验证后恢复常用日志级别,并避免公开包含订阅地址与目标域名的完整日志。
如果精确域名能正确走指定出站,而替换成 geosite:cn 后不匹配,重点核对该域名是否真的属于当前集合。如果精确规则也不生效,先检查当前配置是否生效、出站标签是否正确以及前置规则是否截获;此时继续下载规则库通常没有帮助。
Geo 文件更新常见问题
提示更新成功,为什么还是走错线路?
先重启内核,再建立新连接。检查当前路由模式和日志中的出站标签;随后临时添加目标的精确域名规则做对照。精确规则生效而集合规则不生效时,再核对集合内容与实际读取路径。
两个文件必须每天一起换吗?
不必每天机械更新。可在发现分类变化、开始维护路由或数据源发布重要调整时更新。客户端支持统一更新时可一并处理;自定义数据源则应确认各自标签仍能满足当前规则,并保留可回退文件。
报 geosite 分类不存在,要重新添加订阅吗?
先核对报错里的标签拼写,再确认 geosite.dat 的来源与分类列表。必要时恢复上一份可用文件,或把规则改为数据源实际提供的分类。重新添加订阅不会给数据文件补上缺失标签。
安卓客户端也能直接照搬桌面目录吗?
不能照搬目录。v2rayNG 使用 Xray 内核,v2flyNG 使用 v2fly 内核,应在各自客户端提供的资源更新入口操作;具体入口以当前界面为准。移动端应用数据目录由系统管理,桌面配置片段也要结合客户端支持的导入方式使用。