跳到主要内容

响应匹配器

这些 matcher 检查响应地址、CNAME、RCODE,以及是否已有期望类型的 answer。

resp_ip

作用

匹配响应 answers 中的 A/AAAA IP。

配置示例

- tag: matched_resp_ip
type: resp_ip
args:
- "100.64.0.0/10"
- "$special_targets"

配置项

resp_ipargs 采用规则列表形式。

  • 类型:array;必填:是;默认值:无
  • 作用:定义应答地址匹配条件。
  • 支持元素:
    • 单个 IP
    • CIDR
    • ip_set 引用
  • 运行影响:
    • 只检查 response answer 区中的 A/AAAA 地址。
    • 任一答案地址命中即返回 true

quick setup

- matches: "resp_ip 10.0.0.0/8"

典型用途

  • 根据上游返回地址继续做二次处置。
  • 配合 ipset / nftset 前做更细粒度筛选。

cname

作用

匹配响应中的 CNAME 目标域名。

配置示例

- tag: cname_target
type: cname
args:
- "full:alias.example.com"
- "domain:example.com"
- "keyword:cdn"
- "regexp:^edge[0-9]+\\.example\\.net$"
- "$core_domains"
- "&/etc/oxidns/cnames.txt"

配置项

cnameargs 采用规则列表形式。

  • 类型:array;必填:是;默认值:无
  • 作用:定义 CNAME 目标名称匹配条件。
  • 支持元素:
    • 域名表达式(支持 full:domain:keyword:regexp:,无前缀时按 domain: 处理)
    • 具备域名匹配能力的 provider 引用,例如 domain_setgeosite
    • 文件引用
  • 运行影响:
    • 只检查响应中的 CNAME 目标。
    • 任一 CNAME 目标命中时返回 true

quick setup

- matches: "cname keyword:cdn"

典型用途

  • 根据 CNAME 指向做后续策略。

rcode

作用

匹配当前响应的 rcode。

配置示例

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

- tag: failure_rcodes
type: rcode
args:
- "SERVFAIL"
- "3"

配置项

rcodeargs 为 rcode 列表。

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

quick setup

- matches: "rcode SERVFAIL,3"

典型用途

  • 根据失败类型做二次处置。

has_resp

作用

只要上下文中已有响应就命中。

配置示例

- tag: has_resp_flag
type: has_resp

配置项

无独立配置字段。

quick setup

- matches: "has_resp"

典型用途

  • cachehostsarbitrary 后面判断是否已有结果。

has_wanted_ans

作用

判断响应 answers 中是否包含与请求 qtype 对应的记录。

配置示例

- tag: has_wanted_answer
type: has_wanted_ans

配置项

无独立配置字段。

quick setup

- matches: "has_wanted_ans"

典型用途

  • 判断是否真正拿到了所需类型答案,而不仅仅是有个响应包。