策略分流是什么? - mj5219054/clash_for_windows_pkg GitHub Wiki

  • 全局直连(DIRECT):无论访问什么网址及应用的请求将被直接发往目标服务器,等于没翻墙。

  • 全局代理(GLOBAL):就是无论访问国内还是国外,都会转发给代理服务器,意思就是 打开百度,聊微信都是翻墙出去转一圈再回来。

  • 规则模式(RULES):就是根据配置的规则决定转发策略,不同的流量走不同的节点或者直连等 软件都至少包含以下三种内置策略:DIRECT、PROXY、REJECT 。 图片

  • DIRECT : 将该请求直接发往目标服务器,就是走直连

  • PROXY : 就是走代理节点

  • REJECT : 拒绝该请求,当连接类型为 HTTP 时,会返回一个错误页面,主要用于去广告。 小火箭内置的策略更多,除了上面说的4种,还有reject-img、reject-200、等等。感兴趣的朋友可以自己去研究下。

2. 代理策略

代理策略由用户自己定义,每个策略描述了一个代理服务,当使用该策略时即为通过该代理服务转发请求。说白了就是一个节点!

比如解锁网易云灰色音乐的策略里面只有一个解锁用的代理节点,这就是一个简单的代理策略。

3. 基础策略组

策略组就是多种策略嵌套在一起,根据一定的规则从子策略中选择一个最终策略 图片

  • select 策略组:通过 UI 菜单手动选择一个策略。
  • url-test 策略组:自动测速,并发测试所有子策略,选择延迟最低的策略。其中有以下几个参数需要注意:url:用于测试的 URL,测试地址可自定义,建议选择在全球都有节点的 URL,我们常用屏幕上的这个网址。
  • timeout:测试的最长等待时间,超过该时间的策略将标记为失败不再继续等待。
  • interval:每次测试的间隔时间。
  • tolerance:容忍度,如果某几个策略测试结果相差不大,那么会导致在这几个策略中频繁切换,如果策略的代理服务器的出口 IP 不同,可能会触发目标网站的风险控制。所以加入了容忍度设计,仅当新一次的测试结果中,最佳策略比原选中策略的延迟差大于容忍度时,才会切换至新的策略。
  • fallback 策略组:选择可用的策略中,最靠前的策略。基本与 url-test 一致,区别在于 fallback 只关心策略是否可用,并顺序选择最靠前的可用策略,并不关心测速结果的具体值。可以通过调小 timeout 参数将缓慢线路也标记为不可用,该类型没有 tolerance 参数。
  • ssid 策略组:根据当前的 Wi-Fi SSID 选择一个策略。主要是针对有软路由环境得WiFi,当连接到指定WiFi SSID得时候切换到直连模式,当使用流量和其他WiFi时,走规则分流模式。
  • load-balance 策略组:负载均衡组,随机从子策略中选取一个策略使用。当配置了 url 参数时,会按照 fallback 组的行为进行可用性检查,然后仅从可用的子策略中随机选取。 地区策略:顾名思义,就是把同一个地区的节点放在一起,比如香港、台湾,前面举例时说过,假如你只想看香港区的奈菲,那就把奈菲的分流指向香港策略组即可。 特殊策略:比如IPLC线路的节点单独放在一起,解锁Steam等国外平台游戏的节点放在一组。 yy

. 应用策略组

这里应该就不需要过多解释了,Netflix分流就是访问所有Netflix相关的网站或应用指定走什么策略,国外流媒体就是所有国外的看视频、看电影的流媒体网站或者应用统一走指定的策略。

规则

分流规则是用来选择每个连接的出口策略。规则的匹配方式为自上而下,逐一测试。最末尾规则一定是一个 FINAL 规则,Clash中不叫final叫match,当所有规则都不匹配时使用。

