VXVX Docs

Geo

GeoConfig — 域名、IP 与应用集合

地理数据集合在 ServerConfig.geoGeoConfig)中定义。模式定义:protos/proto/vx/geo/geo.proto

原子集合atomic*)直接持有域名、IP 或应用 ID。大集合great*)通过 inNames / exNames 组合其他集合。大集合与原子集合的 name 在同一类别内须唯一。

路由DNS 通过 domainTagsdstIpTagssrcIpTagsappTags名称引用集合。客户端 UI 说明见集合

GeoConfig

greatDomainSets

组合域名集合(包含 / 排除其他集合)

atomicDomainSets

原子域名集合(内联域名、geosite、Clash 规则、远程文件等)

greatIpSets

大IP集合

atomicIpSets

小IP集合

appSets

应用集合

各类别内名称须唯一(greatDomainSetsatomicDomainSets 之间不可重名,IP 集合同理)。

Domain

单条域名匹配规则。定义于 protos/proto/vx/common/geo/geo.proto

用于 路由geoDomainsDNSgeoDomains,以及 AtomicDomainSetConfigdomains

type
Domain.Type

匹配方式:

  • Plain:子串匹配(关键词)
  • Regex:正则匹配
  • RootDomain:根域及其子域(后缀匹配)
  • Full:完整主机名精确匹配
value
string

要匹配的域名或模式

CIDR

单条 IP 网段。定义于 protos/proto/vx/common/geo/geo.proto

用于 AtomicIPSetConfigcidrs

ip
bytes

IP 地址,4 字节(IPv4)或 16 字节(IPv6)。ProtoJSON 中通常为 base64 编码。

prefix
uint32

网络前缀长度(CIDR 掩码位数,如 24 表示 /24

AtomicDomainSetConfig

小域名集合。domainsgeositegeositesclashFilesremoteGeoFiles 可组合使用。

name
string

集合名称,供 domainTags 引用

domains

内联 Domain 列表

geosite

从单个 geosite 配置加载域名

geosites

从多个 geosite 配置加载域名(与 geosite 可同时使用)

useBloomFilter
bool

对大集合启用布隆过滤器以降低内存占用(常见于 iOS)。有约 1% 误报率。

clashFiles
string[]

Clash 格式规则文件路径,从中提取域名规则

inverse
bool

反向匹配:域名不在本集合源中时才匹配

remoteGeoFiles

定时从 HTTPS 下载的远程 geo 文件(见 GeoRemoteFile

GeositeConfig

geosite.dat(或兼容格式)按分类代码加载域名。

codes
string[]

geosite 分类代码(如 cngfwprivate

attributes
string[]

在已加载域名中按 Domain.attribute.key 进一步筛选(不区分大小写)

filepath
string

本地 geosite.dat 路径

remoteUrl
string

远程 geosite.dat 的 HTTPS URL;配合 refreshCron 定时更新。将下载至filepath

refreshCron
string

5 段 cron(分 时 日 月 周)。空表示仅在启动 / 重载时拉取

AtomicIPSetConfig

小IP集合。cidrsgeoipclashFilesremoteGeoFiles 可组合使用。

name
string

集合名称,供 dstIpTagssrcIpTagsipTags 引用

cidrs

内联 CIDR 列表

geoip

从 geoip 文件按国家/地区代码加载 CIDR

inverse
bool

反向匹配:IP 不在本集合源中时才匹配

clashFiles
string[]

Clash 格式规则文件路径,从中提取 IP / CIDR 规则

remoteGeoFiles

定时下载的远程 geo 文件

GeoIPConfig

geoip.dat(或兼容格式)按代码加载 IP 段。

codes
string[]

geoip 分类 / 国家代码(如 cnprivate

filepath
string

本地 geoip.dat 路径

remoteUrl
string

远程 geoip.dat 的 HTTPS URL

refreshCron
string

5 段 cron。空表示仅在启动 / 重载时拉取

GreatDomainSetConfig

大域名集合,不直接持有域名,而是引用其他原子或大域名集合。

匹配逻辑:先检查 exNames(命中则不匹配),再检查 inNames(命中任一则匹配)。

name
string

组合集合名称

oppositeName
string

互斥配对集合名称。见 集合 中的互斥集合说明

inNames
string[]

包含这些集合中的域名(命中任一即匹配)

exNames
string[]

排除这些集合中的域名(命中任一则不匹配)

不可在 inNamesexNames 中包含自身 name

GreatIPSetConfig

大IP集合,逻辑与 GreatDomainSetConfig 相同,但针对 IP。

name
string

组合集合名称

oppositeName
string

互斥配对集合名称

inNames
string[]

包含这些 IP 集合中的地址

exNames
string[]

排除这些 IP 集合中的地址

AppSetConfig

应用集合,供路由 appTags 使用。

name
string

集合名称

appIds

AppId 列表

clashFiles
string[]

Clash 格式规则文件,从中提取AppId 规则

AppId

单条应用 ID 匹配规则。定义于 protos/proto/vx/router/router.proto

type
AppId.Type

匹配方式:

  • Keyword:子串匹配
  • Prefix:前缀匹配
  • Exact:精确匹配
value
string

应用包名或 ID 字符串(匹配时转为小写)

GeoRemoteFile

远程 geo 数据文件的定时下载配置,用于 AtomicDomainSetConfig.remoteGeoFilesAtomicIPSetConfig.remoteGeoFiles

filepath
string

下载后写入的本地路径

sourceUrl
string

HTTPS 下载地址

refreshCron
string

5 段 cron(分 时 日 月 周)。空表示仅在启动 / 重载时拉取一次

示例

原子域名集合 + 组合集合 + 路由引用:

{
  "geo": {
    "atomicDomainSets": [
      {
        "name": "gfw",
        "geosite": {
          "filepath": "geosite.dat",
          "codes": ["gfw"]
        }
      },
      {
        "name": "custom-direct",
        "domains": [
          { "type": "Full", "value": "example.com" }
        ]
      }
    ],
    "greatDomainSets": [
      {
        "name": "proxy-domains",
        "inNames": ["gfw"],
        "exNames": ["custom-direct"]
      }
    ]
  },
  "router": {
    "rules": [
      {
        "domainTags": ["proxy-domains"],
        "matchAll": true,
        "outboundTag": "proxy"
      }
    ]
  }
}

相关

  • 路由domainTagsdstIpTagsgeoDomainsappTags
  • DNSdomainTagsipTags
  • 集合 — 客户端中的集合类型与组合逻辑

评论