TUIC的安装与使用
条评论TUIC是新出现的代理程序,去年试用过但使用体验较为一般。最近的1.0.0版本更新中应用了v5版TUIC协议,各方面表现非常优秀。同时iOS端的Shadowrocket、Stash等APP,以及跨平台程序Clash.Meta也提供了TUIC协议v5版本的支持。
从名字不难看出TUIC与Hysteria同样是基于QUIC的代理协议,使用时要注意打开防火墙对应的UDP端口。TUIC “专注于尽可能减少由于中继而导致的额外握手延迟,并保持协议本身简单且易于实现”,相较于Hysteria的“暴力”加速要“温和”一些,同时自带多路复用。
服务端
所有程序的安装都大同小异:程序+配置文件+守护进程。
下载
打开TUIC的最新版Releases页面,可以看到目前最新版本为1.0.0. 根据服务器系统架构选择下载(gnu版性能略强,但musl版兼容性更好):
1 | wget https://github.com/EAimTY/tuic/releases/download/tuic-server-1.0.0/tuic-server-1.0.0-x86_64-unknown-linux-gnu -O /usr/local/bin/tuic-server && chmod +x /usr/local/bin/tuic-server |
配置
创建配置文件:
1 | mkdir /usr/local/etc/tuic-server && touch /usr/local/etc/tuic-server/config.json |
填写配置文件,示例如下:
1 | { |
- 上述模板中的
00000000-0000-0000-0000-000000000000
、PASSWORD_0
、PATH/TO/CERTIFICATE
、PATH/TO/PRIVATE_KEY
需要修改 alpn
中的内容可按需求修改。- UUID可在Online UUID Generator生成。
- 完整配置文件示例
守护运行
创建Systemd配置文件
1 | touch /etc/systemd/system/tuic-server.service |
内容示例如下:
1 | [Unit] |
启用并运行守护进程
1 | systemctl enable tuic-server.service --now |
客户端
可以使用官方的tuic-cient在本地开启socks5代理供其他软件分流,也可以使用第三方客户端,目前支持TUIC v5的有Clash.Meta、Shadowrocket、Stash。
tuic-client
与服务端类似的,tuic客户端可以在最新的Releases页面中下拉找到。
根据本地机器的系统架构选择对应的客户端(gnu版和msvc版性能上区别不大,但是msvc版可执行文件要小一些),笔者选择了Windows的msvc版。
上述服务端示例配置对应的客户端示例配置如下:
1 | { |
可以使用nssm来守护进程。
- 注意修改
server
、uuid
、password
项。 udp-relay-mode
设置在官方文档中没有具体解释,在#141里作者解释 “native
模式可以看作是经 TLS 加密过的原生 UDP”,至于quic
模式大概是如果UDP丢包会重传直至送达。
Clash.Meta
上述服务端示例配置对应的客户端示例配置如下:
1 | - name: tuic |
- 注意修改
server
、uuid
、password
、sni
项。 - 完整实例配置
其他
Shadowrocket和Stash的使用较为简单,在此不做赘述。
测试
由于TUIC的官方客户端没有提供转发功能,所以无法进行Iperf3测试。
使用
本地为北方电信300M家宽,服务器为Oracle VPS, 500M带宽,去程为CN2,回程为163,使用Clash.Meta作为客户端。
日常
使用环境:平均延迟为80ms,丢包率为0。
Speedtest
单线程:
多线程:
单线程与多线程速度基本无异,这是由于TUIC自带多路复用。
YouTube
4K播放:
晚高峰
使用环境:平均延迟为85ms,丢包率约为13%
Speedtest
单线程:
多线程:
YouTube
4K播放:
结语
无论是速度还是稳定性,新版的TUIC体验都非常良好,同时由于自带多路复用和0-RTT的特性,日常使用中延迟也很低。但客户端支持还不是很多,目前:
- Windows可以使用Clash Verge.
- iOS可以使用Shadowrocket或Stash.
- 软路由可以使用OpenClash.