去年我发布了一篇关于 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 天后失效,取决于这个帖子的回复情况延长或缩短。
关于 proxy chain 的优点,可以查看下面这篇文章
https://luxirty.com/article/01815b7d-073d-48ef-9528-7b4ad033f8d0
这里主要讲讲 grpc ,众所周知,连接复用可以节省握手时间,http/2 就拥有连接复用的特性。
然而 clash 只为 grpc 实现了连接复用,http/2 在 clash 中并不具备连接复用。
在实际测试中,我们(@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
唔…好啦,大概就这些!……希望这贴不要沉🥹
101
vitovan 2023-06-14 17:41:04 +08:00
|
102
Jirajine 2023-06-14 18:04:25 +08:00
@vitovan #100 像这样的问题不止一处,DNS 和 UDP 的处理你可以翻一下。
看到这样的行为,为什么不使用原因显而易见了,更不用说什么 premium 核心、闭源的 GUI (这是一个无法商业化的程序)之类的 drama 了。 |
103
Marinaaaa 2023-06-14 18:11:19 +08:00
问一下 这样是不是受限于机场的带宽?
比如我机场的带宽只有 10M, 自建的带宽有 100M 。 这样的话,实际上限就是 10M ? |
104
aptupdate 2023-06-14 18:17:53 +08:00 via iPhone
@20210610204811 #84 按照你的例子我这边 warp 节点没问题,但是 warp➡️机场 不通。能截个完整点的例子吗?
|
105
storyxc 2023-06-14 18:33:20 +08:00
收藏了 有空学习下
|
106
guanzhangzhang 2023-06-14 19:15:48 +08:00
为啥我的 clash 订阅更新的配置文件经常被截断,然后导致配置文件错误起不来
|
107
hanguofu 2023-06-14 19:20:43 +08:00 via Android
谢谢分享!请问能不能用这种技术访问自己家里的 nas 小主机(没有公网 IP)?
|
108
ysicing 2023-06-14 23:18:14 +08:00
|
109
vitaminx 2023-06-15 00:25:00 +08:00
哇 一直想这么用,无奈没有搞定后置代理,最后用 Proxifier 转发解决!常常需要调整,很累!
请问 xray 支持 tunnel 功能吗? clash 的 tunnel 模式可不可以用其他代理客户端做后置代理,实现三重代理: 本地请求 → 代理 1 (由代理客户端 1 指定)→ 代理 2 (由代理客户端 2 指定)→ 代理 3 (由代理客户端 3 指定)→ 目标服务器 eg:Chrome → Shadowrocket → tor → clash → google.com |
110
dogfight 2023-06-15 01:27:29 +08:00
clash 用了一段时间。搞不好 DNS 泄漏,放弃了
|
111
1423 2023-06-15 01:35:56 +08:00
几年前就这么玩了。。udp mux + 服务端转发 是现在的方案,一路 0rtt
但很多人连 ttfb 都不会自己测量,还是不科普了 |
112
1423 2023-06-15 01:37:42 +08:00
之前有个 rixcloud 体验为什么好,原因之一就是他们国内中转节点跟海外节点是 mux 的
|
113
Lightbright 2023-06-15 01:52:00 +08:00
@dogfight 这个问题 clash 认为不是一个问题,哈哈。不过可以通过自己写 script 模式规则来避免泄露
|
116
20210610204811 2023-06-15 10:10:23 +08:00
@aptupdate #104 你把 proxies 跟 rules 去掉,发出来看下。
|
117
aptupdate 2023-06-15 10:34:24 +08:00
|
118
aptupdate 2023-06-15 10:36:05 +08:00
@20210610204811 #117 主要是这些配置,然后选择 READY BOOST 节点
|
119
aptupdate 2023-06-15 10:42:31 +08:00
|
120
jianzhao123 2023-06-15 10:43:14 +08:00
这个添加 tunnels 的能不能用 subconverter 自动添加上?找了一下 subconverter 的文档没有发现
|
121
wr516516 2023-06-15 14:43:09 +08:00
这个示意图是用什么画的呀
|
122
yanyumihuang 2023-06-15 15:09:22 +08:00 via Android
@aptupdate 我也有同样的问题,机场和 warp 分开都可以用,用 tunnels 联合到一起就不行了
|
123
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 等其他配置。 |
124
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,🚀 节点选择 ``` |
125
aptupdate 2023-06-15 16:32:21 +08:00
@20210610204811 “你确认是想 客户端 > WARP > 机场 > google... > 机场 > WARP > 客户端?”
之前的回复可能没表达清楚,我是想用 WARP 来落地。客户端 <> 机场 <> WARP <> google |
126
rayray314 2023-06-15 17:20:53 +08:00
第一次尝试没成功,把本地端口改成 7787 后成功了。😅 windows 上各种奇怪的端口占用问题。
|
127
20210610204811 2023-06-15 17:39:05 +08:00
@aptupdate #125 你把 filter: "港|HK|(?i)Hong" 去掉,然后测试不同的节点就知道哪个是可用的了。
|
128
hang333 2023-06-16 08:02:03 +08:00 1
@jianzhao123 自定义 config 和 base.yml ,可以看看 op 发的订阅链接中的 config
https://gist.githubusercontent.com/miaomiaoclub/2178a7dd7fbbf4b7774ad6f7ad2000c5/raw |
129
noqwerty 2023-06-16 08:10:22 +08:00 via iPhone
@aptupdate 请问下这样配置真的会走 wireguard 吗?我类似的写法从机场连到自建 trojan ,在查 ip 的网站显示还是机场 ip
|
130
aptupdate 2023-06-16 09:03:15 +08:00 via iPhone
@noqwerty 我是想要 wireguard(WARP)来落地,但是没有成功。
WARP 和机场都是通的,然后尝试 relay 和 tunnels 落地都不成功。 使用 trojan 应该没问题,可以把配置段落发出来看看。 @20210610204811 表示成功了,但我不知道具体哪里配置不同。 |
131
zhinianyuxin0 2023-06-16 12:54:23 +08:00
@aptupdate @20210610204811 我也是一样的 单独使用 warp 可以链接,但是使用 tunnels 就连接失败了
|
132
noqwerty 2023-06-16 19:01:53 +08:00 via iPhone
@aptupdate 同样的 trojan 配置用 relay 是可以的,tunnels 不行。不知道跟我用的 Clash.Meta 内核有没有关系
|
133
EthanOean 2023-06-17 01:55:35 +08:00
一直想用好 clash ,蹲一个详细教程
|
134
captainm 2023-06-19 17:44:48 +08:00
太棒了,不知道此方案,对应的 subconverter 配置模板如何修改呢?
|
135
captainm 2023-06-19 17:54:09 +08:00
@captainm 似乎看明白了,subconverter rule base 加一段 tunnels 的配置,其他的和 relay 一样,抓住 tunnels 节点和自定义节点拼起来
|
136
Ccf 2023-06-19 21:34:37 +08:00
用的 shellclash+adguardhome ,adg 里上游 dns 已经指向 shellclash ,那么,shellclash 里的 dns 加密后还需要开启 dnsmasq 和禁用 dns 劫持么?
|
137
molezznet 2023-06-21 12:18:09 +08:00
@zhinianyuxin0 @aptupdate @20210610204811 同样 warp 不成功,但是按照 https://gist.github.com/miaomiaoclub/6947f7cb93846301f1658da0edcd61bf 中的 relay 正常
|
138
aptupdate 2023-06-21 14:34:59 +08:00
@molezznet 我也是,同一个 warp(WireGuard)节点 relay 可以,tunnels 却不行。推测是 tunnels 中配置的问题,具体找不到原因。
|
139
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 ``` |
140
aptupdate 2023-06-25 09:59:08 +08:00
@molezznet CF 前置是又转换了一次吗?变成 cocks5 啊?
WARP 不是 WireGuard 吗?我尝试直接用 WireGuard 一直不成功。 |
141
molezznet 2023-06-25 10:00:28 +08:00
楼主的 relay 原帖和 tunnels 新帖都看了下,终于好了,同样 CF 的 warp+的前置下,tunnels 可以比 relay 平均块一倍,不过我是用 VMess grpc 的
https://img1.imgtp.com/2023/06/25/gh0VUK8B.png tunnels 配置见 139 楼上贴 relay 方式就是 blog 中的默认 ``` - name: ♻️ iRimo Private Relay type: relay proxies: - warp - vmess-grpc |
142
molezznet 2023-06-25 10:02:48 +08:00
@aptupdate 我是有个 CF warp 的,用的 socks 模式, 会启动一个 socks5 代理的那个模式
|
145
kangkag0231 2023-06-26 19:15:57 +08:00
6666
|
147
ksdd521lr 2023-07-04 12:56:33 +08:00
我的出口也是用的 warp ,开启后用几分钟会断开不知道为什么,断开一会后又会连上,就这样循环。同样的配置使用 wireguard 客户端就不会。有没有了解的前辈解惑下吖
[![8b0d50de88d66ed7f60b36afc7fdd83c.th.png]( https://s1.imgcap.xyz/8b0d50de88d66ed7f60b36afc7fdd83c.th.png)]( https://cap2box.com/i/WdfFi) |
148
gofe2008 2023-07-14 18:57:12 +08:00
@20210610204811 大佬,求个去掉节点信息的完整配置文件。
|
149
xzm1006 2023-08-06 11:56:55 +08:00
感谢 OP 主,第一次尝试在自用配置文件加入机场订阅以及 tunnel 配置,如果 tunnel 能支持类似 Group 组选择自建就好了
|
150
aaaachen 2023-08-06 12:13:14 +08:00
折腾了半天,还是做不到通过 WARP 落地,搞不懂为什么,有没有大佬看一眼配置文件? https://shorturl.at/jADHX
配置文件调来调去 WARP 都是超时,Clash for Windows 版本是 v0.20.31 ,内核版本是 2023.07.22 Premium (59154) |
151
totoro625 2023-09-17 12:48:25 +08:00
tunnels 非常好用,但是发现了问题:
直接使用二进制文件运行的时候 tunnels 正常工作 通过 shellclash 、clashforAndroid 的时候,tunnels 无法正常工作 |
152
studyingss OP @totoro625
参见 #95 ,clash for android 很久没有更新了,tunnels 是去年年底加入的特性 |
153
totoro625 2023-09-17 16:13:19 +08:00
@studyingss #152 我想说的是通过一些第三方软件启动最新的内核也是不能用 tunnels
官方放出来的二进制包直接命令行运行是支持的,丢入 shellclash 、openclash 等第三方实现, 可能是哪里需要额外设置一下,目前是无法使用的 日志是:error:127.0.0.1:7777 connect error:connect failed:dial tcp 127.0.0.1:7777:connect:connection refused 直接用命令行运行又能直接运行,有时间还得研究一下 |
154
Thymolblue 2023-09-18 07:50:15 +08:00 via Android
请问 Clash for Android 支持 tunnels 吗。我尝试了一下,发现电脑端能完美运行,但手机端不通。
|
155
Thymolblue 2023-09-18 07:52:01 +08:00 via Android
抱歉,没有看到上面的评论,看来 CFA 还需要多套一层国内节点。
|
156
studyingss OP @Thymolblue 有两个选择,要么换成 clash meta for Android ,要么用 relay 。其实 relay 也不错的
|
157
mdgwmt0 2023-09-24 17:23:36 +08:00
用了你的配置文件( https://gist.github.com/miaomiaoclub/d59f24ed7d86cc83e757df8353948a11)改成了自己的节点和机场订阅转换,导入 clash 以后,机场节点测速全是超时,不知道哪里出问题了。
|
158
Liniretus 2023-09-26 11:45:54 +08:00
@popzuk Clash.Meta 的 Dialer-Proxy 似乎不支持 UDP ,甚至不如 Relay Group
只使用 Tunnels -> clash core/clash premium/clash.meta udp 根据内层协议决定,可以原生 udp 也可以 udp over tcp ,支持 fullcone 只使用 Relay Group --> clash core/clash premium udpblocked ; clash meta udp over tcp (支持 fullcone ) 只使用 dialer proxy(clash.meta) --> udpblocked |
159
Liniretus 2023-09-26 12:01:07 +08:00
@popzuk
抱歉,武断下结论了,Dialer Proxy 个人测试完全支持 UDP (还可以 Fullcone ) 在 Clash.meta 中用起来体验实际跟 Relay Group 差不多,只是不清楚如何处理 UDP 的。Tunnels 可以原生 UDP ,Relay Group 只能 UDP over TCP ,Dialer Proxy 如何实现我不清楚。 |
160
elliothe 2023-10-08 06:03:37 +08:00
配置完成用了很长一段时间,今天开 cloudflare 测试( https://www.cloudflare.com/cdn-cgi/trace )了一下,页面显示 warp=off ,同样在手机上打开,warp=plus ,那说明 pc 上落地并没有用 warp 节点。看 clash 日志,tunnel listening 状态也是正常的,有点奇怪了🤔
|
161
molezznet 2023-10-10 15:46:20 +08:00
@Liniretus 试了下,meta1.15 中 relay 和 dialer 都可以,好像 tunnels 就是不通 ……
|
162
b1t 221 天前
时隔近一年想问一下,我自建落地机 ss 随机设置了一个端口,机场只有部分节点可以转发到落地成功联网,当我将落地机 ss 的端口设置为 443 反而都可以成功上网了,这是什么原因造成的?
|
165
stephCurry 142 天前 1
@b1t 很简单,机场屏蔽了其他端口
|
166
b1t 142 天前
@stephCurry 感谢解答,很早之前已经定位到是这个问题了
|