在快速入手中,我们介绍了 Clash 中基于规则的匹配的基本知识。在本章中,我们将介绍最新版本的 Clash 中所有可用的规则类型。
# 类型,参数,策略(,no-resolve)
TYPE,ARGUMENT,POLICY(,no-resolve)no-resolve 选项是可选的,它用于跳过规则的 DNS 解析。当您想要使用 GEOIP、IP-CIDR、IP-CIDR6、SCRIPT 规则,但又不想立即将域名解析为 IP 地址时,这个选项就很有用了。
策略
目前有四种策略类型,其中:
- 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 数据库来实现这一功能。
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 的官方网站 的介绍:
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 版本 中可用。
RULE-SET 规则用于根据 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 版本 中可用。
SCRIPT 规则用于根据脚本的结果路由数据包。当 Clash 使用此规则时,它会执行指定的脚本,然后将数据包路由到脚本的输出。
WARNING
使用 SCRIPT 时,Clash 将解析域名以获取 IP 地址。如果要跳过 DNS 解析,请使用 no-resolve 选项。
SCRIPT,script-path,DIRECT 将数据包路由到脚本 script-path 的输出。
MATCH 全匹配
MATCH 规则用于路由剩余的数据包。该规则是必需的,通常用作最后一条规则。
MATCH,policy 将剩余的数据包路由到 policy.
