创建一个加密的代理服务器

2011年6月9日 | 分类: 翻墙相关 | 标签: , ,

众所周知,在大陆不能自由的访问互联网,为此人们想出了各种办法,真是八仙过海各显神通,然而,很多办法是既绕圈子,又没有普遍应用的意义,使用ssh tunnel实际上效率是很低的,使用GAE是朝不保夕的,使用VPN是时快时慢的,因为ssh不是为了这个目的而开发,GAE也不是,VPN就更不是为了高速访问而设置的了,今天我们要介绍的是具有普遍的意义的代理服务器squid和stunnel,力求让我们的穿越达到一个保持高速访问,但又经过了加密的境界。

其实这二者组合并不新鲜,也并不罕见,下面说说这个组合的 应用条件:

1,一台运行在自由世界的服务器,或者虚拟机,比如美帝或者香港。
2,这台服务器上安装了squid,或者可以安装squid。
3,当然,你必须要可以从中国大陆连接它。

首先我们来配置安装好的squid,很多旧的案例使用stunnel加密squid端口,然后在客户机上使用stunnel解密,这是多走了一个弯 路,squid自身已经支持加密的代理方法,在服务器上,我们根本就不需要运行stunnel,例如我们要将这个加密的代理运行在服务器IP地址为 216.218.186.2的443端口,具体配置参数如下:

https_port 216.218.186.2:443    cert=/etc/squid/hnair.com.crt key=/etc/squid/hnair.com.key

其中,hnair.com.crt和hnair.com.key是使用openssl生成用于加密的数字证书和密钥,关于自行生成数字证书的方法,可参考如下:

openssl req -new > hnair.com.csr

openssl rsa -in privkey.pem -out hnair.com.key

openssl x509 -in hnair.com.csr -out hnair.com.crt -req -signkey hnair.com.key -days 3650

然后启动squid即可。

接下来,我们需要对客户端进行配置,不管你是Windows还是Linux,都可以到这里下载:ftp://ftp.stunnel.org/stunnel/

将相应的stunnel压缩包解压缩或者安装,添加一个配置文件(stunnel.conf)至程序的目录:

client = yes
[ssl2http]
accept = 127.0.0.1:8080
connect = 216.218.186.2:443

注意,有些Linux发行版中,例如Ubuntu,在进行apt-get安装stunnel的时候,stunnel v3和v4都会安装上去,此时应该使用stunnel4来运行,直接运行 /usr/bin/stunnel4 即可,在Windows中不存在这个问题。

然后,我们将浏览器的代理服务器设置为本机的8080端口,也就是127.0.0.1:8080,即可使用一个加密的通道,自由的访问互联网了,实 际上,这个方法被广泛应用在XX功的网站上,只不过他们用的是Apache做反向代理,因为上面还有他们的网站,虽然总是胡说八道来着,由于我们不需要在 上面运行网站,所以squid代理服务器是最佳选择。

我很好奇为什么那么多人在卖ssh代理,却没有人卖加密的squid,在squid上添加用户身份验证,即可达到类似的效果,究其原因,其实还是有两个:

第一,ssh代理可以实现socks请求转发,有些应用可能需要。

第二,ssh代理本身效率不高,可以防止用户滥用,流量超荷,而加密的squid如果没有流量限制,那显然是一场悲剧。

原文http://bbken.org/2011/05/16/5661/

  1. koi
    2011年6月9日19:14

    这个改版界面很好

    • iGFW
      2011年6月9日22:01

      谢谢反馈,感谢支持

  2. xa
    2011年6月9日12:55

    实际上差别很小,
    在代理服务器到网站的延迟和丢包率很高或是下载速度很慢时才会有差别。
    而且在代理服务器上开squid,
    再用ssh把本地端口转发到3128可以实现相同的效果……
    plink里把-D去了加上“-L 1080:服务器地址:3128”就可以了

    • iGFW
      2011年6月9日13:12

      嗯,貌似那个Puff和psiphonx都是这么做的,无界现在好像也是这么干的。
      最重要的能找到的免费ssh代理很多而Stunnel加密的很少(除了动҉态҉网҉的)。