mirror of https://github.com/Dreamacro/clash.git
169 lines
5.9 KiB
Markdown
169 lines
5.9 KiB
Markdown
---
|
|
sidebarTitle: Rules 规则
|
|
sidebarOrder: 5
|
|
---
|
|
|
|
# Rules 规则
|
|
|
|
在[快速入手](/zh_CN/configuration/getting-started)中, 我们介绍了Clash中基于规则的匹配的基本知识. 在本章中, 我们将介绍最新版本的 Clash 中所有可用的规则类型.
|
|
|
|
```txt
|
|
# 类型,参数,策略(,no-resolve)
|
|
TYPE,ARGUMENT,POLICY(,no-resolve)
|
|
```
|
|
|
|
`no-resolve` 选项是可选的, 它用于跳过规则的 DNS 解析. 当您想要使用 `GEOIP`、`IP-CIDR`、`IP-CIDR6`、`SCRIPT` 规则, 但又不想立即将域名解析为 IP 地址时, 这个选项就很有用了.
|
|
|
|
[[toc]]
|
|
|
|
## 策略
|
|
|
|
目前有四种策略类型, 其中:
|
|
|
|
- DIRECT: 通过 `interface-name` 直接连接到目标 (不查找系统路由表)
|
|
- REJECT: 丢弃数据包
|
|
- Proxy: 将数据包路由到指定的代理服务器
|
|
- Proxy Group: 将数据包路由到指定的策略组
|
|
|
|
## 规则类型
|
|
|
|
以下部分介绍了每种规则类型及其使用方法:
|
|
|
|
### DOMAIN 域名
|
|
|
|
`DOMAIN,www.google.com,policy` 将 `www.google.com` 路由到 `policy`.
|
|
|
|
### DOMAIN-SUFFIX 域名后缀
|
|
|
|
`DOMAIN-SUFFIX,youtube.com,policy` 将任何以 `youtube.com` 结尾的域名路由到 `policy`.
|
|
|
|
在这种情况下, `www.youtube.com` 和 `foo.bar.youtube.com` 都将路由到 `policy`.
|
|
|
|
### DOMAIN-KEYWORD 域名关键字
|
|
|
|
`DOMAIN-KEYWORD,google,policy` 将任何包含 `google` 关键字的域名路由到 `policy`.
|
|
|
|
在这种情况下, `www.google.com` 或 `googleapis.com` 都将路由到 `policy`.
|
|
|
|
### GEOIP IP地理位置 (国家代码)
|
|
|
|
GEOIP 规则用于根据数据包的目标 IP 地址的**国家代码**路由数据包. Clash 使用 [MaxMind GeoLite2](https://dev.maxmind.com/geoip/geoip2/geolite2/) 数据库来实现这一功能.
|
|
|
|
::: warning
|
|
使用这种规则时, Clash 将域名解析为 IP 地址, 然后查找 IP 地址的国家代码.
|
|
如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
|
|
:::
|
|
|
|
`GEOIP,CN,policy` 将任何目标 IP 地址为中国的数据包路由到 `policy`.
|
|
|
|
### IP-CIDR IPv4地址段
|
|
|
|
IP-CIDR 规则用于根据数据包的**目标 IPv4 地址**路由数据包.
|
|
|
|
::: warning
|
|
使用这种规则时, Clash 将域名解析为 IPv4 地址.
|
|
如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
|
|
:::
|
|
|
|
`IP-CIDR,127.0.0.0/8,DIRECT` 将任何目标 IP 地址为 `127.0.0.0/8` 的数据包路由到 `DIRECT`.
|
|
|
|
### IP-CIDR6 IPv6地址段
|
|
|
|
IP-CIDR6 规则用于根据数据包的**目标 IPv6 地址**路由数据包.
|
|
|
|
::: warning
|
|
使用这种规则时, Clash 将域名解析为 IPv6 地址.
|
|
如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
|
|
:::
|
|
|
|
`IP-CIDR6,2620:0:2d0:200::7/32,policy` 将任何目标 IP 地址为 `2620:0:2d0:200::7/32` 的数据包路由到 `policy`.
|
|
|
|
### SRC-IP-CIDR 源IP段地址
|
|
|
|
SRC-IP-CIDR 规则用于根据数据包的**源 IPv4 地址**路由数据包.
|
|
|
|
`SRC-IP-CIDR,192.168.1.201/32,DIRECT` 将任何源 IP 地址为 `192.168.1.201/32` 的数据包路由到 `DIRECT`.
|
|
|
|
### SRC-PORT 源端口
|
|
|
|
SRC-PORT 规则用于根据数据包的**源端口**路由数据包.
|
|
|
|
`SRC-PORT,80,policy` 将任何源端口为 `80` 的数据包路由到 `policy`.
|
|
|
|
### DST-PORT 目标端口
|
|
|
|
DST-PORT 规则用于根据数据包的**目标端口**路由数据包.
|
|
|
|
`DST-PORT,80,policy` 将任何目标端口为 `80` 的数据包路由到 `policy`.
|
|
|
|
### PROCESS-NAME 源进程名
|
|
|
|
PROCESS-NAME 规则用于根据发送数据包的进程名称路由数据包.
|
|
|
|
::: warning
|
|
目前, 仅支持 macOS、Linux、FreeBSD 和 Windows.
|
|
:::
|
|
|
|
`PROCESS-NAME,nc,DIRECT` 将任何来自进程 `nc` 的数据包路由到 `DIRECT`.
|
|
|
|
### PROCESS-PATH 源进程路径
|
|
|
|
PROCESS-PATH 规则用于根据发送数据包的进程路径路由数据包.
|
|
|
|
::: warning
|
|
目前, 仅支持 macOS、Linux、FreeBSD 和 Windows.
|
|
:::
|
|
|
|
`PROCESS-PATH,/usr/local/bin/nc,DIRECT` 将任何来自路径为 `/usr/local/bin/nc` 的进程的数据包路由到 `DIRECT`.
|
|
|
|
### IPSET IP集
|
|
|
|
IPSET 规则用于根据 IP 集匹配并路由数据包. 根据 [IPSET 的官方网站](https://ipset.netfilter.org/) 的介绍:
|
|
|
|
> IP 集是 Linux 内核中的一个框架, 可以通过 ipset 程序进行管理. 根据类型, IP 集可以存储 IP 地址、网络、 (TCP/UDP) 端口号、MAC 地址、接口名称或它们以某种方式的组合, 以确保在集合中匹配条目时具有闪电般的速度.
|
|
|
|
因此, 此功能仅在 Linux 上工作, 并且需要安装 `ipset`.
|
|
|
|
::: warning
|
|
使用此规则时, Clash 将解析域名以获取 IP 地址, 然后查找 IP 地址是否在 IP 集中.
|
|
如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
|
|
:::
|
|
|
|
`IPSET,chnroute,policy` 将任何目标 IP 地址在 IP 集 `chnroute` 中的数据包路由到 `policy`.
|
|
|
|
### RULE-SET 规则集
|
|
|
|
::: info
|
|
此功能仅在 [Premium 版本](/zh_CN/premium/introduction) 中可用.
|
|
:::
|
|
|
|
RULE-SET 规则用于根据 [Rule Providers 规则集](/zh_CN/premium/rule-providers) 的结果路由数据包. 当 Clash 使用此规则时, 它会从指定的 Rule Providers 规则集中加载规则, 然后将数据包与规则进行匹配. 如果数据包与任何规则匹配, 则将数据包路由到指定的策略, 否则跳过此规则.
|
|
|
|
::: warning
|
|
使用 RULE-SET 时, 当规则集的类型为 IPCIDR , Clash 将解析域名以获取 IP 地址.
|
|
如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
|
|
:::
|
|
|
|
`RULE-SET,my-rule-provider,DIRECT` 从 `my-rule-provider` 加载所有规则
|
|
|
|
### SCRIPT 脚本
|
|
|
|
::: info
|
|
此功能仅在 [Premium 版本](/zh_CN/premium/introduction) 中可用.
|
|
:::
|
|
|
|
SCRIPT 规则用于根据脚本的结果路由数据包. 当 Clash 使用此规则时, 它会执行指定的脚本, 然后将数据包路由到脚本的输出.
|
|
|
|
::: warning
|
|
使用 SCRIPT 时, Clash 将解析域名以获取 IP 地址.
|
|
如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
|
|
:::
|
|
|
|
`SCRIPT,script-path,DIRECT` 将数据包路由到脚本 `script-path` 的输出.
|
|
|
|
### MATCH 全匹配
|
|
|
|
MATCH 规则用于路由剩余的数据包. 该规则是**必需**的, 通常用作最后一条规则.
|
|
|
|
`MATCH,policy` 将剩余的数据包路由到 `policy`.
|