github.com/igoogolx/clash@v1.19.8/docs/zh_CN/configuration/rules.md (about)

     1  ---
     2  sidebarTitle: Rules 规则
     3  sidebarOrder: 5
     4  ---
     5  
     6  # Rules 规则
     7  
     8  在[快速入手](/zh_CN/configuration/getting-started)中, 我们介绍了Clash中基于规则的匹配的基本知识. 在本章中, 我们将介绍最新版本的 Clash 中所有可用的规则类型.
     9  
    10  ```txt
    11  # 类型,参数,策略(,no-resolve)
    12  TYPE,ARGUMENT,POLICY(,no-resolve)
    13  ```
    14  
    15  `no-resolve` 选项是可选的, 它用于跳过规则的 DNS 解析. 当您想要使用 `GEOIP`、`IP-CIDR`、`IP-CIDR6`、`SCRIPT` 规则, 但又不想立即将域名解析为 IP 地址时, 这个选项就很有用了.
    16  
    17  [[toc]]
    18  
    19  ## 策略
    20  
    21  目前有四种策略类型, 其中:
    22  
    23  - DIRECT: 通过 `interface-name` 直接连接到目标 (不查找系统路由表)
    24  - REJECT: 丢弃数据包
    25  - Proxy: 将数据包路由到指定的代理服务器
    26  - Proxy Group: 将数据包路由到指定的策略组
    27  
    28  ## 规则类型
    29  
    30  以下部分介绍了每种规则类型及其使用方法:
    31  
    32  ### DOMAIN 域名
    33  
    34  `DOMAIN,www.google.com,policy` 将 `www.google.com` 路由到 `policy`.
    35  
    36  ### DOMAIN-SUFFIX 域名后缀
    37  
    38  `DOMAIN-SUFFIX,youtube.com,policy` 将任何以 `youtube.com` 结尾的域名路由到 `policy`.
    39  
    40  在这种情况下, `www.youtube.com` 和 `foo.bar.youtube.com` 都将路由到 `policy`.
    41  
    42  ### DOMAIN-KEYWORD 域名关键字
    43  
    44  `DOMAIN-KEYWORD,google,policy` 将任何包含 `google` 关键字的域名路由到 `policy`.
    45  
    46  在这种情况下, `www.google.com` 或 `googleapis.com` 都将路由到 `policy`.
    47  
    48  ### GEOIP IP地理位置 (国家代码)
    49  
    50  GEOIP 规则用于根据数据包的目标 IP 地址的**国家代码**路由数据包. Clash 使用 [MaxMind GeoLite2](https://dev.maxmind.com/geoip/geoip2/geolite2/) 数据库来实现这一功能.
    51  
    52  ::: warning
    53  使用这种规则时, Clash 将域名解析为 IP 地址, 然后查找 IP 地址的国家代码.
    54  如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
    55  :::
    56  
    57  `GEOIP,CN,policy` 将任何目标 IP 地址为中国的数据包路由到 `policy`.
    58  
    59  ### IP-CIDR IPv4地址段
    60  
    61  IP-CIDR 规则用于根据数据包的**目标 IPv4 地址**路由数据包.
    62  
    63  ::: warning
    64  使用这种规则时, Clash 将域名解析为 IPv4 地址.
    65  如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
    66  :::
    67  
    68  `IP-CIDR,127.0.0.0/8,DIRECT` 将任何目标 IP 地址为 `127.0.0.0/8` 的数据包路由到 `DIRECT`.
    69  
    70  ### IP-CIDR6 IPv6地址段
    71  
    72  IP-CIDR6 规则用于根据数据包的**目标 IPv6 地址**路由数据包.
    73  
    74  ::: warning
    75  使用这种规则时, Clash 将域名解析为 IPv6 地址.
    76  如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
    77  :::
    78  
    79  `IP-CIDR6,2620:0:2d0:200::7/32,policy` 将任何目标 IP 地址为 `2620:0:2d0:200::7/32` 的数据包路由到 `policy`.
    80  
    81  ### SRC-IP-CIDR 源IP段地址
    82  
    83  SRC-IP-CIDR 规则用于根据数据包的**源 IPv4 地址**路由数据包.
    84  
    85  `SRC-IP-CIDR,192.168.1.201/32,DIRECT` 将任何源 IP 地址为 `192.168.1.201/32` 的数据包路由到 `DIRECT`.
    86  
    87  ### SRC-PORT 源端口
    88  
    89  SRC-PORT 规则用于根据数据包的**源端口**路由数据包.
    90  
    91  `SRC-PORT,80,policy` 将任何源端口为 `80` 的数据包路由到 `policy`.
    92  
    93  ### DST-PORT 目标端口
    94  
    95  DST-PORT 规则用于根据数据包的**目标端口**路由数据包.
    96  
    97  `DST-PORT,80,policy` 将任何目标端口为 `80` 的数据包路由到 `policy`.
    98  
    99  ### PROCESS-NAME 源进程名
   100  
   101  PROCESS-NAME 规则用于根据发送数据包的进程名称路由数据包.
   102  
   103  ::: warning
   104  目前, 仅支持 macOS、Linux、FreeBSD 和 Windows.
   105  :::
   106  
   107  `PROCESS-NAME,nc,DIRECT` 将任何来自进程 `nc` 的数据包路由到 `DIRECT`.
   108  
   109  ### PROCESS-PATH 源进程路径
   110  
   111  PROCESS-PATH 规则用于根据发送数据包的进程路径路由数据包.
   112  
   113  ::: warning
   114  目前, 仅支持 macOS、Linux、FreeBSD 和 Windows.
   115  :::
   116  
   117  `PROCESS-PATH,/usr/local/bin/nc,DIRECT` 将任何来自路径为 `/usr/local/bin/nc` 的进程的数据包路由到 `DIRECT`.
   118  
   119  ### IPSET IP集
   120  
   121  IPSET 规则用于根据 IP 集匹配并路由数据包. 根据 [IPSET 的官方网站](https://ipset.netfilter.org/) 的介绍:
   122  
   123  > IP 集是 Linux 内核中的一个框架, 可以通过 ipset 程序进行管理. 根据类型, IP 集可以存储 IP 地址、网络、 (TCP/UDP) 端口号、MAC 地址、接口名称或它们以某种方式的组合, 以确保在集合中匹配条目时具有闪电般的速度.
   124  
   125  因此, 此功能仅在 Linux 上工作, 并且需要安装 `ipset`.
   126  
   127  ::: warning
   128  使用此规则时, Clash 将解析域名以获取 IP 地址, 然后查找 IP 地址是否在 IP 集中.
   129  如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
   130  :::
   131  
   132  `IPSET,chnroute,policy` 将任何目标 IP 地址在 IP 集 `chnroute` 中的数据包路由到 `policy`.
   133  
   134  ### RULE-SET 规则集
   135  
   136  ::: info
   137  此功能仅在 [Premium 版本](/zh_CN/premium/introduction) 中可用.
   138  :::
   139  
   140  RULE-SET 规则用于根据 [Rule Providers 规则集](/zh_CN/premium/rule-providers) 的结果路由数据包. 当 Clash 使用此规则时, 它会从指定的 Rule Providers 规则集中加载规则, 然后将数据包与规则进行匹配. 如果数据包与任何规则匹配, 则将数据包路由到指定的策略, 否则跳过此规则.
   141  
   142  ::: warning
   143  使用 RULE-SET 时, 当规则集的类型为 IPCIDR , Clash 将解析域名以获取 IP 地址.
   144  如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
   145  :::
   146  
   147  `RULE-SET,my-rule-provider,DIRECT` 从 `my-rule-provider` 加载所有规则
   148  
   149  ### SCRIPT 脚本
   150  
   151  ::: info
   152  此功能仅在 [Premium 版本](/zh_CN/premium/introduction) 中可用.
   153  :::
   154  
   155  SCRIPT 规则用于根据脚本的结果路由数据包. 当 Clash 使用此规则时, 它会执行指定的脚本, 然后将数据包路由到脚本的输出.
   156  
   157  ::: warning
   158  使用 SCRIPT 时, Clash 将解析域名以获取 IP 地址.
   159  如果要跳过 DNS 解析, 请使用 `no-resolve` 选项.
   160  :::
   161  
   162  `SCRIPT,script-path,DIRECT` 将数据包路由到脚本 `script-path` 的输出.
   163  
   164  ### MATCH 全匹配
   165  
   166  MATCH 规则用于路由剩余的数据包. 该规则是**必需**的, 通常用作最后一条规则.
   167  
   168  `MATCH,policy` 将剩余的数据包路由到 `policy`.