2026-10-14 · 路由分流 · 约 10 分钟

geoip.dat 与 geosite.dat 更新指南:geoip:cn、geosite:category-ads 规则怎么写

介绍 GeoIP 与 GeoSite 两个规则数据库的作用、在 v2rayN 中的更新入口和存放位置,并用路由规则示例演示国家与域名类别的引用写法。

本文速览

本文面向已经导入订阅、准备调整路由分流的用户。先区分 IP 数据库与域名数据库,再通过 v2rayN 更新 Geo 文件、确认内核实际读取的位置,最后配置国家与广告类别规则。示例采用 V2Ray/Xray 的 DAT 路由语法;执行前应确认当前连接使用的内核,以及数据源是否包含所引用的类别。

GeoIP 与 GeoSite:分别匹配什么

geoip.dat 保存按国家或其他标签组织的 IP 网段;geosite.dat 保存按标签组织的域名规则。它们是供内核读取的数据文件,不是节点列表,也不是订阅地址。更新订阅会刷新服务器配置,但不能据此判断 Geo 文件也已经更新。

项目GeoIPGeoSite
常见文件名geoip.datgeosite.dat
匹配对象目标 IPv4 或 IPv6 地址连接携带或嗅探得到的域名
规则示例"ip": ["geoip:cn"]"domain": ["geosite:cn"]
主要限制不能仅凭 IP 归属判断经营主体所在地类别范围取决于数据源,且需要域名信息

geoip:cn 的含义是引用数据库中的 cn IP 集合,不是“所有中文网站”。geosite:cn 引用的是域名类别,两者并不一一对应。网站可能使用跨国 CDN,同一域名在不同网络下也可能解析到不同地址,因此域名规则与 IP 规则需要分开理解。

在 v2rayN 中更新 Geo 文件

先确认当前节点使用的是 V2Ray 或 Xray,以及当前启用的路由方案。v2rayN 负责生成配置和管理内核,真正读取数据库、匹配路由的是内核。下列步骤以提供「检查更新」→「更新 Geo 文件」入口的桌面界面为例;不同界面版本的名称或位置可能变化,不应把更新订阅当成替代操作。

  1. 记录现状

    记下当前活动路由方案、节点所用内核,以及本次准备修复的域名。先保存路由配置副本,避免把规则修改与数据库更新混在一次操作中。

  2. 执行更新

    打开主界面的「检查更新」→「更新 Geo 文件」。观察界面消息或日志,确认下载任务完成;仅看到菜单被点击,不能证明文件已经写入成功。

  3. 核对文件

    定位正在运行的这份客户端的数据目录,核对 geoip.dat 与 geosite.dat 的修改时间、文件大小和更新日志。若存在多个同名文件,应继续确认内核实际使用哪一份。

  4. 重启验证

    重启当前内核;若界面没有独立重启入口,可完整退出客户端后重新启动。确认日志没有 Geo 文件加载错误,再重新建立测试连接,观察规则是否命中预期出站。

如果更新失败,先按错误类型处理:下载超时检查访问更新源的网络路径;证书错误先检查系统日期与时间;写入失败检查目录权限以及文件是否被其他进程占用。订阅分组中的“通过代理更新”属于订阅更新选项,不能直接推断它也控制 Geo 文件下载。

存放位置:以当前实例和内核日志为准

不要只凭网上的一条固定路径覆盖文件。便携目录、安装目录、用户数据目录,以及不同发行包的资源布局可能不同。尤其是电脑里保留了两份 v2rayN 时,更新旧目录中的文件,不会自动改变当前实例读取的数据。

定位方案:先找到实例,再确认资源目录

Windows
  • 通过任务管理器对当前进程执行「打开文件所在的位置」,确认运行的是哪份程序。
  • 在当前实例相关目录搜索两个 DAT 文件,并查看更新后的修改时间。
  • 结合客户端日志、生成配置及内核启动信息判断实际资源路径。
macOS 与 Linux
  • 区分应用安装位置和当前用户的数据目录,不要假定资源都在程序旁边。
  • 检查启动环境及内核日志,确认资源目录是否被显式指定。
  • 手动替换前停止内核,保留原文件,并确认目标目录具有写入权限。

存在同名文件不代表该文件正在被读取;当前实例、启动环境与加载日志应相互印证。

例如,在 Windows 的 PowerShell 中,可以进入已确认的客户端目录后执行下面的只读搜索。结果仅列出该目录树下的文件,不会自动覆盖任何内容;若资源位于用户数据目录,还需到对应目录继续查找。

Get-ChildItem -Path . -Recurse -File -Filter '*.dat' |
  Where-Object { $_.Name -in @('geoip.dat', 'geosite.dat') } |
  Select-Object FullName, Length, LastWriteTime

