clash/docs/zh_CN/configuration/rules.md

5.9 KiB

sidebarTitle sidebarOrder
Rules 规则 5

Rules 规则

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

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

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

toc

策略

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

  • 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.