V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
studyingss
V2EX  ›  分享创造

我花了一周准备,想和你分享 Clash 所有特性运用到极致之后的体验

  studyingss · 312 天前 · 32081 次点击
这是一个创建于 312 天前的主题,其中的信息可能已经有所发展或是发生改变。

前言

去年我发布了一篇关于 clash relay 的教程,在 V2EX 引发了一些讨论。

比如 https://www.v2ex.com/t/894700 还有一些其他的帖子。

当初随便拿来放临时配置的 gist 也有了 50 多个 star https://gist.github.com/miaomiaoclub/6947f7cb93846301f1658da0edcd61bf

时隔半年多,这套方案在和朋友 @ RADE 的共同学习中有了不少改进,tunnels 功能的加入更是让整套方案如虎添翼,不少体验让我自己都有种“wow”的感觉,例如 延迟降低 100%

最终的效果让我到现在都非常兴奋,所以我花了一周时间再来写一篇文章和大家分享。

快速体验

这是我目前使用的配置的示意图,为了美观简化了不少内容。

因为所有东西要讲完真的很复杂,为了让大家快点感受我的激动,我花了一周时间写了一个模版让你可以在 30 秒内开始体验这一切。

你只需要去 https://www.urlencoder.org/ 或者其他什么网站把你的订阅链接进行 url 编码。

然后把编码后的内容拼接到下面这一大串链接的末尾,再把它放到 Clash 里面订阅就可以了。

https://api.sublink.dev/sub?target=clash&insert=false&config=https%3A%2F%2Fgist.githubusercontent.com%2Fmiaomiaoclub%2F2178a7dd7fbbf4b7774ad6f7ad2000c5%2Fraw&emoji=true&list=false&tfo=false&scv=true&fdn=false&sort=false&new_name=true&url=https%3A%2F%2Fgist.githubusercontent.com%2Fmiaomiaoclub%2F92fc5af76ede047810a7a51af86089ee%2Fraw%7C

完成之后你应该可以看到这样的分组,其中的 READY BOOST 就是使用了 tunnel + grpc 的连接,你可以把左右两边的延迟进行对比。

然后你可以在节点选择列表的末尾找到 READY BOOST ,选中它,然后打开几个网页,另外,它应该是可以解锁 ChatGPT 的。

顺带一提,当你自行实现的时候,它是 udp fullcone 的,我在这里禁用了 udp 。

这套体验配置会在 1 天后失效,取决于这个帖子的回复情况延长或缩短。

实现原理是什么?

基于 grpc 的连接复用。

关于 proxy chain 的优点,可以查看下面这篇文章

https://luxirty.com/article/01815b7d-073d-48ef-9528-7b4ad033f8d0

这里主要讲讲 grpc ,众所周知,连接复用可以节省握手时间,http/2 就拥有连接复用的特性。

然而 clash 只为 grpc 实现了连接复用,http/2 在 clash 中并不具备连接复用。

基于 tunnel 的 proxy chain

在实际测试中,我们(@RADE )发现 relay 实际上导致了非常多的问题,例如 udp 无法通过、grpc 奇怪的高延迟等。

因此我们使用 tunnels 替换了 relay ,它的表现相比于 relay 优秀了很多。

你可以到 clash 的官方 wiki 来学习 tunnel 的用法 https://dreamacro.github.io/clash/configuration/configuration-reference.html

也可以看看我的博客,有稍微容易看懂的讲解 https://luxirty.com/article/chain-proxy-powered-by-clash-tunnels

负载均衡、故障转移、最短延迟

在上面的体验配置中我并没有把所有这些特性都加上。因为写起来太麻烦了。但我相信对 V2EX 的各位来说并不难。

实际上还有更多的内容可以讲:

  • 如何更方便地为 clash 自定义规则

    你可以看到在上面的测试配置中,我们修改了配置并添加了节点,并且没有依赖任何自建服务,一个公开的 subconverter+gist 足够了

  • 使用订阅转换时,如何把来自不同订阅的 proxy 分别放到不同的 group

