使用基于QUIC的高性能协议TUIC代理并使用clash分流
介绍
基于 QUIC 协议构建的精细 TUICed 高性能代理,TUIC从一开始就是基于QUIC协议设计的。它可以充分利用QUIC带来的优势。
TUIC 的目标是即使在质量较差的网络上也能提供高度可用和高效的代理,并尽可能减少握手延迟。
TUIC 使用 QUIC 的流机制将所有任务多路复用到单个 QUIC 连接中。这意味着除非QUIC连接被强制中断或者在最大空闲时间内没有任务,否则协商新的中继任务不需要经过QUIC握手和TUIC认证的过程。
服务端
配置一个json文件, 比如命名成config.json
并放进你的服务器的/etc/tuic/
下
{
"port": 8080,
"token": ["xxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxx"],
"certificate": "/etc/ssl/fullchain.cer",
"private_key": "/etc/ssl/privkey.key",
"ip": "0.0.0.0",
"congestion_controller": "bbr",
"max_idle_time": 15000,
"authentication_timeout": 1000,
"alpn": ["h3"],
"max_udp_relay_packet_size": 1500,
"log_level": "warn"
}
certificate
和private_key
是需要依赖X.509 certificates
证书格式的字段, 可以使用github.com/est31/rcgen工具生成对应的你的域名私有证书, 注意填写绝对路径. 如果你有CA
机构颁发的证书也可以直接使用
申请证书
certbot certonly \
--standalone \
--agree-tos \
--no-eff-email \
--email [email protected] \
-d tuic.example.com
保存证书到指定位置
cat /etc/letsencrypt/live/tuic.example.com/fullchain.pem > /etc/ssl/fullchain.pem
cat /etc/letsencrypt/live/tuic.example.com/privkey.pem > /etc/ssl/privkey.pem
端口我这里使用的是8080
端口, 如果你的443
端口方便的话, 也可以使用443
端口
去仓库地址Releases · EAimTY/tuic · GitHub找到对应的你的系统下载二进制文件, 然后放入你的服务器的/usr/local/bin/
目录下, 接着输入命令给予执行权限, 注意是下载server
服务端文件, 不是下载客户端文件
sudo chmod +x /usr/local/bin/tuic
守护进程
我们再写一个service
文件创建一个守护进程启动服务端, 我这里系统是Ubuntu
, 格式大概如下, 其他版本系统同理
sudo touch /etc/systemd/system/tuic.service
[Unit]
Description=tuic
After=network.target nss-lookup.target
[Service]
User=root
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
WorkingDirectory=/etc/tuic
ExecStart=/usr/local/bin/tuic -c config.json
Restart=on-failure
RestartPreventExitStatus=23
[Install]
WantedBy=multi-user.target
使用vim
编辑保存后退出, 接着执行命令安装和启动服务.
sudo systemctl enable tuic.service
sudo systemctl reload tuic.service && sudo systemctl restart tuic.service
查看状态
sudo systemctl status tuic.service
显示active
表示启动顺利之后就可以配置客户端了
客户端
在你的本地电脑上创建一个客户端config.json
文件
{
"relay": {
"server": "example.com",
"port": 8080,
"token": "xxxxxxxxxxxxxxxxxxx",
"ip": "10.10.10.10",
"certificates": ["fullchain.cer"],
"udp_relay_mode": "quic",
"congestion_controller": "bbr",
"heartbeat_interval": 10000,
"alpn": ["h3"],
"disable_sni": false,
"reduce_rtt": false,
"request_timeout": 8000,
"max_udp_relay_packet_size": 1500
},
"local": {
"port": 8888,
"ip": "127.0.0.1"
},
"log_level": "info"
}
server
字段是你的服务器域名, port
是端口, token
是你的密码字段, ip
是你的服务器ip, certificates
是你的密钥对的公钥, local
字段描述了你本地的socks5
服务器的信息, 端口是8888
, 监听地址是本地环回127.0.0.1
还是去到仓库的release页面, 下载对应的客户端二进制文件, 放入和config.json
配置文件同级的目录, 接着写一个start
脚本
windows
tuic-client-0.8.5.exe -c config.json
下载对应的windows
客户端文件并重命名为tuic-client-0.8.5.exe
接着把上属的命令行保存并命名为start.bat
双击启动
linux/macos
把对应的Mac
二进制文件下载并命名为tuic-client-0.8.5
并授予执行权限
sudo chmod +x tuic-client-0.8.5
#!/bin/bash
./tuic-client-0.8.5 -c ./config.json
接着把上述的命令行保存并命名为start.sh
接着cd
到这个有执行文件, 启动脚本和配置文件的目录下使用终端执行
./start.sh
如果启动提示信息显示这样则代表启动成功
[2022-10-29T11:11:04Z INFO ] [socks5] Started. Listening: 127.0.0.1:8888
[2022-10-29T11:11:04Z INFO ] [relay] Started. Target server: 10.10.10.10:8080 (example.com)
系统代理
windows下, 打开你的控制面板, 找到Internet选项, 然后找到连接选项卡, 代理按钮, 设置本地系统代理, 选择socks5
协议, 地址填127.0.0.1
, 端口填8888
, 并保存退出, 就可以使用代理服务了
MacOS下, 找到设置, 打开网络, 点击你当前使用的网络, 打开属性, 找到代理, 填写socks5
协议代理信息, 和windows一样, 然后保存退出, 就可以使用代理了.
clash分流
windows
下载clash
见这里, MacOS
系统请下载clashX
直接使用socks5
代理没有分流, 我们使用clash
套接tuic
的socks5
代理, 打开clash
的配置文件增加一个proxies
, 填写socks5
信息
# ...........
- proxies:
name: "tuic",
server: 127.0.0.1,
port: 8888,
type: socks5
# ..............
然后在你的出站类型选择规则, 节点选择, 选择你刚刚配置的tuic
代理就可以搭配clash
的分流使用代理了😎