GeoIP 与 GeoSite 规则文件更新教程及路由写法

介绍 geoip.dat 与 geosite.dat 的来源和更新方式,讲清 geosite:cn、geoip:private 等常用写法在分流规则里的用法。

本文速览

本文适合需要维护 v2rayN 分流规则的用户。先区分域名库和 IP 库,再更新内核实际读取的数据文件,最后用规则顺序、域名解析策略与日志验证结果。Android 上的 v2rayNG、v2flyNG 也可参考原理,但文件入口与桌面端不同。

GeoIP 与 GeoSite 分别匹配什么

geosite.dat 保存按标签组织的域名规则,geoip.dat 保存按标签组织的 IP 地址段。它们是路由数据,不是订阅,也不是节点配置。更新数据文件不会修改 VMess、VLESS 等连接参数,更不会自动新增可用节点。

GeoSite 域名库

文件名
geosite.dat
匹配对象
域名及库内定义的域名规则
引用位置
路由规则的 domain
常见写法
geosite:cn

分类取决于数据源;同名标签不保证在不同规则库中完全一致。

GeoIP 地址库

文件名
geoip.dat
匹配对象
目标 IP 地址
引用位置
路由规则的 ip
常见写法
geoip:private、geoip:cn

地址分类不等于网站归属,CDN 与跨区域服务可能造成两者不同。

geosite:cn 引用规则库预先整理的 cn 域名分类,匹配范围由库中的条目决定,而非仅限于以 .cn 结尾的域名。geoip:cn 则引用对应的地址段分类,两者不能互相替代。

V2Ray 与 Xray 的常见部署使用这类 DAT 数据。v2rayNG 使用 Xray 内核,v2flyNG 使用 v2fly 内核;v2rayN 的数据格式需求还要看当前选用的内核。若实际运行的是使用其他规则格式的内核,不应仅凭文件名相似就套用本文的 DAT 配置。

规则文件来源与更新方式选择

常见数据来自 v2fly 的域名分类与地址数据构建项目,以及社区维护的兼容规则库。域名清单经整理、编译后生成 DAT 文件;它不是可以直接用文本编辑器修改的域名列表。一个库是否包含 cn、private 或某个服务标签,要看该库自己的分类说明。

客户端内置更新

推荐

使用客户端预设的数据源与目标目录,减少文件放错位置的风险。更新前仍需确认选用的内核,以及内置数据源是否包含现有规则引用的标签。

适合:常规分流、没有自定义数据源的用户

手动替换文件

适用于固定数据源或离线维护。需要自行确认格式、标签与实际资源目录,并保留上一份可用文件。不要把不同日期、不同来源的数据随意混合后直接投入使用。

适合:受控部署、需要回退的自定义规则

v2rayN 更新 Geo 文件的操作步骤

以下按带有「检查更新」→「更新 Geo 文件」入口的 v2rayN 界面说明。不同界面分支可能将入口放进设置或更新菜单;若本机没有该菜单,不要寻找一个猜测出来的目录直接覆盖。先查看客户端帮助与当前内核日志,确认资源路径。

  1. 记录现有配置

    打开「设置」→「路由设置」,记录当前启用的路由配置、规则顺序和默认出站。备份现有 Geo 文件,并记下备份来自哪个目录,便于恢复。

  2. 确认当前内核

    查看启动日志中的内核名称和启动参数,确认当前使用 Xray 或 v2fly 的 DAT 路线。不要把程序安装目录、工作目录与资源目录当成同一个位置。

  3. 执行数据更新

    进入「检查更新」→「更新 Geo 文件」。等待下载与替换结果,确认两份文件的处理均已完成;若提示网络错误,先解决下载连接,再重试,不要把部分成功当成完整成功。

  4. 重启当前内核

    通过客户端重启服务,或退出客户端后重新打开,让内核重新载入文件。仅关闭主窗口可能只是最小化到托盘,并不代表服务已经重启。

  5. 核对启动日志

    检查是否出现资源文件不存在、分类未找到或配置解析失败。随后测试一个直连域名、一个应代理域名和一个局域网地址,逐项确认分流。

手动更新时,应先停止内核,再把兼容的文件放进已确认的资源目录,保留准确文件名 geoip.dat 与 geosite.dat。不要把下载到的网页、压缩包或带重复扩展名的文件改名后充当数据文件。若更新后启动失败,恢复备份并重启,再排查新库的标签与格式。

