搭建HTTP-HTTPS代理服务器来翻墙

Posted by AlstonWilliams on February 17, 2019

这一段时间,打算尝试一下Kubernetes和Mesos,因为Docker自带的Swarm集群功能有限.然而,各位都知道,在我们大中华,很多国外的内容都是被封锁的.比如,Kubernetes的Docker镜像是在Google Cloud Platform上的.这就比较尴尬了.

在物理机上,我们通过ShadowSocks代理,下载镜像,倒也可以.然而,在开发环境下,我们需要用到Minikube这个工具时,就麻烦了.因为这个工具实际上会在VirtualBox中为我们新建一个虚拟机,然后在其中安装各种需要的东西.其中有一步就是从gcr.io上拉相应的镜像.一般情况下,我们很容易就卡死在这一步.因为gcr.io被墙了.

所以,本想在海外搭个HTTP/HTTPS代理,然后配置Docker走这个代理.然而,还是出了一些问题.因为大中华的GFW会在我们访问国外的内容时,进行过滤,所以我们直接通过这些HTTP/HTTPS代理的话,请求就会被GFW拦截.

那我们该怎么办呢?

一种是通过Stunnel给代理加上一层加密层.然后在本地代理客户端中配置加密后的代理,来实现翻墙.第二种方法就是先在国内设置一个代理,然后在这个代理节点上,安装ShadowSocks客户端的命令行版本,然后通过Polipo,将SS转换成HTTP/HTTPS代理.

但是第二种方法,在我以前尝试的时候,出现了一个打开文件太多的错误.具体是什么错误忘记了,大体就是这个.然后我就放弃了.其实现在看来,还真的就这种方法靠谱.因为代理占用资源多的问题,在上面的两种方式中,都会遇到.我们还是需要通过一个脚本来定期重启代理,释放它占用的宝贵的资源.

上面的几种方式,基本原理都是通过加密来绕过GFW的封锁.

下面我介绍两款这几天我尝试过的HTTP/HTTPS代理.

第一款是Tinyproxy,这款代理软件,配置起来很简单,基本上是开箱即用.当然,它也有缺陷,就是不支持HTTPS代理.而现在国外的网站基本上都需要走HTTPS代理.

另一款就是Squid.这款代理软件,功能强大.可以配置反向代理等.而且,最主要的时,它支持HTTPS代理.但是,相应的,它的配置也稍微复杂一些.

需要注意的时,我们这样直接配置的HTTPS代理,是不能拿来翻墙的.要想翻墙,还得跟上面介绍的那样,加Stunnel.

这两款代理软件的具体使用方法,我这里就不介绍了.感兴趣的读者,请自行Google.

还有一点需要注意的是,代理要添加身份验证.我昨晚刚配置的代理服务器,今早晨一看日志,就能看到很多访问日志.而且,从网络上也能查到我的这个代理的ip以及端口号.吓得我赶紧把代理关了.

在Squid上加Stunnel实现翻墙,有点麻烦.我捣鼓一天了,还没有解决好.我们能看到两个Stunnel之间确实建立连接了,也确实走的就是代理的那条路线.但是一访问Google的服务,还是不好使.其他的网站都是都还可以.虽然有的速度会慢点.不知道什么原因.

下面贴两个网址,都是通过Squid配合Stunnel实现翻墙的文章: http://www.it610.com/article/14174.htm

http://www.5941740.cn/2015/07/17/%E4%BD%BF%E7%94%A8squid-stunnel%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84%E7%BF%BB%E5%A2%99%E6%9C%8D%E5%8A%A1%E5%99%A8/