配置 · Clash文档

Rules 规则

按匹配顺序解释 DIRECT、REJECT、节点与策略组,并整理 DOMAIN、GEOIP、IP-CIDR、RULE-SET、SCRIPT、MATCH 等规则语法和 no-resolve 行为。

  • DOMAIN
  • DOMAIN-SUFFIX
  • IP-CIDR
  • RULE-SET
  • MATCH
配置

快速入手中,我们介绍了 Clash 中基于规则的匹配的基本知识。在本章中,我们将介绍最新版本的 Clash 中所有可用的规则类型。

txt
# 类型,参数,策略(,no-resolve)
TYPE,ARGUMENT,POLICY(,no-resolve)

no-resolve 选项是可选的,它用于跳过规则的 DNS 解析。当您想要使用 GEOIPIP-CIDRIP-CIDR6SCRIPT 规则,但又不想立即将域名解析为 IP 地址时,这个选项就很有用了。

策略

目前有四种策略类型,其中:

  • DIRECT:通过 interface-name 直接连接到目标(不查找系统路由表)
  • REJECT:丢弃数据包
  • Proxy:将数据包路由到指定的代理服务器
  • Proxy Group:将数据包路由到指定的策略组

规则类型

以下部分介绍了每种规则类型及其使用方法:

DOMAIN 域名

DOMAIN,www.google.com,policywww.google.com 路由到 policy.

DOMAIN-SUFFIX 域名后缀

DOMAIN-SUFFIX,youtube.com,policy 将任何以 youtube.com 结尾的域名路由到 policy.

在这种情况下,www.youtube.comfoo.bar.youtube.com 都将路由到 policy.

DOMAIN-KEYWORD 域名关键字

DOMAIN-KEYWORD,google,policy 将任何包含 google 关键字的域名路由到 policy.

在这种情况下,www.google.comgoogleapis.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,DIRECTmy-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.