老E的博客

  • 首页
  • 关于
  • 技术应用
    • VPS相关
    • AI相关
    • 盒子相关
    • 其他
  • 订阅Youtube频道
  • 网络加速
    • expressvpnNo.1 ExpressVPN
    • 最佳免费VPN-PrivadoVPN
    • NordVPN
    • 廉价王者-Surfshark
    • PrivateInternetAccess
    • 解锁一切-PrivateVPN
  • 公益资源
    • AI导航
    • 工具下载
    • Docker镜像加速
  • 友情链接
    • tickcloudTickcloud
老E的博客
专注记录并分享跨境技术应用及随想
  1. 首页
  2. 技术应用
  3. VPS相关
  4. 正文

TUIC安装部署与客户端应用

2023年7月4日 4983次阅读 0条评论
clawcloud
expressvpn best vpn
privado vpn
surfshark vpn
private vpn
pia vpn
nord vpn

QUIC 全称 Quick UDP Internet Connection,是最早由 Google 提出的使用 UDP 进行多路并发传输的协议。QUIC于2012年实现并部署,2013年随着实验范围的扩大而公开发布,并向IETF描述。QUIC协议的基本原理和前世今生在此略过,“Over UDP”应该算是协议核心内容,具体内容可参考google官方文档(https://www.chromium.org/quic/)。

TUIC作为较新的代理工具,最新release版本(1.0.0)支持Quic v5协议,TUIC旨在充分利用quic v5的协议特性,设计核心就是减少握手造成的网络往返时延( rtt )。同时,TUIC实现了自身的协议,其详细设计和协议原理项目仓库均有介绍(https://github.com/EAimTY/tuic/blob/dev/SPEC.md)。相较Hysteria,TUIC不会做超量发包处理,不会造成flood attack的特征判断。老E在一台开设在日本的VPS上进行了部署,实际使用主观上认为相比Vless、Trojan等有一定的提升,2天测试性高频使用本地未出现断流现象,也没有引发服务商监控异常。

1.下载tuic(v5)并赋权

Tuic开源应用github项目主页及release下载页面如下:

https://github.com/EAimTY/tuic
https://github.com/EAimTY/tuic/releases/tag/tuic-server-1.0.0

使用如下命令新建目录,并将tuic下载至指定目录。

mkdir -p /usr/local/sbin/tuic
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/sbin/tuic/tuic-server && chmod +x /usr/local/sbin/tuic/tuic-server

2.创建并编辑tuic配置文件

在创建tuic配置文件阶段,账号、密码可随机生成,也可手动指定。如下:

port=443
uuid=$(cat /proc/sys/kernel/random/uuid)
passwd=$(date +%s%N | md5sum | cut -c 1-12)

使用如下命令创建tuic配置文件,或者创建空文件后,使用vim等编辑,再将EOF包裹的配置文件内容粘贴导入至配置文件中。

cat << EOF > /usr/local/sbin/tuic/config.json
{
    "server": "[::]:$port", #自定义
    "users": {
       "$uuid": "$passwd" #自定义
    },
    "certificate": "/usr/local/sbin/tuic/fullchain.pem",
    "private_key": "/usr/local/sbin/tuic/privkey.pem",
    "congestion_control": "bbr",
    "alpn": [
       "h3",
       "spdy/3.1"
    ],
    "log_level": "warn"
}
EOF

3.安装配置证书

下载、安装acme.sh,VPS可在standalone模式下采用http验证方法生成、获取并安装证书至指定位置。

(1)公网VPS生成、获取证书

VPS standlone模式获取证书,为确保验证过程顺利,需要提前打开安全策略组、防火墙放行80端口或其他--httpport自定义端口。

#ufw allow 80/tcp
setcap 'cap_net_bind_service=+ep' /usr/bin/socat
curl https://get.acme.sh | sh -s email=“$email”
source ~/.bashrc
acme.sh --server letsencrypt --issue -d ${domain} --standalone -k ec-256 --insecure
#ufw delete allow 80/tcp

(2)其他环境下生成、获取证书

export CF_Email="$email"
export CF_Key="$api_key"
acme.sh --server letsencrypt --issue --dns dns_cf -d ${domain}

(3)安装证书

acme.sh --installcert -d ${domain} --key-file /usr/local/sbin/tuic/private.key --fullchain-file /usr/local/sbin/tuic/fullchain.pem

4.创建系统服务配置文件

创建系统守护进程服务描述文件,以便设置tuic开机自启动,服务描述文件名可自定义、扩展名和位置不可自定义。也可新建tuic-server.service空文件,使用vim等编辑,将EOF包裹的内容粘贴导入。

cat << EOF > /etc/systemd/system/tuic-server.service
[Unit]
Description=Tuic 1.0.0 high-performance proxy built on top of the QUIC protocol
After=network.target nss-lookup.target

[Service]
User=root
WorkingDirectory=/usr/local/sbin/tuic
ExecStart=/usr/local/sbin/tuic/tuic-server -c config.json
Restart=on-failure
RestartPreventExitStatus=1
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

5.设置开机自启动并启动tuic-service服务

systemctl daemon-reload
systemctl enable tuic-server.service
systemctl start tuic-server.service
#ufw allow ${port}
#ufw reload

6.客户端配置及应用

目前,支持Tuic的客户端代理在桌面端可以使用加载tuic模块的V2rayN、Clash,移动端包括了小火箭、Sagernet等。无论哪个客户端,其核心配置主要是如下8项:

    • 服务器:$domain
    • 服务器地址:$VPS_IP
    • 服务器端口:443
    • UUID: $uuid
    • 密码:$passwd
    • ALPN:h3
    • UDP 转发模式:QUIC
    • 拥塞控制:bbr

基于此,可导入V2rayN的客户端配置文件tuic-v2ray-client.json内容如下:

{
    "relay": {
        "server": "${domain}:443",
        "uuid": "$uuid",
        "password": "$passwd",
        "ip": "$ip",
        "congestion_control": "bbr",
        "alpn": ["h3"]
    },
    "local": {
        "server": "127.0.0.1:10080"  #本地做分流处理的代理端口,如SwitchyProxy插件等
    },
    "log_level": "warn"
}

老E使用的是ios 小火箭,手动输入后直接连接。桌面端V2rayN导入上述配置文件,应该可以顺利连接成功。Clash的话,可找一份参考配置文件,替换以下3部分(proxies、proxy-groups、rules)或直接用以下内容作为tuic-clash-client.yaml最简配置文件,注意yaml文件的缩进要求。

{
  proxies:
    - name: tuic-server
      server: $domain
      port: $port
      type: tuic
      uuid: $uuid
      password: $passwd
      ip: $ip
      alpn: [h3]
      disable-sni: true
      reduce-rtt: true
      udp-relay-mode: quic
      congestion-controller: bbr

  proxy-groups:
    - name: Proxy
      type: select
      proxies:
        - tuic-server
      
   rules:
    - GEOIP,CN,DIRECT
    - MATCH,Proxy
}

至此,我们就将服务端、客户端都安装部署完成,整体上6个步骤还可适当调整优化。传统的TCP协议是建立在操作系统层和中间路由模块之上实现的,握手阶段信息很容易被这些中间模块篡改而变得不安全,也就是说,无论套多少层TLS,无法避免初始的握手阶段的GFW识别、拦截。QUIC协议是在UDP之上的用户级(如浏览器)中实现的,并且通过禁用SNI,握手包(QUIC Hello)中的关键信息在传输链路上相对不容易被识别和修改,QUIC协议天然支持5元组(协议、源地址和端口、目标地址和端口)可以更改中间连接,因此QUIC/TUIC可以提供更安全隐蔽的网络数据传输。

QUIC连接还可以跨网络迁移,这意味着QUIC连接可以通过宽带有线进行握手,然后在用户离开热点后迁移到移动网络,这是协议特性支持的,不是“装裱”、“缝补”的结果。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: proxy vpn vps 代理 翻墙 虚拟专用网络
最后更新:2024年6月2日

老E

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

站内搜索
归档
  • 2025 年 5 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 10 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 6 月

Copyright ©2023-2025 Appscross. All Rights Reserved.