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

2023-06-13 23:49:02 +08:00
 studyingss

前言

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

比如 https://tanronggui.xyz/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 的各位来说并不难。

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

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

41259 次点击
所在节点    分享创造
166 条回复
wr516516
2023-06-15 14:43:09 +08:00
这个示意图是用什么画的呀
yanyumihuang
2023-06-15 15:09:22 +08:00
@aptupdate 我也有同样的问题,机场和 warp 分开都可以用,用 tunnels 联合到一起就不行了
20210610204811
2023-06-15 16:04:17 +08:00
@aptupdate #119 你确认是想 客户端 > WARP > 机场 > google... > 机场 > WARP > 客户端?

这种方式显而易见的有以下问题。
1.无法利用 WARP 洗 IP 。
2.大陆连接 warp 稳定性一般,从大陆连接机场显然比连接 warp 要稳,因为机场一般会为大陆用户连接做线路优化,尤其是如果你用的专线。
3.如果你要通过 warp 代理你到机场的流量,那么你的机场节点的 server 需要配成 127.0.0.1(tunnels 转发),也就是说你需要对远程提供的文件进行修改,据我所知各类在线转换站还没有这个功能,这意味着你不能使用 proxy-provider ,当然,你可以选择直接下载配置文件,然后自己修改其中的 server ,然而这也会带来一个问题,那就是你必须要会 js ,自己在 parser 中自定义你的配置文件,不然没办法只更新 nodelist ,而不搞乱 rule 等其他配置。
20210610204811
2023-06-15 16:14:50 +08:00
@aptupdate #119

你想要的效果只能这样实现,用 proxy-provider 是不行的。

```
mixed-port: 7890
allow-lan: false
mode: Rule
log-level: info
external-controller: 127.0.0.1:9090
profile:
store-selected: true
store-fake-ip: true
dns:
enable: true
ipv6: false
listen: 127.0.0.1:5450
enhanced-mode: fake-ip
nameserver:
- https://dns.pub/dns-query
- https://223.5.5.5/dns-query
tunnels:
- network: [tcp, udp]
address: 127.0.0.1:7777 # 这里也不需要改
# target: 162.111.111.111:2408 # 这里改成自建节点的 ip 和端口号
target: HK001 节点的真实域名 /IP:以及对应的端口
proxy: ⚡️ READY BOOST
# - tcp/udp, 127.0.0.1:7777, engage.nanocat.me:2408, 机场

proxies:
# READY BOOST
- name: ⚡️ READY BOOST
type: wireguard
server: engage.nanocat.me
port: 2408
ip: 172.111.111.111
# ipv6: 2606:4700:110:8c
private-key: +F8ARjCMCyffU1236azCH5
public-key: bmXOC+F1FxEMF9dyiK2H5
remote-dns-resolve: true
dns: [1.0.0.1, 223.6.6.6]
mtu: 1280
udp: true
- name: HK001
server: 127.0.0.1
port: 7777
type: trojan
password: xxx-yyy-zzz
sni: 123.xxx.com
skip-cert-verify: true
udp: true

proxy-groups:
- name: 🚀 节点选择
type: select
proxies:
- HK001
rules:
- GEOIP,LAN,DIRECT
- GEOIP,CN,DIRECT
- MATCH,🚀 节点选择
```
aptupdate
2023-06-15 16:32:21 +08:00
@20210610204811 “你确认是想 客户端 > WARP > 机场 > google... > 机场 > WARP > 客户端?”
之前的回复可能没表达清楚,我是想用 WARP 来落地。客户端 <> 机场 <> WARP <> google
rayray314
2023-06-15 17:20:53 +08:00
第一次尝试没成功,把本地端口改成 7787 后成功了。😅 windows 上各种奇怪的端口占用问题。
20210610204811
2023-06-15 17:39:05 +08:00
@aptupdate #125 你把 filter: "港|HK|(?i)Hong" 去掉,然后测试不同的节点就知道哪个是可用的了。
hang333
2023-06-16 08:02:03 +08:00
@jianzhao123 自定义 config 和 base.yml ,可以看看 op 发的订阅链接中的 config
https://gist.githubusercontent.com/miaomiaoclub/2178a7dd7fbbf4b7774ad6f7ad2000c5/raw
noqwerty
2023-06-16 08:10:22 +08:00
@aptupdate 请问下这样配置真的会走 wireguard 吗?我类似的写法从机场连到自建 trojan ,在查 ip 的网站显示还是机场 ip
aptupdate
2023-06-16 09:03:15 +08:00
@noqwerty 我是想要 wireguard(WARP)来落地,但是没有成功。
WARP 和机场都是通的,然后尝试 relay 和 tunnels 落地都不成功。
使用 trojan 应该没问题,可以把配置段落发出来看看。
@20210610204811 表示成功了,但我不知道具体哪里配置不同。
zhinianyuxin0
2023-06-16 12:54:23 +08:00
@aptupdate @20210610204811 我也是一样的 单独使用 warp 可以链接,但是使用 tunnels 就连接失败了
noqwerty
2023-06-16 19:01:53 +08:00
@aptupdate 同样的 trojan 配置用 relay 是可以的,tunnels 不行。不知道跟我用的 Clash.Meta 内核有没有关系
EthanOean
2023-06-17 01:55:35 +08:00
一直想用好 clash ,蹲一个详细教程
captainm
2023-06-19 17:44:48 +08:00
太棒了,不知道此方案,对应的 subconverter 配置模板如何修改呢?
captainm
2023-06-19 17:54:09 +08:00
@captainm 似乎看明白了,subconverter rule base 加一段 tunnels 的配置,其他的和 relay 一样,抓住 tunnels 节点和自定义节点拼起来
Ccf
2023-06-19 21:34:37 +08:00
用的 shellclash+adguardhome ,adg 里上游 dns 已经指向 shellclash ,那么,shellclash 里的 dns 加密后还需要开启 dnsmasq 和禁用 dns 劫持么?
molezznet
2023-06-21 12:18:09 +08:00
aptupdate
2023-06-21 14:34:59 +08:00
@molezznet 我也是,同一个 warp(WireGuard)节点 relay 可以,tunnels 却不行。推测是 tunnels 中配置的问题,具体找不到原因。
molezznet
2023-06-25 09:51:25 +08:00
@aptupdate 我再看了下原帖 blog 和 https://gist.github.com/miaomiaoclub/d59f24ed7d86cc83e757df8353948a11 , 可以了, 重新研究了下,warp 节点是 CF 前置,⚡️ tunnels 是落地
```
- name: "warp"
type: socks5
server: 127.0.0.1
port: 5555
udp: true

- name: "⚡️ tunnels"
type: vmess
server: 127.0.0.1 #这里不需要改
port: 7777 #这里不需要改
uuid: xxxxxxxxxxxx
alterId: 0
cipher: auto
udp: true
tls: true
skip-cert-verify: true
servername: aaa.com
network: grpc
grpc-opts:
grpc-service-name: "xxxxxxxx"

tunnels:
- network: [tcp, udp]
address: 127.0.0.1:7777 #这里不需要改
target: aaa.com:443 #这里改成自建节点的 ip 和端口号
proxy: warp
```
aptupdate
2023-06-25 09:59:08 +08:00
@molezznet CF 前置是又转换了一次吗?变成 cocks5 啊?
WARP 不是 WireGuard 吗?我尝试直接用 WireGuard 一直不成功。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/948499

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX