URL
type
status
date
slug
summary
tags
category
icon
password

一、为什么需要“伪装流量”?
在一些网络环境下(比如公司内网、校园网,或特定地区的网络),我们常常会遇到这些限制:
- UDP / WireGuard / VPN 端口被防火墙阻断
- 只有 80、443 等常规 HTTP/HTTPS 端口能出网
- 甚至连 SSH 连接都不稳定
此时,如果我们能把这些“被封锁”的流量包装进一个看起来正常的 Web 流量中,那么在多数 DPI(深度包检测)或企业防火墙眼中,它就只是一个平平无奇的 HTTPS 请求。
这就是 wstunnel 登场的地方。
二、wstunnel 是什么?
wstunnel 是一个开源工具,允许你把任何 TCP / UDP 流量,通过 WebSocket 或 HTTP/2 通道进行转发。换句话说:
它能让你的任意网络连接,看起来就像是一个普通的浏览器在访问 HTTPS 网站。
项目地址:
🔗 https://github.com/erebe/wstunnel
三、工作原理(通俗解释)
可以把它想象成一个“流量信封”:
- 客户端把要传输的数据(例如 WireGuard、SSH、Socks5)装进信封;
- 信封的外层是一个正常的 WebSocket 请求;
- 发给服务器时,外层就被看作是 HTTPS 流量;
- 服务端拆掉信封,再把里面的真实数据转发出去。
原理要点:
- 使用 WebSocket(或 HTTP/2)作为传输层;
- 支持 TLS 加密,看起来就是标准 HTTPS;
- 服务端可限制访问路径与目标,防止滥用;
- 支持 Socks5 / HTTP 代理 / 透明代理;
- 可与 VPN(如 WireGuard)叠加使用。
四、常见使用场景
场景 | 说明 |
🧱 防火墙穿透 | 在只允许 443 端口出站的网络环境下,伪装任意流量为 HTTPS |
🧳 远程办公代理 | 在公司网络中使用 SSH、RDP、VNC 时走 WebSocket 隧道 |
🕸️ WireGuard 封装 | 把 WireGuard UDP 流量包装成 WebSocket 流量 |
🧩 动态代理 | 提供 Socks5 或 HTTP 代理服务 |
🧍♂️ 单机转发 | 仅本地端口转发调试使用 |
五、安装与启动示例
wstunnel 提供了预编译的二进制文件,Linux / macOS / Windows 都可直接下载使用。📦 下载地址:https://github.com/erebe/wstunnel/releases
示例一:TCP 转发(基础示例)
假设你有一台云服务器
example.com你希望把本地流量通过 WebSocket 发到远程,再由远程转发出去。
服务端:
客户端:
现在本地就有了一个 Socks5 代理:
socks5h 表示连 DNS 解析也走代理,防止 DNS 泄漏。示例二:WireGuard 流量伪装成 HTTPS
服务端(监听 WireGuard 端口 51820)
客户端
然后在 WireGuard 客户端配置中:
🔍 记得添加静态路由:
确保连接 wstunnel 的服务器 IP 不走隧道,否则会循环。
六、安全与优化建议
1. 使用真实证书
默认的自签证书容易被识别,建议用 Let’s Encrypt 或自签唯一证书。
2. 设置路径前缀
使用 --restrict-http-upgrade-path-prefix 添加访问密钥,防止被他人利用
3. 注意循环路由
隧道客户端需要给服务器 IP 添加静态路由,否则请求可能会“兜圈子”
4. 调整 MTU
因为封装层的额外负载,建议将 WireGuard MTU 调低到约 1300,避免分片
5. 避免滥用资源
路由器、小机型等内存较小环境可能会出现 OOM,需监控连接数。
七、HTTP/2 与 WebSocket 的区别
wstunnel 支持两种传输层:协议 | 优点 | 风险 / 限制 |
WebSocket | 延迟低、兼容性好 | 容易被识别为 WS 流量 |
HTTP/2 | 多路复用、单连接 | 一些代理/CDN 会缓冲 H2 流量导致延迟 |
一般推荐默认使用 WebSocket (wss://) 模式。
八、常见坑与排查
问题 | 原因 | 解决方案 |
连接成功但无流量 | MTU 过大 | 降到 1300 |
WireGuard 无法连上 | 路由循环 | 添加静态路由 |
隧道断开频繁 | 代理缓存 / 防火墙检测 | 改用 TLS 或增加 keepalive |
浏览器访问无响应 | 缺少路径前缀或证书不匹配 | 检查 --http-upgrade-path-prefix 和证书设置 |
九、进阶功能
- ✅ 支持 mTLS 双向认证
- ✅ 支持 Socks5 / HTTP 代理模式
- ✅ 支持 透明代理(Linux TProxy)
- ✅ 支持 UDP 隧道与超时参数
- ✅ 支持 HTTP 代理穿透(企业代理内网)
更多配置可参考官方文档:
📖 https://github.com/erebe/wstunnel/blob/main/docs
总结
wstunnel 不是传统意义的 VPN,而是一个“伪装层”:它的目标不是提供加密,而是 让流量在受限环境中“看起来正常”。
如果你的网络只能通过 HTTPS 出网、或需要隐藏 VPN 流量的存在,它会是一个非常实用的小工具。
- 作者:NickYam
- 链接:https://i.nickyam.com/article/use-wstunnel-to-disguise-any-traffic-as-websocket
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章