唔…好啦,大概就这些!……希望这贴不要沉🥹

第 1 条附言  ·  311 天前
感谢各位的讨论!体验配置已经关掉了,不过模版会保留,依然可以转换出配置文件来学习 tunnel 的写法。
相关详细的教程后续会 append 到这边,如果有什么疑问或者想看的写到回复里就好。
第 2 条附言  ·  308 天前
如何自定义 Clash 分流规则、如何为 Clash 添加代理域名的教程已经写好了
https://www.v2ex.com/t/949462
162 条回复    2024-04-17 17:36:52 +08:00
1  2  
GabrielleBellamy
    1
GabrielleBellamy  
   312 天前
好厉害👍🏻
Janyd
    2
Janyd  
   312 天前 via iPhone
希望写个完整教程
sickoo
    3
sickoo  
   312 天前
想问一下,开了 Tun ,右下角图标就会显示断网。
dethan
    4
dethan  
   312 天前 via Android
这个文章感觉是机翻的…
vislins
    5
vislins  
   312 天前
@dethan 你的感觉是错误的。看一下上下文,仔细看。
LzNOHentai
    6
LzNOHentai  
   312 天前 via Android
极端需要隐私+自定义的值得折腾,不然体验上想超越机场还得找个流媒体等解锁能力优秀的出口节点。
israinbow
    7
israinbow  
   312 天前
赞👍, 虽赞但是借楼抛砖引玉:

web 浏览随便一个网站动辄数兆大小的初次加载, 或者流媒体播放, 低延迟握手已经没有那么激动了.
当今最大的问题是 tcp 长链接被 reset 或者限速 128 kbps;

有没有网友知道怎么写脚本监听链接的传输速度, 长期低于阈值后断开所有链接, 急求, 在线等急 qqqxx.
lpfzmmlhhlhy
    8
lpfzmmlhhlhy  
   312 天前
加速应该是 trojan 的 tls 起了作用。
从我生成的配置来看好像是这样的,“READY BOOST, server: 127.0.0.1, port: 7777, type: trojan”
============================
tunnels:
- network: [tcp, udp]
address: 127.0.0.1:7777
target: 138.2.68.200:19902
proxy: 新加坡
proxies:
- {name: ⚡️ READY BOOST, server: 127.0.0.1, port: 7777, type: trojan, password: Awck3sDdX0n796nb7OWCyz9x9AHdSe1pBaRcECmG/fqgJw==, sni: www.icloud.com, skip-cert-verify: true, network: grpc, grpc-opts: {grpc-service-name: socurnx}, udp: true}
proxy-groups:
- name: 🤩 LOOKING GLASS
type: select
proxies:
- 新加坡
- ⚡️ READY BOOST
============================
popzuk
    9
popzuk  
   312 天前 via iPhone
意思是使用 tunnel ,机场节点去连自建 grpc ,获得连接复用的特性吧。

不知道 clash meta 的 dialer-proxy 有没有类似的特性?

surge 在前不久修复了 snell v4 的复用,类似的,用机场节点去连 snell ,有的请求会提示:
[Connector] Reuse existing connector
虽然我没感觉有什么明显变化。
CuteKitten
    10
CuteKitten  
   312 天前 via Android
不打游戏的话延迟没那么敏感,还是多端口轮询拉满带宽比较实在
Jirajine
    11
Jirajine  
   312 天前   ❤️ 1
“clash 所有特性运用到极致”
几年前我也尝试做过这种事情,在仔细阅读 clash 的代码后,放弃了使用这个东西。
leo97
    12
leo97  
   312 天前 via Android
@Jirajine 为啥放弃?
Kinnice
    13
Kinnice  
   311 天前
@Jirajine #11 几年前,现在都不知道变了多少了
studyingss
    14
studyingss  
OP
   311 天前 via Android
