GeoIP 与 GeoSite 数据库更新指南:geoip.dat、geosite.dat 在路由规则里的写法

说明两类规则数据库各自收录什么、在客户端里如何一键更新,以及 geosite:cn、geoip:private 等常用写法在分流规则中的匹配顺序与注意事项。

本文速览

GeoSite 按域名集合匹配,GeoIP 按 IP 地址集合匹配。本文面向使用 v2rayN 配置路由分流的 Mac 用户,说明数据库更新入口、Xray 与 V2Ray 路由字段、规则顺序和日志检查方法。先确认请求进入内核,再检查数据库与规则;更新订阅并不能代替更新这两个文件。

GeoIP 与 GeoSite 分别匹配什么

geosite.dat 保存按标签组织的域名规则集合,条目可以是完整域名、域名后缀或其他受支持的匹配形式。geoip.dat 保存按标签组织的 IP 网段集合,通常包含国家或地区分类,以及特定用途的地址分类。两者都是二进制数据库,不能把普通域名文本改名后直接使用。

GeoSite:域名集合

常见文件
geosite.dat
路由字段
domain
引用示例
geosite:cn
匹配输入
请求中的目标域名

标签是否存在,取决于正在使用的数据库来源与内容。

GeoIP:地址集合

常见文件
geoip.dat
路由字段
ip
引用示例
geoip:private
匹配输入
目标 IP 或路由解析得到的 IP

地址分类不等于网站分类,也不表示连接一定可达。

geosite:cn 不是“所有以 .cn 结尾的域名”,而是数据库中名为 cn 的集合。它可能收录其他后缀的域名,也可能尚未收录新上线的站点。geoip:cn 则依据数据库里的地址范围匹配,不能据此判断经营主体或用户所在地。

geoip:private 常用于内网与特殊用途地址的直连规则,但不要把它理解成完整的局域网域名清单。例如 192.168.1.1 是 IP 目标,printer.local 是域名目标,后者还涉及名称解析。某个地址是否收录,应以当前数据库内容为准。

先检查系统代理,再选择更新方式

路由规则只处理已经进入代理内核的连接。macOS 系统代理主要影响遵循系统代理设置的应用;某个应用绕过系统代理时,修改 GeoSite 规则通常不会改变它的连接路径。TUN 可以承接更多流量,但仍需检查路由、DNS 和排除项,不能仅凭开关已打开就断定所有请求都进入内核。

2 类文件
本文涉及 geoip.dat 与 geosite.dat
3 种策略
AsIs、IPIfNonMatch、IPOnDemand
53
传统 DNS 常用 UDP/TCP 端口

数据库更新、订阅更新、内核更新是三件事。订阅提供节点参数;数据库提供可引用的路由集合;内核负责执行配置。切换 VMess 或 VLESS 节点不会自动修正数据库标签,更新数据库也不会修复失效的节点凭据。

客户端内更新

推荐

使用 v2rayN 提供的 Geo 文件更新入口,由客户端处理下载与文件放置。完成后查看更新结果,再重启内核验证加载情况。

适合:使用内置路由、希望减少目录操作的日常用户。

手动替换文件

仅在已明确数据库来源、标签集合和内核资源目录时操作。替换前保留旧文件,不要直接修改应用包内文件或系统目录权限。

适合:内置更新失败、使用自定义数据库的进阶用户。

v2rayN 更新 Geo 文件的操作步骤

v2rayN 的菜单文案会随版本和界面语言变化。常见桌面界面的入口是「检查更新」→「更新 Geo files」;若界面将 GeoIP、GeoSite 分开列出,需要分别更新。下面按这个常见入口说明,不把某个版本的菜单位置当成所有平台的固定布局。

  1. 确认当前内核

    在主界面确认当前节点与运行日志中的内核名称。本文代码面向读取 DAT 数据库的 Xray 或 V2Ray 配置;若当前配置使用其他规则格式,不要直接套用。

  2. 保留原规则

    打开「设置」→「路由设置」,记录当前启用的路由预设、规则顺序和域名策略。使用自定义规则时,先保存一份现有内容,以便出现异常后恢复。

  3. 执行文件更新

    打开「检查更新」→「更新 Geo files」。如果菜单分别提供「更新 GeoIP」和「更新 GeoSite」,依次执行两项,等待客户端显示各自结果。

  4. 重新加载内核

    确认下载完成后,使用客户端提供的重启内核操作;找不到对应入口时,正常退出并重新打开客户端。重新读取数据库比仅刷新订阅更有针对性。

  5. 查看加载日志

    确认没有数据库读取失败、集合不存在或路由配置无效的错误。再分别测试一个明确直连目标和一个明确代理目标,检查实际出站是否符合预期。

