跳到主要内容

请求匹配器

这些 matcher 检查查询名、question、类型、类别、客户端地址或 PTR 请求中的地址。

qname

作用

匹配请求中的查询域名。

配置示例

- tag: match_domain
type: qname
args:
# 精确匹配
- "full:login.example.com"
# 后缀匹配
- "domain:example.com"
# 关键字匹配
- "keyword:cdn"
# 正则匹配
- "regexp:^api[0-9]+\\.example\\.net$"
# 复用已有 domain_set
- "$core_domains"
# 从文件加载规则
- "&/etc/oxidns/domains.txt"

配置项

qnameargs 采用规则列表形式,列表中的每个元素均独立生效。

  • 类型:array;必填:是;默认值:无
  • 作用:定义域名匹配规则来源。
  • 支持元素:
    • 域名表达式(支持 full:domain:keyword:regexp:,无前缀时按 domain: 处理)
    • 具备域名匹配能力的 provider 引用,例如 domain_setgeosite
    • 文件引用
  • 运行影响:
    • 当前请求中的任意问题域名命中任一规则时,matcher 返回 true

quick setup

- matches: "qname domain:example.com"

典型用途

  • 按域名后缀、关键字、正则做策略分支。

question

作用

按 provider 的 contains_question 语义匹配请求中的 question。

这个插件会遍历当前请求里的所有 question,只要任意 question 被任意一个 provider 命中,就返回 true

配置示例

- tag: match_ad
type: question
args:
- "$ad_rules"
- "$shared_domains"

配置项

  • args
    • 类型:array[string];必填:是;默认值:无
    • 作用:使用 "$provider_tag" 形式引用实现了 contains_question 的 provider。

quick setup

- matches: "question $ad_rules"

行为说明

  • 会遍历请求中的所有 question。
  • 任意 question 被任意 provider 命中时返回 true
  • quick setup 支持同样的 "$provider_tag" 写法。

典型用途

  • adguard_ruledomain_setgeosite 这类 provider 直接参与请求 question 匹配。
  • sequence 中先做 question 级匹配,再交给 black_holereject 或其它动作执行。

qtype

作用

匹配请求中的 qtype。

配置示例

以下示例混用文本与数字,两种格式等价且可以同时使用。

- tag: only_a_aaaa
type: qtype
args:
- "A"
- "28"

配置项

qtypeargs 为类型列表。

  • 类型:array;必填:是;默认值:无
  • 作用:定义允许命中的查询类型集合。
  • 同时支持枚举文本和十进制数值,大小写不敏感;同一个列表中可以混用两种格式。
  • 常见映射与含义见 DNS 编码速查表
  • 未知或未来扩展类型可继续使用数值形式匹配。
  • 运行影响:
    • 请求中的任意问题类型命中配置集合时返回 true

quick setup

- matches: "qtype A,28"

典型用途

  • 区分 A / AAAA / PTR / TXT 等。

qclass

作用

匹配请求中的 qclass。

配置示例

以下示例混用文本与数字,两种格式等价且可以同时使用。

- tag: in_or_ch
type: qclass
args:
- "IN"
- "3"

配置项

qclassargs 为类别列表。

  • 类型:array;必填:是;默认值:无
  • 作用:定义允许命中的查询类别集合。
  • 同时支持枚举文本和十进制数值,大小写不敏感;同一个列表中可以混用两种格式。
  • 常见映射与含义见 DNS 编码速查表
  • 未知或未来扩展类别可继续使用数值形式匹配。
  • 运行影响:
    • 请求中的任意问题类别命中配置集合时返回 true

quick setup

- matches: "qclass IN,3"

典型用途

  • 严格限制仅处理 IN 类查询。

client_ip

作用

匹配客户端来源 IP。

配置示例

- tag: lan_clients
type: client_ip
args:
# 直接写 CIDR
- "192.168.0.0/16"
# 引用 ip_set
- "$lan_ip_set"

配置项

client_ipargs 采用规则列表形式。

  • 类型:array;必填:是;默认值:无
  • 作用:定义客户端来源地址匹配条件。
  • 支持元素:
    • 单个 IP
    • CIDR
    • ip_set 引用
  • 运行影响:
    • 只要客户端来源地址命中任一规则,matcher 即返回 true

quick setup

- matches: "client_ip 192.168.1.0/24"

典型用途

  • 按来源网段划分策略。

ptr_ip

作用

从 PTR 请求名中解析 IP 并做匹配。

配置示例

client_ip / resp_ip 类似,支持 IP 规则和 ip_set

配置项

ptr_ipargs 采用规则列表形式。

  • 类型:array;必填:是;默认值:无
  • 作用:定义 PTR 请求名解析出的地址匹配条件。
  • 支持元素:
    • 单个 IP
    • CIDR
    • ip_set 引用
  • 运行影响:
    • 仅对 PTR 查询生效。
    • PTR 请求名解析出的地址命中任一规则时返回 true

quick setup

- matches: "ptr_ip 192.168.0.0/16"

典型用途

  • 只允许某些地址段走 PTR 反查。