由于访问Google、Facebook、Dropbox等网站的途径被封锁,实验室需要一个能够直连外网的代理Proxy。因此,配置了stunnel+squid的代理。需要一台可以连接外网的VPS和能够连接VPS的实验室服务器。
stunnel的优点和shadowsocks一样,但是却比shadowsocks更安全,stunnel可以来ssl证书,比shadowsocks的密码认证更安全,也能有效的避免中间人攻击,把你的shadowsocks数据拦截下,然后暴力破解应该是易如反掌.
squid安装
单独的stunnel是无法使用的,必须配合http代理,如squid
ubuntu linux服务器端安装:
squid默认代理端口号3128,可自行修改,默认此代理只能本地有权限访问
stunnel的证书和服务器端配置
生成自定义证书:
|
|
stunnel服务器对客户端证书的验证,stunnel的配置
|
|
- 编辑/etc/stunnel/stunnel.conf文件找到 chroot = /var/lib/stunnel4/这一行,假如有注释把注释去掉
- 开启调试模式,/etc/stunnel/stunnel.conf文件找到 debug = 7去掉注释,添加foreground = yes到debug = 7下面
配置证书
|
|
接下来编辑/etc/stunnel/stunnel.conf
- 找到cert = /etc/stunnel/mail.pem修改成cert = /etc/stunnel/stunnel.pem,设置cert证书路径
- 找到verify = 2去掉注释改成verify = 3,开启证书有效性验证
- 找到CApath = /certs有注释去掉注释,这个目录是建立在chroot = /var/lib/stunnel4/基础上,实际就是/var/lib/stunnel4/certs目录,也就是验证证书的目录
- 找到CAfile = /etc/stunnel/certs.pem,有注释去掉注释,并改成之前生成自定义证书的目录:CAfile = /etc/stunnel/stunnel.pem
关于证书的全部设置结束
配置stunnel的端口和squid的http代理
编辑/etc/stunnel/stunnel.conf,找到
从这里一直文件结尾,全部删除,添加如下内容:
简单解释:[https]这个https可以随便写, 3128是squid的http代理默认端口,stunnel将使用这个代理,也就是127.0.0.1:3128. connect部分是stunnel客户端将要连接的代理服务器地址和端口号,端口号443可自信随意修改.
stunnel服务器端的所有配置完毕,重新启动:
Stunnel客户端配置
最后是配置stunnel客户端:本人也是ubuntu系统 ubuntu desktop
安装stunnel
|
|
添加默认配置文件
|
|
开启stunnel调试模式,参考上面stunnel服务器端配置
配置证书
把上面stunnel服务器端生成的证书,复制一份到本地
可以这样1scp 你的用户名@服务器地址:/etc/stunnel/stunnel.pem /etc/stunnel/stunnel.pem编辑本地/etc/stunnel/stunnel.conf文件,设置证书路径:
找到cert = /etc/stunnel/mail.pem
修改成cert = /etc/stunnel/stunnel.pem
- 找到123; **************************************************************************; * Service definitions (remove all services for inetd mode) *; **************************************************************************
一直到文件结尾全部删除,添加如下内容:
简单解释:client = yes表示stunnel是运行的是客户端模式,默认没有代表服务器模式
accept = 127.0.0.1:8080当然就是浏览器需要设置的http代理端口了
connect = stunnel服务器地址:443,请自行修改成你的服务器地址和上面设置的端口号44
重启stunnel客户端
|
|
假如所有一切运行正常,然后可以关闭调试模式.注释 foreground = yes 一行
ubuntu命令行测试非常简单:本地终端执行
若有失败错误,请自行查看调试信息!!
开机自启动可参考:/etc/stunnel/README文件所描述的,把stunnel服务器端和客户端的/etc/default/stunnel4文件里面的ENABLED设置成1