手动处理时,应先停止内核,并从客户端日志或资源目录设置确认实际文件位置。应用安装目录与用户数据目录可能不同,macOS 上更不应默认把数据库放进应用包。替换完成后若出现标签缺失,恢复原文件往往比继续追加规则更容易定位问题。

geosite:cn 与 geoip:private 的正确写法

下面是 Xray/V2Ray 风格的 routing 配置片段,不是可独立运行的完整配置。示例中的 direct、proxy 必须与完整配置里已经定义的出站标签一致。v2rayN 会生成运行配置,优先在客户端路由编辑器中调整,不要修改生成后很快会被覆盖的临时文件。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": [
          "full:example.com"
        ],
        "outboundTag": "proxy"
      },
      {
        "type": "field",
        "domain": [
          "geosite:cn"
        ],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": [
          "geoip:private",
          "geoip:cn"
        ],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}

示例中的 example.com 仅用于说明精确域名规则,使用时应改成实际需要指定出站的域名。最后一条是明确的 TCP/UDP 兜底规则,不代表所有客户端的默认行为。没有兜底规则时,未命中的流量通常交给默认出站;不能假设默认出站一定是代理。

规则顺序与 DNS 策略怎么配合

规则按顺序检查,命中后使用对应出站,不会继续寻找“更精确”的下一条。通常先放明确例外,再放域名集合,随后放 IP 集合,最后放兜底。若把覆盖全部 TCP/UDP 的规则放在最前面,后面的 GeoSite 和 GeoIP 规则便没有机会处理这些连接。

domainStrategy路由行为排查重点
AsIs不为路由匹配额外解析域名;目标本来是 IP 时仍可匹配 IP 规则。域名请求不应期待仅靠 GeoIP 规则实现完整分流。
IPIfNonMatch域名未命中规则时,尝试解析为 IP 后再次匹配。前面的域名规则或兜底规则是否已经命中。
IPOnDemand匹配过程中遇到需要 IP 的规则时,按需解析目标域名。靠前的 IP 规则可能在后续域名例外之前命中。

尤其要注意:前面示例使用 IPIfNonMatch,同时设置了末尾兜底规则。域名即使没有命中 geosite:cn,也可能先命中兜底,因此不会因为“没有命中 GeoSite”就必然进入额外的 IP 解析过程。该示例优先使用域名分流;其中 IP 规则仍可处理目标原本就是 IP 的连接。

如果确实需要对未分类域名解析后再用 GeoIP 分流,可以重新设计兜底与默认出站,或者评估 IPOnDemand,但必须一起检查规则顺序。不能只改一个策略名称就认定行为正确。采用按需解析时,把指定代理的域名例外放在宽泛 IP 规则之前,可减少例外被提前覆盖的情况。

更新后仍不生效:按症状排查

不要同时换订阅、改 DNS、切路由和更新数据库。一次只改变一个条件,保留目标域名、目标 IP、命中规则和出站标签。这样才能区分“请求没有进入内核”“数据库无法加载”和“规则确实匹配错了”。

症状优先检查处理方式
更新后内核无法启动文件读取路径、数据库格式、集合标签查看启动日志,恢复旧文件,再确认配置引用的集合是否存在。
国内网站仍走代理域名是否入库、是否被前置规则覆盖先添加明确域名规则验证,再决定是否调整集合或更新来源。
内网设备无法访问请求目标是域名还是 IP、解析结果及 TUN 排除项先用设备实际内网 IP 测试,再分别处理名称解析与路由。
切换规则没有变化当前启用的路由预设、现有长连接确认预设已生效,重建测试连接,必要时重启内核。
只有某个应用异常应用是否遵循系统代理、是否自带 DNS先确认流量入口,不要仅靠追加 GeoSite 条目处理。

同样的配置思路可以用于 Android 上的 v2rayNG,但它使用 Xray 内核,菜单和资源目录不能照搬桌面操作。v2flyNG 使用 v2fly 内核,支持的配置特性与数据库读取方式也应按其实际版本确认。订阅能导入并不代表所有客户端都会共享同一份路由数据库。

日常维护可以归纳为三步:更新文件并确认加载,检查规则顺序与域名策略,再用新连接验证出站。数据库负责提供集合,配置负责决定去向,系统代理与 TUN 负责把流量送进内核;分清这三层,排查路由分流会更直接。

下载v2rayN按平台选择客户端