请求匹配器
这些 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"
配置项
qname 的 args 采用规则列表形式,列表中的每个元素均独立生效。
- 类型:
array;必填:是;默认值:无 - 作用:定义域名匹配规则来源。
- 支持元素:
- 域名表达式(支持
full:、domain:、keyword:、regexp:,无前缀时按domain:处理) - 具备域名匹配能力的 provider 引用,例如
domain_set、geosite - 文件引用
- 域名表达式(支持
- 运行影响:
- 当前请求中的任意问题域名命中任一规则时,matcher 返回
true。
- 当前请求中的任意问题域名命中任一规则时,matcher 返回
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_rule、domain_set、geosite这类 provider 直接参与请求 question 匹配。 - 在
sequence中先做 question 级匹配,再交给black_hole、reject或其它动作执行。
qtype
作用
匹配请求中的 qtype。
配置示例
以下示例混用文本与数字,两种格式等价且可以同时使用。
- tag: only_a_aaaa
type: qtype
args:
- "A"
- "28"
配置项
qtype 的 args 为类型列表。
- 类型:
array;必填:是;默认值:无 - 作用:定义允许命中的查询类型集合。
- 同时支持枚举文本和十进制数值,大小写不敏感;同一个列表中可以混用两种格式。
- 常见映射与含义见 DNS 编码速查表。
- 未知或未来扩展类型可继续使用数值形式匹配。
- 运行影响:
- 请求中的任意问题类型命中配置集合时返回
true。
- 请求中的任意问题类型命中配置集合时返回
quick setup
- matches: "qtype A,28"
典型用途
- 区分 A / AAAA / PTR / TXT 等。
qclass
作用
匹配请求中的 qclass。
配置示例
以下示例混用文本与数字,两种格式等价且可以同时使用。
- tag: in_or_ch
type: qclass
args:
- "IN"
- "3"
配置项
qclass 的 args 为类别列表。
- 类型:
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_ip 的 args 采用规则列表形式。
- 类型:
array;必填:是;默认值:无 - 作用:定义客户端来源地址匹配条件。
- 支持元素:
- 单个 IP
- CIDR
ip_set引用
- 运行影响:
- 只要客户端来源地址命中任一规则,matcher 即返回
true。
- 只要客户端来源地址命中任一规则,matcher 即返回
quick setup
- matches: "client_ip 192.168.1.0/24"
典型用途
- 按来源网段划分策略。
ptr_ip
作用
从 PTR 请求名中解析 IP 并做匹配。
配置示例
与 client_ip / resp_ip 类似,支持 IP 规则和 ip_set。
配置项
ptr_ip 的 args 采用规则列表形式。
- 类型:
array;必填:是;默认值:无 - 作用:定义 PTR 请求名解析出的地址匹配条件。
- 支持元素:
- 单个 IP
- CIDR
ip_set引用
- 运行影响:
- 仅对 PTR 查询生效。
- PTR 请求名解析出的地址命中任一规则时返回
true。
quick setup
- matches: "ptr_ip 192.168.0.0/16"
典型用途
- 只允许某些地址段走 PTR 反查。