如何搭建一个基于WebSocket的反向隧道
背景
如何利用VPS构建一个反向隧道?
- 有了一台VPS,但是因为在大陆访问速度慢的原因,所以需要使用CloudFlare加速
- 我需要在外网访问家里的一些服务,所以需要一个反向tunnel,即能够从外网访问内网服务
- 问题是,frp等工具都不太好用,一是直接使用容易被流量识别;二是不支持通过CloudFlare加速
- 还有就是,原本的域名上也有一个博客,所以需要特定path才走tunnel
在上面的限制下,试了好几个工具,最终发现wstunnel能够满足上面的要求。
最终方案画成图就是:
按照图中的方案,我们一步一步搭建。
服务端/VPS
从图中可以看出,在VPS上,我们需要一个nginx,用来:
- 正常访问流量走web服务,特定前缀的websocket流量转发给wstunnel-server
- wstunnel-server从nginx接收数据,由于是本地访问,所以只需要使用ws协议接收
- wstunnel-server需要有一定的认证能力