这是一个名为 overtls 的极简 SOCKS5 代理隧道工具,由 Rust 编写,专门设计用于通过 TLS 伪装来绕过网络审查(GFW)(https://github.com/ShadowsocksR-Live/overtls)。
项目定位
- 语言:Rust(单二进制文件,核心代码仅约 1200 行)
- 协议:SOCKS5 代理,同时支持 TCP 和 UDP 流量转发
- 核心思想:TLS 是互联网事实上的数据传输加密标准,GFW 无法全面封禁 TLS 协议。overtls 将代理流量包装在标准 TLS 连接中,使其在统计特征上与正常的 HTTPS 浏览流量无法区分。
工作原理
- 客户端与服务器先建立标准 TLS 连接
- 代理数据在此加密隧道内交换
- 通过一个唯一的 URI 路径(
tunnel_path)作为暗号,服务器识别后将流量转发到目标地址 - 客户端↔服务器之间是 TLS 加密;服务器↔目标网站之间是明文传输
主要特性
| 特性 | 说明 |
|---|---|
| 原生 TLS | 不自定义加密算法,直接使用标准 TLS 证书(Let's Encrypt 等) |
| 流量伪装 | 可置于 nginx/Caddy 反向代理之后,非隧道流量转发到真实网站 |
| 极轻量 | 核心逻辑约 1200 行 Rust 代码 |
| 多架构 | 预编译二进制支持 x86_64、armv7、arm64 Linux |
| 灵活路径 | tunnel_path 支持字符串或字符串数组,便于轮换 |
基本用法
服务端(需要 VPS + 域名 + HTTPS 证书):
overtls-bin -r server -c config.json
客户端:
overtls-bin -r client -c config.json
配置文件(客户端和服务端共用,不相关的配置段会被忽略):
{
"tunnel_path": "/secret-tunnel-path/",
"server_settings": {
"certfile": "/path/to/fullchain.pem",
"keyfile": "/path/to/privkey.pem",
"forward_addr": "http://127.0.0.1:80",
"listen_host": "0.0.0.0",
"listen_port": 443
},
"client_settings": {
"server_host": "123.45.67.89",
"server_port": 443,
"server_domain": "example.com",
"listen_host": "127.0.0.1",
"listen_port": 1080
}
}
一键安装脚本
项目提供了自动化脚本,可自动安装 overtls + nginx/Caddy + 申请 Let's Encrypt 证书:
overtls-install-musl.sh(搭配 nginx)overtls-install-caddy.sh(搭配 Caddy)overtls-install-selfsign.sh(自签名证书,仅测试用)
安全提醒
- 自签名证书:GFW 可能因此标记服务器。如使用,需将根证书
root.crt复制到客户端并在配置中指定cafile,或开启dangerous_mode: true(跳过证书验证——存在中间人攻击风险) - 禁用 TLS 选项:
disable_tls仅用于测试,生产环境切勿使用 - 唯一隧道路径:务必使用复杂、唯一的
tunnel_path,可预测的路径容易被特征识别并封锁
本质上,overtls 是 ShadowsocksR 中 "over TLS"(oT)组件的精简 Rust 重实现,去除了 SS/SSR 层,纯粹依靠标准 TLS 实现加密与流量伪装。