SSH翻墙集群
SSH动态代理是国内较为常见的翻墙方法。正如SSH隧道简介所说,它存在不少有优点。
然而在实际使用中,它存在如下缺点:
- 与PPTP等VPN协议相比,它的连接不稳定。前者应该具备协议级断线重传机制。
- 基于廉价VPS,导致它的连接不稳定。而且廉价VPS容易掉线,有时需要用户自己找在线客户修复,进一步延长了掉线时间。
- 由于上述缺点,不适合小型公司多人使用。
在大概2年前,我摸索出SSH动态代理集群的办法。并将之部署于我所服务的公司,成功负载了20-30人日常翻墙学习与工作的需求。
原理
SSH动态代理,即为SOCK5代理,所以我们需要的是SOCK5集群。
若搜索socks 5 load balance不难发现一些有用信息:
What is the best way to load balance multiple sock5 proxys on seperate VM’s in the same datacenter?
我将分别介绍3种方法搭建SOCK5集群:
- 利用第三方模块nginx_tcp_proxy_module。
- Nginx 1.9开始支持TCP Load Balancing。
- HAProxy
关于SSH动态代理的配置方法,请参看AutoSSH简介
nginx_tcp_proxy_module的配置方法
Ubuntu的Nginx并没有将nginx_tcp_proxy_module编译进去。为了简化安装,我基于Ubuntu的Nginx包,做了Nginx的PPA:
- 升级Nginx版本
- 加入nginx_tcp_proxy_module
添加我的PPA
sudo add-apt-repository ppa:likemartinma/net
sudo apt-get -y update
若未安装nginx,则
sudo apt-get install -y nginx
若已安装nginx,则
sudo apt-get -y upgrade
在/etc/nginx/nginx.conf中,增加如下内容: