rule_set
rule_sets 在顶层按名字定义规则集,路由/DNS 规则用 rule_set 引用。来源可以是本地文件、远程 URL、内联 payload 或 sing-box 风格的内联 rules。
yaml
rule_sets:
private:
rules:
- {ip_is_private: true}
adguard:
format: adguard
payload:
- "||ads.example^"
outbounds:
direct:
type: direct
route:
rules:
- {rule_set: [private], outbound: direct}
- {rule_set: [adguard], action: reject}
final: direct
dns:
servers:
default: {type: udp, address: 127.0.0.1:53}
final: default字段
path
- 类型:路径。
- 必填:与
url、payload或rules组成来源选择。 - 默认:有
url且未写时,是数据目录下rule-sets/<name>。 - 行为:相对路径以数据目录为基准。
url
- 类型:HTTP/HTTPS URL。
- 必填:可选。
- 行为:副本缺失或超过
refresh时抓取;抓取失败时继续使用已有副本或payload。
refresh
- 类型:时长。
- 默认:
1d。
http_client
- 类型:
http_clients名字。 - 必填:可选。
- 默认:
route.default_http_client,再没有时使用普通客户端。
via
- 类型:出站名。
- 必填:可选。
- 默认:
http_client的via;两边都没有时使用route.final。
header
- 类型:映射;每个请求头可写一个字符串或字符串数组。
- 默认:空。
size_limit
- 类型:大小。
- 默认:
64MiB。
format
- 类型:字符串枚举。
- 必填:可选。
- 默认:按内容自动识别;AdGuard 列表必须显式写
adguard。 - 取值:
srs、mrs、json、text、adguard。
behavior
- 类型:字符串枚举。
- 默认:
classical。 - 取值:
domain、ipcidr、classical。 - 行为:文本规则集的条目语义。
payload
- 类型:字符串数组。
- 必填:可选。
- 行为:内联文本行;有
url时作为首次抓取前的临时内容。
initial
- 类型:路径。
- 必填:可选。
- 行为:远程规则集第一份副本出现前读取的初始文件。
rules
- 类型:
RuleSpec数组。 - 必填:可选。
- 限制:必须单独使用,不能同时写
path、url或payload;规则是无动作的 headless 规则。
说明
不写 rules 时,path、url、payload 至少要有一个。rules、路径/URL/payload 之外还写动作字段会被拒绝。内联 rules 和 sing-box source JSON 使用同一套匹配字段,见路由规则。