# 集合與路由規則

## `[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
```