Android 设备应使用 v2rayNG 或 v2flyNG 自己提供的 Geo 数据更新、资源导入入口。菜单名称随版本变化,不能照抄桌面路径;应用私有目录也不等于系统「下载」目录。无法确认入口时,先保留当前可用配置,不要清除应用数据来尝试更新。

geosite:cn 与 geoip:private 的路由写法

以下是原生 V2Ray/Xray 配置中的 routing 对象示例,不是可以直接导入的完整客户端配置。它假定现有出站标签为 direct 与 proxy:前者对应直连出站,后者对应代理出站。实际标签不同,必须先替换成配置中已经存在的名称。

{
  "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"
      }
    ]
  }
}

在 v2rayN 的「设置」→「路由设置」里编辑时,通常需要分别填写域名条件、IP 条件和出站,不能把整段 JSON 粘贴进“域名”输入框。单条规则同时填写 domain 与 ip 通常表示条件需要同时满足,不是任意一项满足即可;想表达“域名或地址命中就直连”,应像示例一样拆成两条。

用具体地址验证分流结果

判断更新是否生效,不能只看网页是否打开。成功访问可能来自代理兜底、应用缓存或旧连接。应先重启内核,关闭测试应用已有连接,再观察新请求的目标与出站记录;若现有日志级别没有路由信息,可临时提高日志详细程度,完成后恢复。

2 份
本文涉及的 DAT 数据文件
3 段
RFC 1918 的 IPv4 私有地址段
53
传统 DNS 常用的 TCP/UDP 端口
测试目标预期观察需要排除的干扰
实际存在的内网设备,如 192.168.1.1请求确实进入内核时,私有地址规则选择直连系统代理绕过内网时,内核可能根本收不到请求
确认属于当前库 cn 标签的域名域名规则选择直连请求只有 IP、域名未传入或分类来源不同
明确写入代理规则的测试域名选择预设代理出站前面已有更宽泛的直连规则
没有显式分类的目标按解析策略及兜底规则处理误把兜底成功当成 Geo 分类命中

IPv4 私有地址的三段分别是 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。这组地址可用于理解 CIDR,但不是 geoip:private 在所有库里的完整内容;实际库还可能包含回环、链路本地及 IPv6 相关范围,应以数据源定义为准。

Geo 文件也不能单独保证 DNS 请求按预期出站。传统 DNS 的 53 端口、应用自己的加密解析,以及内核内置 DNS,可能走不同路径。若域名分流异常,应同时检查请求是否保留域名、DNS 配置和 TUN 接管范围;不要通过反复更换分类库掩盖解析路径问题。

更新失败与规则不命中的常见问题

文件已经替换,为什么分流还是老样子?

先重启当前内核,再核对启动参数和资源目录。电脑上可能留有多份 v2rayN,桌面快捷方式启动的未必是刚替换文件的那一份。最后检查当前启用的路由配置是否正确,避免只修改了未启用的方案。

日志提示找不到某个 GeoSite 标签,怎么办?

检查规则中的标签拼写,再查看当前数据源是否提供该分类。不要假设不同来源的库具有同一套标签。可恢复原数据文件,或将该规则改为明确的域名条件;修改前保存原规则,便于对照。

更新 Geo 文件一直超时,需要重装吗?

先确认更新地址能够访问。若客户端提供通过代理下载的选项,可使用已经可用的代理后重试;也要检查更新任务是否会随内核重启而中断。重装不能解决数据源不可达,优先保留现有可用文件。

更新后国内网站反而走代理了,怎么定位?

按“启用的路由方案→规则顺序→域名是否传入→标签是否包含目标→解析策略”检查。必要时在分类规则之前添加一条精确域名测试规则,如 full:example.com,仅用于验证规则链路,测试完删除;不要直接把所有流量改成直连来替代定位。

长期维护时,建议一次只改一类变量:先更新数据文件并验证,再调整规则或 DNS。记录数据来源、替换位置和本地操作时间即可形成可回退的维护记录。更新频率应服从实际分类变化,不必为追求文件日期而频繁替换一套已经验证可用的规则。

下载v2rayN按平台选择客户端