适合已经导入订阅、但国内外分流不符合预期的 v2rayN 用户。先分清域名库和 IP 库,再用客户端更新 Geo 文件,检查当前内核实际读取的位置,最后核对规则顺序和日志。更新数据库不等于更新订阅,也不会自动替你重排路由;本文的 JSON 仅展示 Xray、V2Fly 的 routing 配置思路,不是可以直接导入的完整客户端配置。
两份 dat 文件:一份匹配域名,一份匹配 IP
geosite.dat 保存按地区、用途或服务分类的域名集合;geoip.dat 保存按地区等标签分类的 IP 地址段。路由里的 geosite:cn 是查域名集合,geoip:cn 是查 IP 集合,二者不能互换。数据库负责提供“集合里有什么”,路由规则负责决定“匹配后从哪个出口走”。
| 文件 | 路由字段与示例 | 使用前提 |
|---|---|---|
geosite.dat | domain: ["geosite:cn"] | 路由阶段能取得域名,且数据库包含 cn 分类。 |
geoip.dat | ip: ["geoip:cn"] | 连接目标为 IP,或内核按域名策略解析后参与 IP 匹配。 |
geoip.dat | ip: ["geoip:private"] | 数据库提供 private 分类,用于私有及相关特殊用途地址集合;具体覆盖范围看数据源。 |
例如,浏览器把域名交给本地代理时,域名规则可以直接判断;某个应用只交给代理一个目标 IP 时,域名库未必有机会参与。开启嗅探可以在受支持的流量中补充域名信息,但不能保证每条连接都能恢复原始域名。单纯更新 geosite 文件,解决不了“应用根本没有提供域名”的问题。
v2rayN 一键更新:先备份,再检查更新日志
优先使用客户端自带的 Geo 更新入口。桌面界面的常见操作路径是「检查更新」→「更新 Geo 文件」;部分界面把入口简写为「Geo 文件」。菜单位置和文案可能随版本、界面类型变化,应寻找更新菜单中的 Geo 项,而不是「更新订阅」或客户端程序更新项。
-
保留原配置
先记录当前内核类型、正在使用的路由预设和 Geo 数据源。需要保留本地配置副本时,退出客户端后再复制其实际配置目录;不要把正在写入的配置当作稳定备份。
-
更新数据库
打开「检查更新」→「更新 Geo 文件」,等待任务结束。检查输出信息是否分别涉及 geoip.dat 和 geosite.dat,不要只看到下载进度结束就关闭窗口。
-
核对更新结果
查看日志中的成功或失败信息,并检查实际数据目录中文件的修改时间和大小。文件存在不代表内容可用,文件时间变化也不代表内核已经重新读取。
-
重新加载内核
通过客户端重新启动当前内核,或完整退出后重新打开客户端。随后查看启动日志,确认没有文件读取失败、分类不存在或路由配置错误。
-
验证分流
分别测试一个需要直连的站点、一个应走代理的站点,以及实际使用的局域网服务。保留相同节点、相同路由预设和相同代理模式,避免一次修改多个变量。
更新超时时,先确认当前网络能访问客户端配置的数据源。如果界面提供通过代理下载的选项,先选中一个已验证可用的节点,再重试;如果没有该选项,不要把“设置系统代理”当作一定有效的补救,因为更新请求是否遵循系统代理取决于客户端实现。查看错误是连接超时、权限不足还是数据加载失败,再决定下一步。
更新方式怎么选:内置更新优先,手动替换用于排障
客户端内置更新
推荐由 v2rayN 按当前设置下载并保存资源,减少放错目录、改错文件名的机会。更新后仍要重启内核,并确认正在使用的规则确实引用了这些分类。
适合:日常维护、现有数据源可正常连接。
手动替换文件
仅使用来源明确、与当前内核格式相符的数据文件。先停止内核,保留原文件,再替换内核实际读取位置的同名文件;发生加载错误时恢复原副本。
适合:内置下载失败、需要定位目录或数据兼容问题。
不要凭教程里的固定目录猜文件位置。安装方式、系统平台和客户端版本都会影响资源目录。先结合客户端设置、启动日志与实际文件位置确认内核读取路径。主程序旁边出现一份 dat 文件,不意味着运行中的内核正在使用它。
- 格式要对应:本文的 dat 规则语法针对 Xray、V2Fly;其他资源格式不能只改扩展名后使用。
- 来源要对应:两份文件宜由同一套受信任的维护流程获取,减少分类约定不一致带来的排查成本。
- 失败要回退:替换后无法启动,先恢复上一份可用文件,再查看具体错误,不要同时重装客户端、换节点和改 DNS。
路由写法与顺序:具体规则在前,兜底规则在后
Xray、V2Fly 的常见 field 路由按顺序判断,先匹配到的规则决定出口。把覆盖所有 TCP、UDP 的规则放在最前面,后面的国内直连规则就很难再起作用。下面是五条规则的演示:私有地址优先、国内域名直连、国内 IP 直连,最后由代理兜底。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["domain:localhost"],
"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 是示例出口标签,不是内核自动创建的关键字。完整配置必须已经定义同名出站;客户端生成的标签可能不同,应以当前实际配置为准。不要把整段 JSON 粘进只接受单条规则的输入框,也不要直接覆盖 v2rayN 自动生成的运行配置,因为下次启动可能重新生成。
- 私有地址优先:让局域网目标先获得直连机会,但这并不替代系统路由、防火墙或 TUN 排除设置。
- 域名规则单独写:
geosite:cn放在domain数组,geoip:cn放在ip数组。 - 不要误写成同时满足:一条 field 规则同时写 domain 和 ip 等不同条件时,通常要求这些条件同时成立;需要“域名或 IP”时,拆成两条规则更清楚。
- 自定义例外放前面:某个站点必须代理,就把它的明确域名规则放在广泛的国内直连规则之前。
DNS 与规则库:文件更新了,结果也可能不变
domainStrategy 决定路由匹配时如何处理域名,不等同于完整的 DNS 配置。AsIs 不为路由 IP 匹配主动解析域名;IPIfNonMatch 在域名未匹配时尝试解析并继续判断;IPOnDemand 在匹配过程需要 IP 时触发解析。选择后两者会涉及解析器、网络可达性和隐私取舍,不能只看“国内网站是否直连”。
判断某个站点是否应该直连时,也不要把 IP 所属地区当成网站归属的唯一依据。内容分发网络会使同一域名在不同网络解析到不同地址,数据库又有自己的更新周期。对业务要求明确的站点,用更具体的域名规则通常比不断调整地区规则更容易维护。
- 先看连接进入内核时是域名还是 IP,确认应用是否真的经过代理。
- 再看路由日志记录的目标与出站标签;必要时临时提高日志详细程度,排查完恢复原级别。
- 最后检查 DNS 解析和数据库分类,不要仅凭浏览器显示的出口地址判断每条资源请求。
更新后仍不生效:按报错类型处理
更新成功了,为什么国内网站还是走代理?
先检查当前启用的是哪套路由预设,再检查是否有“全部代理”的宽泛规则排在前面。确认当前模式允许分流后,查看目标域名是否进入内核,以及日志显示的实际出站标签。数据库更新不会自动切换你的路由预设。
日志提示 geosite 分类不存在,应该换节点吗?
先不要换节点。记录报错里的分类名称,核对正在使用的数据源是否提供该分类,以及内核读取的是否为刚更新的文件。恢复旧文件或移除不受支持的分类引用,重新加载配置后再测试连接。
geoip:private 写了,局域网设备还是打不开?
先确认规则在代理兜底之前,再确认客户端是否接管了这条连接。如果访问的是路由器管理地址,可用自己的实际地址直接测试,区分域名解析失败和 IP 连接失败;随后检查 TUN 路由、局域网访问权限与设备防火墙。
一更新就无法启动,能只退回数据库吗?
可以先停止内核,恢复原来可用的两份文件,再重新启动。若恢复后仍报错,检查近期是否同时修改了路由或内核类型。把数据库、路由、内核分开回退,才能定位是哪一项变化造成问题。
维护频率按需要安排,不必每次连接前更新。更换数据源、发现分类遗漏或排查规则异常时,再有针对性地更新。订阅更新负责节点资料,Geo 更新负责规则集合,路由编辑负责流量去向;把这三件事分开处理,排障记录才有价值。需要继续核对字段,可查看路由配置参考;连接本身就失败时,先按连接问题排查确认基础链路。
客户端与平台选择
按系统选择 v2rayN 安装包,再完成订阅导入与基础连接验证。先确认连接可用,再逐项调整路由和数据库,遇到异常也更容易回退。