规则由四个部分组成:类型、条件、策略和参数。当条件满足时,该规则匹配,使用该规则指定的策略。 下载

  1. 规则类型
  • 1.1 域名规则
  • DOMAIN:严格匹配某域名。
  • DOMAIN-SUFFIX:匹配某域名及其子域名,如 DOMAIN-SUFFIX,baidu.com 可以匹配 baidu.com 和 pan.baidu.com,但是不会匹配baidu123.com。
  • DOMAIN-KEYWORD:简单的字符串搜索,只要域名包含该字符串就会匹配。
  • DOMAIN-SUFFIX:域名后缀匹配
  • DOMAIN:域名匹配
  • DOMAIN-KEYWORD:域名关键字匹配
  • IP-CIDR:IP段匹配
  • SRC-IP-CIDR:源IP段匹配
  • GEOIP:GEOIP数据库(国家代码)匹配
  • DST-PORT:目标端口匹配
  • SRC-PORT:源端口匹配
  • PROCESS-NAME:源进程名匹配
  • RULE-SET:Rule Provider规则匹配
  • MATCH:全匹配

注意:需要把 DOMAIN 换成 HOST

基本概念解释

策略组(proxy group):根据需求定制实现目标的方案集合。策略组可以不提供服务(如主策略组),也可以为其他策略组服务(从策略组),也可以使代理为它服务。从策略组为主策略组提供服务。一般主策略组不会直接调用代理服务。 代理(proxies):即创建具体的ss,vmess,(ssr节点:ClashR支持)节点。这些代理服务于策略组,由策略组支配。 两者关系:主策略组是总司令;从策略组是司令,代理是士兵。 注意:主策略组必须有下级关系,子策略组必须有上下级关系,代理必须有上级关系

图片

.2 IP地址规则 当连接的目标主机的 IP 地址符合时,匹配该规则。包含 IP-CIDR(IPv4地址段),IP-CIDR6(IPv6地址段),GEOIP (GEOIP数据库(国家代码))三种类型。

当目标主机名是一个域名或主机名时,IP 类型规则会触发本地 DNS 解析。根据解析得到的 IP 地址进行判断。当解析失败时:

如果最终的 FINAL 规则带有 dns-failed 标记,那么将直接匹配 FINAL 规则。 如果 FINAL 规则不带有 dns-failed 标记,该请求将直接失败。 IP 类型规则有一个专有的参数 no-resolve,如果一个 IP 规则带有该参数,那么

  • 如果目标主机名是一个域名,那么将跳过该规则,不触发 DNS 解析。
  • 如果目标主机名是 IP 地址,按规则进行判断。
  • 如果目标主机名是一个域名,且先前出现的 IP 规则已经触发了 DNS 解析获得了 IP 地址,那么使用该 IP 地址进行判断。

1.3 HTTP相关规则 仅对 HTTP 请求有效的规则,包含 URL-REGEX 和 USER-AGENT。比较特殊的是,由于只有进行 MITM 解密后才可获取到 URL,所以 URL-REGEX 对未解密的 HTTPS 连接无效。但是 USER-AGENT 规则却对未解密的 HTTPS 连接也有效,因为程序在使用 HTTP 代理时,会在发送 CONNECT 请求时带上自己 User Agent 的明文。

这个一般用于去广告的规则里,大家不用过多在意,我们直接调用网上大佬写好的规则即可。

1.4 其他规则 下面这些规则,我们常用的分流规则中其实很少使用,大家了解下即可。

  • SRC-IP-CIDR:可匹配连接来源 IP 地址,接管其他设备连接时可使用。
  • DST-PORT:目标端口匹配
  • SRC-PORT:源端口匹配
  • PROTOCOL:可根据连接的协议进行匹配,取值范围是 HTTP,HTTPS,TCP,UDP。
  • FINAL/MATCH:最终匹配,重要!必须有!
  1. 规则集 RULE-SET 规则集可以将多个子规则放在一个单独的文件中,便于分享和复用。但是规则集中的规则不可以指定策略,整个规则集指向一个同一个策略。

大家之前配置里引用的那些分流规则,都是规则集。

添加策略组

当你规则和策略组都设计好了以后,就可以开始正式设置了,这里我建议先添加策略组。 自定义策略组主要有两种,一种是通过软件的UI界面直接添加,另一种就是在配置文件中修改。

  • 通过UI添加,是在首页上面的图标中,找到策略状态一项,点击内容区左上角的添加按钮,然后设置。

  • 自带的3种策略类型,available其实是对应前面讲过的fallback故障切换。目前商店版是不支持自动选择延迟最低的功能,TF权限,所以不知道TF版当前是否支持。

添加规则

当你设置好了策略组以后,就可以开始设置你的分流规则,同样可以通过UI和后台配置2种方式添加修改。

这里需要特别注意的是,如果你是通过UI添加,那就简单了,把对应的托管链接粘贴进去,策略选项选中你上面添加好的某一个策略组即可。而如果你是通过后台配置修改,切记格式写法,以及每条规则集指定的策略组名要和你前面添加的策略组一模一样,空格,emoji图标都要一模一样才可以。

策略组呢只用的内置策略,比如proxy,direct,或者用的其他人的策略组配置,问我为什么报错,为什么分流不生效等等。 图标+空格+节点选择或者全球直连这样的写法,而你没有这个名字的策略组,那能不出错么?

订阅链接,或者一个单独的节点,选择你需要转换的软件类型,选择这个【全分组_重度用户使用】,然后点击生成订阅链接,点击复制,直接在浏览器中粘贴打开。把里面的分流规则和策略组全复制出来,然后删除你不需要的,然后再添加一些自己需要的其他规则集,修改好对应的策略组名即可。 mixed-port: 7890

配置文件需要放置在 $HOME/.config/clash/*.yaml

  • allow-lan: false
  • mode: Rule
  • log-level: silent
  • external-controller: 127.0.0.1:60000

节点配置文件统一存放在 ./profiles/proxies/ 目录中

从文件导入的配置文

gaitubao_1_jpg 件 bar:

proxy-groups:

  • name: PROXY
  • type: select
  • use:
  • - foo
    
  • - bar
    
  • proxies:
  • - DIRECT
    

clash-rules项目提供的规则集

规则文件统一存放在 ./profiles/rules/ 目录中

rule-providers: reject:

规则

rules:

    • PROCESS-NAME,v2ray,DIRECT
    • PROCESS-NAME,xray,DIRECT
    • PROCESS-NAME,naive,DIRECT
    • PROCESS-NAME,trojan,DIRECT
    • PROCESS-NAME,trojan-go,DIRECT
    • PROCESS-NAME,ss-local,DIRECT CFW作者认为在windows中tun模式性能更好,并且可以使并且可以使用mixin功能随时开关。

来说分为

  • 1)新建Rule Provider(规则组

  • 2)使用Parser功能在你原有的订阅中额外添加一个代理组,代理组使用步骤1的规则组文件指定的规则,或是直接写着规则

  • 3)安装TUN模式,并使用Mixin功能启用(顺便实现一键开关TUN代理)

  • 4)设置你原有的代理和代理组使用的代理(原有代理用来打开DMM,组用来代理本体)

  • 5)启用TUN模式并打开游戏(你应当能在Connections里面看到走代理组的记录 负责验证的只有cygames.jp的服务器,akamized主要还是负责缓存各种资源文件。 TUN模式 启动 TUN 模式需要进行如下操作:

    • 点击General中Service Mode右边Manage,在打开窗口中安装服务模式,安装完成应用会自动重启,Service Mode 右边地球图标变为绿色即安装成功(无法安装参考:这里)
    • 点击General中TUN Mode右边开关启动 TUN 模式 部分内容已于 v0.19.0 后过期。(RULE-SET)只适用于 Clash Premium 版本。Clash Premium 相对于普通版,增加了 TUN 增强模式,能接管设备所有 TCP 和 UDP 流量