overtls-网络代理-工具链


这是一个名为 overtls 的极简 SOCKS5 代理隧道工具,由 Rust 编写,专门设计用于通过 TLS 伪装来绕过网络审查(GFW)(https://github.com/ShadowsocksR-Live/overtls)。

项目定位

  • 语言:Rust(单二进制文件,核心代码仅约 1200 行)
  • 协议:SOCKS5 代理,同时支持 TCP 和 UDP 流量转发
  • 核心思想:TLS 是互联网事实上的数据传输加密标准,GFW 无法全面封禁 TLS 协议。overtls 将代理流量包装在标准 TLS 连接中,使其在统计特征上与正常的 HTTPS 浏览流量无法区分。

工作原理

  1. 客户端与服务器先建立标准 TLS 连接
  2. 代理数据在此加密隧道内交换
  3. 通过一个唯一的 URI 路径(tunnel_path)作为暗号,服务器识别后将流量转发到目标地址
  4. 客户端↔服务器之间是 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 实现加密与流量伪装。