客户端¶
tuic-client 是 TUIC 协议的客户端实现,提供本地 SOCKS5 服务与 TCP/UDP 端口转发。它保持精简,只包含一个可用 TUIC 客户端所需的核心能力;如需 HTTP 入站、负载均衡等功能,可自行实现或选用其它实现。
本页介绍客户端的安装、启动与配置。服务端请见服务端;最小配置与验证步骤见快速入门;完整示例与字段说明见配置编辑器。
安装¶
预编译的二进制文件可在 GitHub Releases 获取,也可以使用 Cargo 安装:
从源码构建需要 Rust 1.85.0 或更高版本以及 Git,详见快速入门。
启动¶
默认按需连接(lazy = true):仅在收到第一个代理请求时才建立 QUIC 连接;连接中断后默认自动重连。客户端在 local.server 暴露 SOCKS5 服务,将应用指向该地址即可,例如:
配置¶
配置文件格式根据扩展名判断:
- TOML:
.toml(推荐) - JSON5:
.json、.json5(兼容旧配置) - YAML:
.yaml、.yml
扩展名无法识别时客户端会报错退出;可用环境变量 TUIC_CONFIG_FORMAT(toml、json、json5、yaml、yml)显式指定格式。旧的 [relay] 段会在解析时自动迁移到顶层连接字段与 [tls],但新配置应使用下文的当前写法。
其中旧 [relay] 的传输调优字段按 [backend] mode 迁移:congestion_control、send_window、receive_window 会写入实际选中的后端([backend.quinn] 或 [backend.quiche]);initial_mtu、min_mtu、gso、pmtu 在 quiche 后端下没有对应字段,仍保留在 [backend.quinn],并会输出一条点名这些键的警告。
TLS 证书与 SNI¶
[tls] 下的三个开关由 quinn 后端(默认后端)实现,作用如下:
disable_sni = true:不在 ClientHello 中发送 SNI 扩展,主机名不再泄露给中间人;证书仍按sni(未设置时按server的主机名)校验。若server是 IP 字面量且未设置sni,请改用sni指定证书中的名称。disable_native_certs = true:不使用平台信任库,改用内置的 Mozilla 根证书集合;配合certificates可只信任自建 CA。certificates = ["/path/to/ca.pem"]:追加信任的 CA 证书文件(PEM,可含多个证书),用于校验自签或私有 CA 签发的服务端证书。文件不存在或解析不出证书时客户端会在启动时直接报错。
skip_cert_verify = true 仍然优先于上述配置:它完全不校验证书,仅供测试或明确可信的环境使用。
[backend] mode = "quiche" 时这三个 TLS 开关暂无对应实现:设置它们会输出一条警告说明其在 quiche 后端不生效,而不是静默忽略。
完整示例¶
完整且带注释的客户端配置由配置编辑器的预览区维护:在左侧表单填写参数,右侧实时生成配置,逐行悬浮或聚焦可查看字段说明,并同步显示校验结果与复制、下载入口。
编辑器默认输出 TOML,也可切换为 JSON 或 YAML,并可直接复制或下载。它只输出已接入运行逻辑的字段;ipstack_prefer、timeout、[proxy]、dual_stack 等预留字段不会被生成。
端口转发¶
除 SOCKS5 外,客户端还可以把本地端口直接转发到远端目标:
[local]
server = "127.0.0.1:1080"
[[local.tcp_forward]]
listen = "127.0.0.1:8080"
remote = "example.com:80"
[[local.udp_forward]]
listen = "127.0.0.1:5353"
remote = "8.8.8.8:53"
timeout = "60s"
默认情况下,服务端会阻止回环与私有目标;如需访问内网,需在服务端配置路由与访问控制。
许可证¶
本仓库代码依据 GNU General Public License v3.0 or later 发布。欢迎提交 Issue 与 Pull Request。