2012年12月12日星期三

翻墙需求分析与工具组合

需求

  1. 最起码要能翻嘛!
  2. 智能判断一个网站要不要翻
    1. 按规则
    2. 按实际情况:先直连,直连不同才翻——测试法
  3. 负载均衡: 多个翻墙软件,选最快的一个上
  4. 缓存网页
  5. 分享服务:让局域网的用户或更大范围的用户能通过我的服务上

工具

由于翻墙界的重要成员——自由门只能在windows下运行(在Linux下无法运行或非常不稳定或翻墙能力大大减弱),所以本文的软件基本都倾向于使用windows里可用的软件。

需求1:可以用自由门、无界、gae、tor、ssh、vpn等等。

自由门、无界、gae、tor、ssh组合能力较强,可以和其他软件配合;vpn较差。

需求2:这一般是在浏览器或浏览器插件端实现的。

需求2.1:静态规则比较简单, 可以用pac文件(用javascript写规则),几乎所有浏览器都原生支持。也可以用浏览器插件定义规则,例如火狐的autoproxy、FoxyProxy Standard。

功夫网千变万化,规则需要更新。更新文件的方法太多了,本文不讨论了。

需求2.2:wallproxy疑似有这个功能,但他只能用gae翻墙,没有组合能力。

需求3:当然就是负载均衡软件了。

HaProxy虽出自linux,但因为是开源的,所以可以编译成windows版本。jiedushi提供了一个1.3.20版的windows程序。《在Windows里安装运行HAProxy【cygwin法】》解释了在Windows下编译HAProxy的方法,文末也附带有编译好的1.4.24版Windows程序。

但是要注意,翻墙工具(代理服务器)所用的协议有三类:http、socks4、socks5。socks4的比较少了,用http的比较多,如自由门;socks5比如ssh和tor。


不同协议的翻墙软件很难换着用。HaProxy可以把使用相同协议的翻墙软件编为一组,共同来服务一个请求;但是不能把tor和自由门编为一组。

listen fq 127.0.0.1:9999
mode http
balance roundrobin 
server telex 127.0.0.1:8888  weight 3 check inter 10000
server toonel 127.0.0.1:8080  weight 3 check inter 10000

此片段令HaProxy把127.0.0.1:9999收到的请求交给telex和toonel中的一个,协议是http。

人们通常会用自由门之类的免费软件,也可能买了ssh,两者分属不同的组,还是有点不舒服。socket属于底层,http属于应用层,Privoxy可以把http请求转为Socks请求。(其他软件可能也可以,比如CCProxy。它安装文件4.4M可试用;Privoxy500kb,自由软件)

有多个翻墙软件,想要对它们负载均衡,请参见《负载均衡翻墙详细篇》。

没有评论: