分流规则简析
2020-6-23
| 2022-11-17
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
Nov 17, 2022 01:31 AM

哪些客户端支持分流规则

从 Surge 开创了分流规则配置化之后,新一代的代理工具都纷纷实现了以配置文件为核心的分流代理。其中代表作有:
notion image
  • Surge for iOS 和 Surge for Mac,拥有最强大的规则表达能力,iOS 端最稳定的 VPN 连接体验,当然订阅时长解锁制,也是所有软件中收费最贵的。
  • Quantumult X 新兴崛起的 iOS 代理软件,有近乎 Surge 的规则表达能力,和不输 Surge 的稳定性。颜值在线,价格也就是 Surge 的十分之一。
  • Clash 家族,沿袭了 Surge 的分流配置思想,提出了 Proxy 和 Proxy Group 概念,形成连环嵌套的代理节点选择方式。因为 Clash 开源,所以其客户端众多,而且都免费,同时支持 Clash for Windows、Clash for Android 和 ClashX(macOS)。
这三个客户端虽然分流配置格式不同,概念也不同,但是大部分规则是可以互相转化的,我的 k-surgio 项目就以 ConnerHua 维护的神机规则为蓝本,进行了扩充和优化,实现一套配置,多个客户端同步使用的效果。

分流规则是怎么工作的

首先看看,当你载入一个配置之后,节点形成的策略组(Clash 中又叫 Proxy Group):
notion image
策略组是一组下游节点的集合,策略组命中哪一个下游一般有几种情况,也就是策略:
  • 手工选择
  • 最小延迟
  • 负载均衡
分流,其本质就是根据一定的规则,把流量导向不同的策略组、代理节点过程,一般情况下,流量的目的地可以分为:
  • 「直连」(也就是不代理)
  • 「拒绝」(一般用作广告拦截)
  • 「代理」
传统代理模式中,「代理」节点是固定的,你选择哪个就是哪个,规则也是简单的,给出一个黑名单,上面的域名全部走「代理」节点,其他走「直连」节点。但是如果我们使用了策略组,就可以把规则定的更加详细,通过
  • 「程序的名字」
  • 「访问的域名、IP」
  • 「源或目的地 IP、端口」
  • 「域名的前缀、后缀、关键字」
等等规则,将流量引向不同的「代理」节点,或者是导向不同的「策略组」。
下图是 k-surgio 项目的分流规则示意图:
notion image
举几个例子来看一下,分流怎么工作的:
  1. 我访问 YouTube 的时候,被「国外流媒体」这个过滤器识别到,将流量引到了「🗽 ForeignMedia」这个策略组,这个策略组现在选择的节点是「🇺🇸 BWG-US」。
  1. 我访问 Google 搜索,被「国外主要网站」这个过滤器识别到,将流量引到了「🚀 Proxy」策略组,这个策略组现在选择的节点是「🇭🇰 GCP-HK」。
  1. 打开上面搜索结果的时候,有一个弹窗页面被「流氓页面」这个过滤器识别到,流量被引到了「🔪 Hijacking」策略组,这个策略组现在选择的节点是「Reject」,所以流氓页面的流量直接被阻断了。
关于最后一个「🎯Others」策略组,如果节点质量良好,直接选择成「🚀Proxy」来保证绝大部分网站的可访问性,也就是俗称的白名单模式:只有中国站点直连,其他统统走代理。而如果节点质量一般,就需要选择成「Direct」来保证网络的质量和速度了,这也是俗称的黑名单模式:只有需要代理的资源走代理,其他统统都直连。就我的经验来看,白名单模式体验更佳,原因是很多网站并没有被墙,但是访问速度却令人感到异常的难受(比如 GitHub),如果使用白名单模式,则可以大大提高这类网站的浏览体验。

为什么要使用分流规则

使用分流规则好处就是既可以利用固定的规则,保证主要的国内网站和 IP 使用直连策略,提高访问这些网站或服务的体验,也可以灵活的调整其他几种规则匹配成功时使用的策略。而策略可以是多样的。
在这个几个客户端的配置中,都支持很多种策略选择方式:
  • 手工选择,选择该策略组使用哪个节点,这也是使用得最多的方式
  • 测速选择,从策略组中选出连接到某个指定网站最快的节点
  • 可用性选择,从策略组中由上至下,选出第一个可以使用的节点(可以使用的定义是能够通过节点访问到某个指定网站)
  • 负载均衡,随机使用策略组中的某个节点,已达到代理流量在各个节点之间均衡的作用
使用分流规则方案,对于节点较多的情况下,可以有选择性的分配不同节点的功能,比如:
  • 流量少速度快的节点用来访问文本资源,搜索结果等,降低时延获得近乎无墙的操作体验
  • 大流量的低价节点用来访问流媒体资源或者下载资源,降低成本
  • 专属节点用来收看有区域限制的 Netflix,访问有 IP 限制的内网资源、ipv6 站点等
对于没有太多节点的情况下,也可以灵活调整自己那些规则需要使用代理,哪些不用。那些需要直接拦截,哪些放行。

关于 QX 的几个重要的文档

  • Quantumult X 不完全使用教程 https://www.notion.so/Quantumult-X-1d32ddc6e61c4892ad2ec5ea47f00917
  • 建议把 GEOIP,CN,DIRECT 写到最后一个 remote policy 里面
  • 建议在「其他设置」里「GeoLite2」的「来源」填写使用「 https://cdn.jsdelivr.net/gh/Loyalsoldier/geoip@release/Country.mmdb」并开启「自动更新」。
 
技术分享
  • Network
  • What-is
  • 资本主义的经济危机如何求单链表的环入口点 - 龟兔赛跑法 - 动画解释
    目录