响应匹配器
这些 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_ip 的 args 采用规则列表形式。
- 类型:
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"
配置项
cname 的 args 采用规则列表形式。
- 类型:
array;必填:是;默认值:无 - 作用:定义 CNAME 目标名称匹配条件。
- 支持元素:
- 域名表达式(支持
full:、domain:、keyword:、regexp:,无前缀时按domain:处理) - 具备域名匹配能力的 provider 引用,例如
domain_set、geosite - 文件引用
- 域名表达式(支持
- 运行影响:
- 只检查响应中的 CNAME 目标。
- 任一 CNAME 目标命中时返回
true。
quick setup
- matches: "cname keyword:cdn"
典型用途
- 根据 CNAME 指向做后续策略。
rcode
作用
匹配当前响应的 rcode。
配置示例
以下示例混用文本与数字,两种格式等价且可以同时使用。
- tag: failure_rcodes
type: rcode
args:
- "SERVFAIL"
- "3"
配置项
rcode 的 args 为 rcode 列表。
- 类型:
array;必填:是;默认值:无 - 作用:定义可命中的响应码集合。
- 同时支持枚举文本和十进制数值,大小写不敏感;同一个列表中可以混用两种格式。
- 常见映射与含义见 DNS 编码速查表。
- 未知或未来扩展响应码可继续使用数值形式匹配。
- 运行影响:
- 仅当上下文中已有响应且 rcode 命中配置集合时返回
true。
- 仅当上下文中已有响应且 rcode 命中配置集合时返回
quick setup
- matches: "rcode SERVFAIL,3"
典型用途
- 根据失败类型做二次处置。
has_resp
作用
只要上下文中已有响应就命中。
配置示例
- tag: has_resp_flag
type: has_resp
配置项
无独立配置字段。
quick setup
- matches: "has_resp"
典型用途
- 在
cache、hosts、arbitrary后面判断是否已有结果。
has_wanted_ans
作用
判断响应 answers 中是否包含与请求 qtype 对应的记录。
配置示例
- tag: has_wanted_answer
type: has_wanted_ans
配置项
无独立配置字段。
quick setup
- matches: "has_wanted_ans"
典型用途
- 判断是否真正拿到了所需类型答案,而不仅仅是有个响应包。