跳到主要内容

组合与常量匹配器

这些 matcher 组合其它表达式或提供恒真、恒假的基础条件。

any_match

作用

组合多个 matcher 表达式,只要任意一个命中就返回 true

配置示例

- tag: any_policy_hit
type: any_match
args:
- "$lan_clients"
- "qtype AAAA"
- "!$blocked_qname"

配置项

any_matchargs 为 matcher 表达式列表。

  • 类型:array[string];必填:是;默认值:无
  • 支持元素:
    • matcher tag 引用(如 "$match_tag"
    • quick setup matcher 表达式(如 "qname domain:example.com"
    • 取反 matcher 表达式(如 "!has_resp""!$blocked_qname"
  • 运行影响:
    • 按配置顺序依次判断,命中任意一个后立即短路返回 true
    • 全部不命中时返回 false

典型用途

  • 把多个“可放行条件”合并为单个 matcher,复用到多个 sequence 规则。
  • 作为复杂条件的“或”组合层,减少重复配置。

string_exp

作用

通用字符串表达式匹配器,用于补足专用 matcher 不够灵活的场景。

配置示例

- tag: match_http_path
type: string_exp
args: "url_path prefix /dns-"

也支持字符串数组:

args:
- "client_ip"
- "prefix"
- "192.168."

配置项

string_expargs 可以为字符串或字符串数组。

  • 类型:stringarray
  • 必填:是
  • 默认值:无
  • 作用:定义完整字符串表达式。
  • 表达式组成:
    • 数据来源 source
    • 匹配操作 op
    • 一个或多个参数
  • 运行影响:
    • 按表达式从上下文中取值并执行字符串匹配。

表达式格式

<source> <op> <arg...>

支持的 source

  • qname
  • qtype
  • qclass
  • rcode
  • resp_ip
  • mark
  • client_ip
  • server_name
  • url_path
  • $ENV_KEY

支持的 op

  • eq
  • prefix
  • suffix
  • contains
  • regexp
  • zl

说明:

  • zl 表示 zero length,用于判断字符串是否为空。
  • regexp 支持一个或多个正则参数。

quick setup

- matches: "string_exp server_name suffix .example.net"

典型用途

  • 按 DoH 路径、SNI、mark 集合、响应 IP 字符串做灵活判断。
注意事项
  • 可使用专用 matcher 的场景,宜优先采用专用 matcher。
  • string_exp 提供更高灵活性,但表达式的可读性与可维护性通常低于专用插件。

_true

作用

恒为真。

配置示例

- tag: always_true
type: _true

配置项

无独立配置字段。

quick setup

- matches: "_true"

典型用途

  • 作为保底命中条件。
  • 测试 sequence 分支顺序。

_false

作用

恒为假。

配置示例

- tag: always_false
type: _false

配置项

无独立配置字段。

quick setup

- matches: "_false"

典型用途

  • 临时禁用某条规则。