# 集合与路由规则

## `[domain-sets]`

定义供路由使用的命名域名集合，键为集合名。通过 `[routing]` 选择出口，与 HTTP 捕获域名和精确 DNS 主机记录不同。

```ini
[domain-sets]
social-media=twitter.com,facebook.com,instagram.com
```

## `[cidr-sets]`

定义供路由使用的命名 IP 范围（CIDR）集合，键为集合名。

```ini
[cidr-sets]
private-ips=10.0.0.0/8,192.168.0.0/16
```

## `[routing]`

规则使用固定优先级，并非全部自上而下执行。域名集合选择最具体的后缀；只有关键词按保存顺序匹配。IP 范围使用最长前缀匹配。参阅[路由规则引擎](../core-components/routing-engine.md)，了解 DNS 优先级、数据包路由和示例。

匹配规则格式：`TYPE,VALUE,ACTION,TARGET`。保留/默认规则（如 `DNS-FALLBACK`、`VPN-DNS-SERVER-DOMAINS`、`DEFAULT`）格式：`TYPE,ACTION,TARGET`。

| 类型 | 值 | 动作 | 目标 | 说明 |
|---|---|---|---|---|
| `DOMAIN-SET` | 域名集合名 | `L3VPN`、`L4PROXY`、`DIRECT`、`DROP`、`REJECT` | l3vpn/l4proxy 名称 | 按域名集合分流。 |
| `DOMAIN-KEYWORD` | 关键词 | `L3VPN`, `L4PROXY`, `DIRECT`, `DROP`, `REJECT` | L3VPN/L4PROXY | 匹配规范化 DNS 名称中的字面子串；按保存顺序选择第一个命中项。域名集合始终优先。转发动作的命中会绕过广告过滤。 |
| `CIDR-SET` | CIDR 集合名 | `L3VPN`、`L4PROXY`、`DIRECT`、`DROP`、`REJECT` | l3vpn/l4proxy 名称 | 按 CIDR 集合分流。 |
| `CIDR` | 单个 CIDR | `L3VPN`、`L4PROXY`、`DIRECT`、`DROP`、`REJECT` | l3vpn/l4proxy 名称 | 按单个 IP 范围分流。 |
| `DNS-FALLBACK` | 不使用 | `DIRECT`、`L3VPN`、`L4PROXY` 等 | l3vpn/l4proxy 名称 | 未匹配集合的域名的默认 DNS 行为。 |
| `VPN-DNS-SERVER-DOMAINS` | 不使用 | `L3VPN`、`L4PROXY` | l3vpn/l4proxy 名称 | 1.9.0 新增，经由所选 VPN/代理引导解析加密 VPN DNS 服务器域名。当 `vpn-dns` 使用带域名的 DoT/DoH 上游时必需。 |
| `DEFAULT` | 不使用 | `DIRECT`、`L3VPN`、`L4PROXY` 等 | l3vpn/l4proxy 名称 | 最后的兜底路由。 |

```ini
[routing]
DOMAIN-SET,social-media,L4PROXY,my-shadowsocks
CIDR-SET,private-ips,DIRECT
VPN-DNS-SERVER-DOMAINS,L4PROXY,my-shadowsocks
DEFAULT,L3VPN,my-wireguard
```
