WSS就是Websocket Secure的缩写,WS协议和WSS协议两个均是WebSocket协议的scheme,WS是非安全的,WSS是安全的,就好比HTTP协议和HTTPS协议的差别,服务器网址可以直接作为Websocket URL。WS/WSS协议的特点是建立在TCP协议之上,与HTTP(S)协议有良好的兼容性、通用性,握手时不易被屏蔽,数据相对轻量,实时通讯,且不限制同源,客户端可以与任意服务器端进行通讯。本文即使用自用一键脚本在一台VPS上搭建多个WSS协议代理节点,可用于流量代理与测试。
1.先决条件
要搭建代理节点仅需要一台VPS。没有的可参考以下博文及相应视频分享开通一台免费的VPS,Azure B1S、AWS EC2等均可。搭建WSS代理节点,一般不会收到大厂风控警示,也不会触发运营商流控策略。
老E也会陆续提供Hysteria2和Naivyprxoy的自用脚本,但相对WSS(无论用什么工具搭建),都更为复杂,除了Hysteria/Hysteria2短时间内所带来的传输速度上的提升,对于普通用户并不会有全面的直观体验升级,在VPS服务商、运营商层面的风险则显著增加。
2.脚本下载
本文使用的自用脚本使用了开源的gost和wstunnel最新版本,IPv6优先,在VPS未配置IPv6或IPv6地址无效(无法连通)的情况下会自动切换为IPv4代理节点的搭建。有关gost、wstunnel等工具的介绍laoE在前期视频分享及博文中已作介绍,不再重复。除基本的wss隧道外,两者目前都支持基于TCP、UDP、socks5的反向代理,需要了解工具详细信息的可自行至以下项目主页查阅。
https://github.com/go-gost/gost https://github.com/erebe/wstunnel
脚本可直接在本站首页顶部点击『工具下载』处下载。也可以直接登录VPS后拷贝运行如下指令下载并运行。
curl -sSL https://appscross.com/as-tools/pub%20Tools/wssproxy/wssproxy.sh -o wssproxy.sh && bash wssproxy.sh
3.安装WSS代理节点
下载完成后,可以修改权限为755直接运行,或通过bash解释调用。WSS自动化安装管理脚本默认IPv6优先,如果VPS没有配置IPv6或IPv6地址无法连通的情况下,脚本会自动切换为IPv4。整个安装过程完全自动化,用于安全验证的随机UUID可进行查阅。
仅需注意一点是,UUID在脚本中为自动生成,可通过脚本首页界面的『查看WSS代理服务信息』,在分别按照gost和wstunnel显示信息的最后行,为客户端使用的命令,其中包括了随机UUID。随机UUID作为安全验证的重要环节,gost、wstunnel中均为路径参数,其中wstunnel是通过upgrade header实现的,配合前置代理分流,可以实现回落、防探测等功能,而且并不需要作TCP层的Upstream定义。
如果前置nginx,可以在充当代理的vhost(server)nginx配置文件定义中添加以下内容,如图所示。需要特别提示的是,一个接口的端口(TCP4或TCP6)只能用于一项服务的监听,nginx使用TCP4 443,wss代理如果也希望使用443端口,那么就只能使用TCP6的443端口,不能重复使用TCP4 443。端口复用也不可能做到两项服务同时在同一接口监听同一端口。
结合上图,注意以下几点即可:
- location之后标识路径(path)的不包括“/”的字符串就是脚本生成的UUID
- proxy_pass反向代理本机的端口号就是基本安装、启动的WSS代理监听端口
- proxy_pass反向代理采用的要和后端匹配,ws<->http,wss<->https
- 上述WSS代理监听端口无需额外配置安全组、列表或防火墙
- 代理客户端连接nginx server块中定义的vhost监听端口(例如443)
4.标准的HTTPS代理节点
尽管WS不等于HTTP、WSS也不等于HTTPS,但采用老E的自用脚本搭建的WSS节点,结合nginx的微小配置,就化身为一个标准的HTTPS代理机场。无论在桌面端还是移动端,几乎所有比较流行的代理客户端工具都是支持HTTPS协议节点的。这里仅以nginx为例,关闭安全组/列表的代理服务监听端口,直接拷贝以下代码至网站配置文件server块内,由nginx反向代理本机WSS节点服务,重启后即可连接https节点。
location /<your-uuid> { proxy_pass https://127.0.0.1:<port>; #proxy_pass https://[::1]:<port>; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; }
同时,如果要保障灵活性,可以配置VPS安全组/列表放行WSS/WS端口,从而使得客户端可以选择连接后端的WSS或前置的HTTPS节点,通过脚本一键安装部署完成后,IPv4/6双栈应用可以实现1台VPS上的4个WSS代理节点。
文章评论