@israinbow 即便有连接复用也节省不了实际浏览网页的那个握手。
这里节省掉的是代理线路上的握手,这个依然是非常长的。
举个例子来说,如果使用 ws+tls ,那么每个连接都需要两次 tls 握手+1 次 ws upgrade ,把代理线路的握手省掉之后相当于每个连接都只要网站本身的握手,还是可以减少不少的。

当然你说的带宽在视频场景下确实影响也不小,这套方案我实际使用下来起速挺快的,不过这个就因线路而异了。
totoro625
    15
totoro625  
   311 天前
非常感谢介绍 tunnels
之前一直在用 Meta 内核以解决 UDP 的 relay 问题
M5tuA
    16
M5tuA  
   311 天前
谢谢分享👍
希望可以继续讲下去
0o0O0o0O0o
    17
0o0O0o0O0o  
   311 天前
OP 下一步可以探索总结下各个平台同步修改规则、各个平台多场景一致体验吗?多平台包括 PC (三个)移动(两个)路由器(就默认 openwrt 吧),多场景主要是流量或者宽带、ipv4 或者双栈等等
Cursor1st
    18
Cursor1st  
   311 天前
学习一下,不过感觉太深入的比较晦涩,没有网络工程基础知识的话,理解很有困难,还是感谢 op ,(能继续探索大家都能用的方式当然更好,哈哈
A01514035
    19
A01514035  
   311 天前
感谢,已经用起来了。
不过每次访问一个请求,log 里会出现两条日志,被访问的网址+访问我自建节点的请求。
不过问题不大。
crazychang
    20
crazychang  
   311 天前
请问下 op ,画这个示意图用的是什么工具?我看 github 很多人图片都是这种风格。
zcf0508
    21
zcf0508  
   311 天前 via Android   ❤️ 1
@crazychang excalidraw
crazychang
    22
crazychang  
   311 天前
@zcf0508 多谢
studyingss
    23
studyingss  
OP
   311 天前 via Android
@totoro625 是的,tunnels 的一大好处就是解决了原版内核 relay 不支持 udp 的痛点,并且如果是使用支持 uot 的协议的话,就算外层不支持 udp 也可以实现 fullcone 。

实际上 relay 还有很多奇奇怪怪的问题,比如说如 grpc 和 relay 搭配会造成延迟变高,还有内层协议是 http ,tls ,socks 的话有可能会无法连接(我收到不少人询问这个事)。

tunnel 目前看起来没有这些问题,兼容性最佳,又支持 udp 。

(上面这段话与 t.me/R_A_D_E 共同编写)
studyingss
    24
studyingss  
OP
   311 天前 via Android
@A01514035 可以考虑使用 grpc ,就像示例一样,这样就会只有一条 tunnel 连接。
grpc 的主要缺点是在高丢包线路上表现不佳,tunnel 基本上解决了这个问题,因此可以无成本享受 grpc 连接复用的好处。
Cursor1st
    25
Cursor1st  
   311 天前
反馈,系统代理和 tun 模式均无法使用,延迟测试 READY BOOST 超时,原因未知
Anybfans
    26
Anybfans  
   311 天前
请问一下。自己搭建的番茄。怎么做成订阅链接呢。。每次换配置 要所有地方都同步一下
676529483
    27
676529483  
   311 天前
厉害,确实快了些
toan
    28
toan  
   311 天前
@lpfzmmlhhlhy 这是 OP 的 trojan 节点?
aptupdate
    29
aptupdate  
   311 天前
@Anybfans 把配置文件放到 iCloud/WebDAV 等等可以远程访问的地方,然后引用这个文件地址。
Anybfans
    30
Anybfans  
   311 天前
@aptupdate 请问是 ymal 文件的链接么
zpaeng
    31
zpaeng  
   311 天前
好评
Anybfans
    32
Anybfans  
   311 天前
@Anybfans #30 用 icloud 分享试了一下。好像不能直接访问到文件本身

😱
aptupdate
    33
aptupdate  
   311 天前   ❤️ 1
@Anybfans 就是你配置文件 xxx.yaml 的链接。
或者放到私有 gist 上,但有个缺点就是如果访问不了 gist 就无法更新。
话说自建搞好之后很少会再改配置啊,我一年也改不一次。
Anybfans
    34
Anybfans  
   311 天前
@aptupdate #33 感谢。icloud 好像不太行。我换个方案。谢谢
aptupdate
    35
aptupdate  
   311 天前
@Anybfans #32 用 iCloud 不是分享,是 Apple 设备直接引用 iCloud 里这个配置文件。
Anybfans
    36
Anybfans  
   311 天前
@aptupdate #35 明白了。想给非 apple 设备使用。例如路由器啥的。非常感谢
StevenQAQ
    37
StevenQAQ  
   311 天前
请问体验配置中我该替换哪些参数?仅替换 Url 吗?
molezznet
    38
molezznet  
   311 天前
使用自己的番茄节点怎么导入这个能完善下教程呗,不是订阅链接,而是单独的几个链接?
tcpdump
    39
tcpdump  
   311 天前   ❤️ 1
这不是可以收集一波机场链接了?
studyingss
    40
studyingss  
OP
   311 天前 via Android   ❤️ 1
@Anybfans 使用 secret gist ,然后自建一个 ghproxy 。
studyingss
    41
studyingss  
OP
   311 天前 via Android   ❤️ 1
@tcpdump 猜到会有这个质疑,为了避嫌这里用的是公共服务,你可以自行 google 搜索 sublink.dev 了解一下这个转换服务哪些人在用,也可以自己替换成别的。
renyijiu
    42
renyijiu  
   311 天前
感觉使用确实快了,厉害了
molezznet
    43
molezznet  
   311 天前
@tcpdump 手动添加了
aptupdate
    44
aptupdate  
   311 天前 via iPhone
@renyijiu
@studyingss
还是没太懂会变快的原因。
不考虑落地、避免 IP 地址变化这些需求,假如机场已经足够快那再加个自建节点为啥会更快呢?
多一条链路不应该是增加延迟或者效率吗?
studyingss
    45
studyingss  
OP
   311 天前 via Android
@aptupdate 首先变快只是附带的,最初始的目的是你说的落地,隐私,避免 ip 变化这些。

其次,变快的原因是省去了握手,即便是 ss 协议的机场,在跨境段可能也使用了 tls ,相当于每条连接都要多花一倍的时间在握手上,这还只算了应用层,没算传输层。
连接复用之后,你透过代理访问网站的握手次数实际上等于直接访问,自然就快了。
更详细的信息你可以 google 协议名称+rtt 。
yanyumihuang
    46
yanyumihuang  
   311 天前 via Android
跟 warp 的 wireguard 共用连不通,流程都是按照写的走的单独的用可以联通,配一起就不行。
molezznet
    47
molezznet  
   311 天前
shellclash 里尝试好像不能识别 ready boost
Anybfans
    48
Anybfans  
   311 天前
@studyingss #45 看了半天没看太懂。老哥能给一个模板嘛😰
fatelight
    49
fatelight  
   311 天前
来学习学习
dragontx4g
    50
dragontx4g  
   311 天前   ❤️ 2
怀疑是诈骗贴,订阅 url 发给你不就 g 了
jamosLi
    51
jamosLi  
   311 天前
好奇那个图是用什么画的
superzzy
    52
superzzy  
   311 天前
哇哇哇哇-用了! 确实牛逼~
我想问的是不是一天之后就失效了? 想继续使用怎么办
hang333
    53
hang333  
   311 天前 via Android
@dragontx4g 建议看看 41 楼
Peikon
    54
Peikon  
   311 天前
@dragontx4g 你可以试用后重置订阅 url ,问题不大吧?
Robertwhite
    55
Robertwhite  
   311 天前
我想问一下,clash 配置有些域名代理或者不代理有没有什么简单的办法,我网上搜了一下都挺麻烦的,不知道是不是没找到正确的,不像 V2ray ,改个配置文件就可以了
KaliZ
    56
KaliZ  
   311 天前
那么有没有推荐的自建节点的平台呢。。
cat9life
    57
cat9life  
   311 天前
看起来灰常高大上,但是不明白了。。。
请教 OP ,能否直接使用机场的多线路做隧道,两端都是我自己的 VPN 呢
Huelse
    58
Huelse  
   311 天前
看起来挺不错,但我这 cfw 选的 READY BOOST 老是 timeout ,实际是可用的。
theprimone
    59
theprimone  
   311 天前
Clash for Windows 报错:HTTP Response Status Code(400) 是我使用方式有问题吗?直接访问导入文件也不可用,提示 READY BOOST not found 。
Hilong
    60
Hilong  
   311 天前
我照着楼主的步骤走下来,到最后一步,clash 提示下载配置失败会是什么原因呢
taylorsellie
    61
taylorsellie  
   311 天前
@Hilong 我一开始是替换后面的 url 使用点击的时候会失败,后面我直接拼到后面可以成功但是好像默认是那个新加坡的节点,感觉是死的不能用自己的节点加上延迟
qinfengge
    62
qinfengge  
   311 天前
这是神马情况
taylorsellie
    63
taylorsellie  
   311 天前
@qinfengge 直接加上链接吧,不要去掉原来的,我去掉替换自己的也这样
molezznet
    64
molezznet  
   311 天前
@qinfengge 那个节点被删掉了吧
ncepuzs
    65
ncepuzs  
   311 天前   ❤️ 1
@Robertwhite 在托管平台(如 GitHub )上建两个文件(一个代理一个不代理),然后通过像上面的 rule-set 之类的远程引用,建好相应的策略组
ncepuzs
    66
ncepuzs  
   311 天前
@ncepuzs 如果跟其他规则有冲突的,应该将你自定义的这两个放在规则列表最上面
qinfengge
    67
qinfengge  
   311 天前
@taylorsellie #63 确实是要直接拼接,我以为要替换 url🧐
studyingss
    68
studyingss  
OP
   311 天前 via Android
@Huelse 为了防止被滥用做了一些安全措施,自己配置的话不会有这个问题。
@superzzy 是的,主要是有被滥用风险。
Caratpine
    69
Caratpine  
   311 天前
示意图是用什么工具制作的呀?
superzzy
    70
superzzy  
   311 天前
@studyingss OP 你好 如果想继续使用该如何做呢
SmiteChow
    71
SmiteChow  
   311 天前
ss 又不是不能用
TrembleBeforeMe
    72
TrembleBeforeMe  
   311 天前
试了下确实反应变快了,等楼主详解文章自建了
theohateonion
    73
theohateonion  
   311 天前
Smilencer
    74
Smilencer  
   311 天前
不知所云,感觉很吊的样子
shalingye
    75
shalingye  
   311 天前 via Android
用不了呢,使用 ready boost 只能谷歌搜索,其他页面全部 reset 。
StevenQAQ
    76
StevenQAQ  
   311 天前
想得到楼主的回复,关于"把编码后的内容拼接到下面这一大串链接的末尾"这段话下面的 url ,我可以替换成我 encode 后的链接吗?需要替换哪几个请求参数? config+url?还是仅 url
jiekeop
    77
jiekeop  
   311 天前
感谢感谢,继续输出
totoro625
    78
totoro625  
   311 天前
测试后发现 Clash for Android 不能使用 tunnels 功能
tunnels 功能只支持一个一个配置自建节点,不支持订阅组

我还是用回了 relay
lqfxz520
    79
lqfxz520  
   311 天前 via iPhone
不知道怎么用但感觉很厉害👍
Bichat
    80
Bichat  
   311 天前
试了几个订阅链接,READY BOOST 都超时了。不知道为啥
RageBubble
    81
RageBubble  
   311 天前
有没有专门的详细讲解的网站,这样我就可以喂给 ai ,让它帮我解释解释你的神奇操作。
cubarco
    82
cubarco  
   311 天前
这个配置的目的就是用机场节点 proxychain 自建节点是吧?
保护隐私可以说得通,但是机场落地的解锁没了也难受呀
27149
    83
27149  
   311 天前
QX 的能不能优化下
20210610204811
    84
20210610204811  
   311 天前   ❤️ 2
谢谢,我之前弄这个 tunnels 试了好久,看了下楼主的配置,瞬间恍然大悟。

现在我提供下通过 tunnels 走 WARP 的示例,发出来后人搜索到可以参考。




20210610204811
    85
20210610204811  
   311 天前   ❤️ 1
@20210610204811 #84 @Nile20 兄弟,搞定了,延迟我这边 180ms 。
gabkfivyfbst
    86
gabkfivyfbst  
   311 天前
所以一天之后你给的配置过期了,该怎么继续使用这个功能呀
Nile20
    87
Nile20  
   311 天前
@20210610204811 感谢提醒,感谢 OP studyingss 的分享。我周末再继续学习一下~
wangccddaa
    88
wangccddaa  
   311 天前   ❤️ 1
@Robertwhite 在配置文件同层级 加个 proxyIgnoreList 文件,具体格式可以搜索这个关键字,新版的在配置-更多配置里面直接设置
gabkfivyfbst
    89
gabkfivyfbst  
   311 天前
Giftina
    90
Giftina  
   311 天前
@gabkfivyfbst 可以按教程自建,需要 1 个自建节点,和 1 个订阅: https://luxirty.com/article/chain-proxy-powered-by-clash-tunnels
Cursor1st
    91
Cursor1st  
   311 天前
有几个疑问:1 、拼接 op 的链接获取的配置文件 READY BOOST 超时;
2 、如果使用机场节点怎么使用?
AltairT
    92
AltairT  
   311 天前
@theprimone 我也有这个问题。我的 clash for windows 已经是最新的了。
Giftina
    93
Giftina  
   311 天前   ❤️ 1
简单理解了一下,其实可以总结为 `复用连接的 2 级跳板` 吧
vitovan
    94
vitovan  
   311 天前
@Jirajine #11 我也想知道:为什么“放弃了使用这个东西”?
@leo97 #12
f6x
    95
f6x  
   311 天前
那个, 订阅链接不应该随便公开的吧.
Liniretus
    96
Liniretus  
   311 天前   ❤️ 2
补充说明一下:
1. 前面几楼有人说 Clash For Android 不能用,因为 CFA 停更了,最后一个版本的 clash core 尚未支持 Tunnels.
2. Stash (iOS/MacOS) 也有相同的问题,尚未支持 Tunnels ,因此无法用于 Stash Core.
3. Clash Meta for Android 支持 Tunnels.
4. Clash for Windows(clash or clash premium core) / Clash Verge(meta or clash core),均支持 Tunnels.
stonefaker11
    97
stonefaker11  
   311 天前 via iPhone
不明觉历
Jirajine
    98
Jirajine  
   311 天前
@vitovan 看了代码你就知道了,我举个例子,Match,final 文档说一个 catch-all 的兜底规则,而实际上呢,你去看代码。
Cambra1n
    99
Cambra1n  
   311 天前
想问下 v2ray 和 clash 有什么不一样,clash 一直没用明白,这次学习下。
vitovan
    100
vitovan  
   311 天前
@Jirajine #98

我不是很懂 Go 语言,翻了一下代码,您的意思是他 MATCH 的兜底最后没兜住,给了个 DIRECT 么?

不知道下面的链接对不对:

https://github.com/Dreamacro/clash/blob/4d66da2277ddaf41f83bd889b064c0a584f7a8ad/tunnel/tunnel.go#L430
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   899 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 22:21 · PVG 06:21 · LAX 15:21 · JFK 18:21
Developed with CodeLauncher
♥ Do have faith in what you're doing.