手动管理内核时,还要留意资源目录环境变量,例如 V2Ray 的 V2RAY_LOCATION_ASSET 或 Xray 的 XRAY_LOCATION_ASSET。客户端托管内核时不要随意新增这些变量,否则可能让内核绕过刚更新的目录。只有确认启动方式和实际读取路径后,手动替换才有意义。

规则写法:广告拦截、域名直连与 IP 直连

下面是 V2Ray/Xray 配置中的 routing 片段,不是可直接运行的完整客户端配置。它演示三条规则:广告类别交给阻断出站,国内域名和国内 IP 交给直连出站。使用前必须核对实际出站标签;block 与 direct 在这里是示例标签,不会因为写进规则就自动创建出站。

2
本例引用的 DAT 文件
3
从上到下匹配的规则
1
更新后至少重启一次内核
{
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "type": "field",
        "domain": [
          "geosite:category-ads"
        ],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "domain": [
          "geosite:cn"
        ],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": [
          "geoip:cn"
        ],
        "outboundTag": "direct"
      }
    ]
  }
}

在 v2rayN 的路由编辑界面填写时,域名条件使用 geosite:category-ads,IP 条件使用 geoip:cn,不要把整个 JSON 对象粘到单个条件输入框。保存后还要确认这套方案已经成为当前活动路由。完整字段关系可参阅本站的配置大全。

域名策略:为什么 IP 规则没有命中

示例选择 AsIs,意味着路由阶段不会为了匹配 IP 规则而额外解析一个域名目标。若连接本来携带的是 IP,仍可匹配 geoip:cn;若连接携带域名但没有命中域名规则,则不能指望它必然落入国内 IP 直连规则。

AsIs:先用域名分类

推荐

适合作为本教程的排查起点。域名类别与 IP 条件的作用边界清楚,避免把额外 DNS 解析引入同一次测试;它并不代表所有网络环境都应固定使用此策略。

适合:先确认 GeoSite 规则与顺序是否正确。

IPIfNonMatch:解析后再匹配

当域名未命中现有规则时,尝试解析并继续用 IP 条件匹配。采用前应检查内核 DNS 配置、解析结果及默认出口,避免把解析差异误判成数据库过期。

适合:明确需要用解析后的 IP 为域名流量补充分流。

如果应用直接连接 IP,GeoSite 可能拿不到域名。嗅探可以从部分协议流量中提取域名,但不是所有连接都能恢复域名;应用使用的传输方式和加密机制也会影响结果。更新 geosite.dat 不能单独解决“路由根本没有域名可匹配”的问题。

更新后仍异常:按日志缩小范围

验证时不要只观察网页能否打开。先记录一个待测域名、预期出口与访问时间,再查看同一时间段的内核日志。日志详细程度由当前日志级别决定;必要时临时提高详细程度,完成排查后恢复,并避免公开包含订阅地址或认证信息的完整日志。

提示找不到 category-ads,文件不是已经更新了吗?

先核对数据源是否提供这个类别。若来源只提供其他广告集合,应按其实际标签修改规则;不要不断重下同一份文件。修正后重启内核,确认类别加载错误消失,再进行访问测试。

提示无法打开 geoip.dat,要放到哪里?

从日志中的失败路径入手,确认目录是否存在、文件名是否正确以及进程是否有读取权限。再检查启动环境是否指定了另一资源目录。不要把文件复制到多个目录碰运气。

广告规则保存了,为什么仍然显示广告?

确认活动方案、规则顺序和阻断出站标签,再检查广告请求使用的域名是否在类别中。与正文内容共用域名的广告很难仅靠域名列表区分,页面缓存或已有连接也可能保留旧结果。

国内网站走了代理,是 GeoIP 过期吗?

先看连接目标是域名还是 IP。使用 AsIs 时,域名未命中并不必然触发 IP 匹配。还需检查是否有更靠前的代理规则、目标是否使用境外 CDN,以及 DNS 结果是否符合预期。

同一套规则在另一个内核里不能用?

先确认目标内核支持的规则格式。本文的 DAT 文件与 geosite:、geoip: 引用面向 V2Ray/Xray,不能通过改扩展名转换成其他内核的规则集。应使用目标内核对应的数据格式和配置字段。

后续维护:数据库与规则分开更新

数据库更新改变类别成员,路由更新改变条件、顺序和出口。两者会分别影响分流结果。一次只调整一个变量,更容易判断问题来自数据变化、规则覆盖,还是 DNS 解析差异。没有必要在每次订阅刷新后手动替换全部文件。

遇到无法启动或网络中断时,优先恢复上一份可用配置,再分项定位。常见连接问题可继续查看疑难解答。Geo 数据只是路由条件的一部分;入口接管、规则顺序、DNS 策略与出站标签共同决定最终连接路径。

下载v2rayN