跳到主要内容

IP provider

这些 provider 管理文本 IP/CIDR 集合或 V2Ray geoip 数据。

ip_set

作用

提供 IP / CIDR 规则集合,可被 client_ipresp_ipptr_ip 等 matcher 引用。

配置示例

- tag: lan_ip_set
type: ip_set
args:
ips:
# 单个 IPv4
- "192.168.1.1"
# IPv4 CIDR
- "192.168.0.0/16"
- "10.0.0.0/8"
# 单个 IPv6
- "2001:db8::1"
# IPv6 CIDR
- "fd00::/8"
files:
# 从文件合并更多 IP / CIDR
- "/etc/oxidns/ips.txt"
sets:
# 复用其它具备 IP 匹配能力的 provider
- "shared_ip_set"
- "shared_geoip"

配置项

ips

  • 类型:array;必填:否;默认值:空数组
  • 作用:定义内联 IP 或 CIDR 规则列表。
  • 示例:
    • - "1.1.1.1"
    • - "192.168.0.0/16"
    • - "2400:3200::/32"
  • 支持内容:
    • 单个 IPv4 地址
    • 单个 IPv6 地址
    • IPv4 CIDR
    • IPv6 CIDR
  • 运行影响:
    • 规则会在初始化阶段编译为地址匹配结构。

files

  • 类型:array;必填:否;默认值:空数组
  • 作用:指定外部 IP 规则文件路径列表。
  • 示例:- "/etc/oxidns/ips.txt"
  • 文件要求:
    • 每行一条 IP 或 CIDR 规则。
    • 空行与注释行会被忽略。
  • 运行影响:
    • 文件内容会在初始化或 reload_provider 时重新读取,并编译进当前 provider 的本地 matcher。

sets

  • 类型:array;必填:否;默认值:空数组
  • 作用:引用其它 ip_set 实例。
  • 示例:- "shared_ip_set"
  • 约束:
    • 允许引用任意具备 IP 匹配能力的 provider,例如 ip_setgeoip
  • 运行影响:
    • 当前 provider 只保存被引用 provider 的稳定句柄,不复制其规则。
    • 下游 provider 单独 reload 后,当前 ip_set 无需 reload 即可看到新结果。

行为说明

  • 初始化或 reload 时只编译本地 ips / files
  • 会分别维护 IPv4 / IPv6 规则索引。
  • 运行时按“本地 matcher -> sets 中声明顺序的 provider”判断。

规则格式

  • 1.1.1.1
  • 192.168.0.0/16
  • 2400:3200::/32

典型用途

  • LAN / WAN / overlay 等网络边界集合。
  • 安全名单、旁路名单、特定目标网段集。
  • 把本地 CIDR 和共享 geoip / ip_set provider 组合为统一入口。
注意事项
  • sets 只能引用具备 IP 匹配能力的 provider。
  • 若修改了 sets 拓扑、tag 或 provider 配置结构,仍需要应用级 reloadreload_provider 只刷新当前 provider 的既有配置和外部数据文件。

geoip

作用

从 v2ray-rules-dat 的 geoip.dat 中提取一个或多个 code,并编译成可复用 IP / CIDR 集合。

配置示例

- tag: geoip_cn
type: geoip
args:
file: "/etc/oxidns/geoip.dat"
selectors:
- "cn"

配置项

file

  • 类型:string;必填:是
  • 作用:指定 geoip.dat 文件路径。

selectors

  • 类型:array;必填:否;默认值:空数组
  • 作用:按 code 提取部分规则。
  • 行为:
    • 大小写不敏感精确匹配。
    • 多个 selector 取并集。
    • 未设置或空数组时,加载整个 dat 文件的全部 CIDR 并集。

组合示例

直接匹配客户端来源地址,或匹配 DNS 响应中的地址:

plugins:
- tag: geoip_cn
type: geoip
args:
file: "/etc/oxidns/geoip.dat"
selectors: ["cn"]

- tag: match_client_cn
type: client_ip
args: ["$geoip_cn"]

- tag: match_answer_cn
type: resp_ip
args: ["$geoip_cn"]

把 GeoIP 与本地 CIDR 合并,供多个 matcher 复用:

- tag: cn_or_private_network
type: ip_set
args:
ips:
- "10.0.0.0/8"
- "fd00::/8"
sets:
- "geoip_cn"

- tag: match_cn_or_private_client
type: client_ip
args: ["$cn_or_private_network"]

行为说明

  • 仅提供 IP 命中能力,可被 client_ipresp_ipptr_ip 直接引用。
  • 也可被 ip_set.sets 组合,并在上层 provider 运行时继续参与匹配。
  • 可通过 reload_providerPOST /plugins/<tag>/reload 独立刷新 dat 文件内容。
  • 如需在运行前把部分 selector 预导出成文本规则文件,可使用 oxidns export-dat --kind geoip
Selector 注意事项
  • GeoIP selector 只支持 code,不支持 @attribute、通配符或排除表达式。
  • 指定 selector 未命中 entry 时,启动或 provider reload 会失败;可以先用 oxidns export-dat --kind geoip --selector <selector> 校验。
  • 省略 selectors 会载入整份 dat 文件,通常规则量很大;生产配置应优先选择实际需要的 code。