各种代理技术使用心得及其比较

 
教育网到公网,以及国内网到国外网,网关都进行了限制,所以不得不使用代理。
于是这几天一直在研究翻墙和打洞。

1. ssh port forwarding
首先是ssh端口转发技术,刚把这项技术试用成功时,着实让我兴奋了好久。
它的大致原理就是先建立一个到远程服务器的连接,这个ssh连接就相当于一个隧道,
或者对于防火墙来说就是被打了一个洞。把本地某应用程序入firefox的代理设置为本机IP和一个给定的port,例如127.0.0.1:4444. 那么firefox发包时就全扔给了127.0.0.1:4444. 而对于这个ssh连接来说,只要有数据包来自本地的4444端口则把它传送给远端,远端再发送给目的地址(注意:远端的sshd_config中如果把转发选项设为no则不能实现端口转发)。返回的数据包过程相反。这样做的好处就在于本地和远程服务器之间用的是ssh连接,数据已经加密,中间经过的任何一个地方都看不到隧道中传输的内容。只要保证远程ssh服务器访问网络的安全性,就可以保证整个链路的安全。
具体地说,要找一个支持tunneling的ssh登录工具如PuTTY,再选一个特定端口号,很轻松的就能实现该技术,当然命令行也行。ssh命令有L、R、D选项。L对应本地端口转发,它可以建一个单向隧道,入口在本地,出口在远端;R对应远程端口转发,建立的隧道的入口在远端,出口在本地;而D表示动态建立,按我的理解是双向的。在PuTTY中就是选的dynamic。
如果把连接设置为允许本地之外的机器访问隧道,则本地的机子就做成了一个代理:其它机子把包扔到自己机子上的那个特定端口,通过隧道发送出去。
这种方法需要你找一台可供ssh登录的服务器,而且服务器的端口转发要打开,这两天想登sourceforge上的服务器,还特意申请了账号,建了项目,结果每次登上去后马上就被退出了,后来根据提示用-t选项,但连接速度很慢,所以没做成功偶就放弃了,sourceforge的shell搞死偶了。不过UC的服务器确实很爽!
(国外的DreamHost主机不错)
优点:本地到远端的通信安全性高;而且支持https;适用于所有能设置代理的应用程序
缺点:远端到外部的安全性不能保证;需要找到一台提供用户ssh登录的远程服务器;登录界面要常开(当然如果用ssh命令也可以作为后台程序运行)

2. TOR
按偶的理解,这个技术的思想就是在应用层上再建立一个TOR网络,每个用户都是TOR网络的一个节点,每个用户都在本地运行一个TOR代理,你发出的包在TOR网络中的传输是透明的,而且是被加密的。
优点:TOR网络内的传输的安全性高;支持https;适用于所有能设置代理的应用程序
缺点:速度确实不咋地;需要客户端

3. CoDeeN
这是普林斯顿搞的一个CDN网络,世界不同国家的大学(为主)和研究机构都贡献节点作为CoDeeN代理,是一个实验性网络。
优点:教育网内的速度很快;代理服务器很多,如果选用外国大学服务器则很方便访问世界各地网络;配置最方便,不需客户端
缺点:仅能作为浏览器的代理;不支持https;服务器经常挂掉

4. GAppProxy
google code上的一个项目,利用Google AppEngine的虚拟服务器做代理,可以用自己的AppEngine,也可以是别人的。估计以前没写用户界面,只有几个脚本,按照那个方法,搞得偶配了半天还是有问题,脚本包含的一个头文件找不着;运行时还要把那个窗口一直打开着。不过现在的版本有用户界面,可以很方便的配置代理地址了,直接用他提供的地址也很快。当然也可以不开用户界面,作为后台程序运行,很方便。
优点:速度快,稳定(用的可是Google的服务器哦);可作为后台程序运行(当然也有客户端)
缺点:不支持443端口的https(虽然宣称安装python 2.6 后就OK,但偶试过,还是不行); 仅支持http;仅支持80端口

5. 花刺等软件
仅仅是一个管理代理地址的软件,省了手动设置的功夫。需要把搜集到的代理地址(如学校网站上公布的代理)添加进地址列表(其实这类软件就是对这个列表进行处理,然后对软件进行代理设置,一点技术含量都没有!)。
优点:可以处理大量的地址并对地址有效性进行验证,不用手动设置代理地址
缺点:实质上不是代理软件,只能说是为代理过程提供服务的软件


后记:
今天又发现了另一个类似于tor的软件ultrasurf,不过比tor配置方便,只有几百K,默认针对IE,而firefox也有xpi插件,速度还可以,在Google中搜索ultrasurf会被GFW封掉,而搜索tor就不会,从这点就可以看出ultrasurf有多牛了。

。。。
刚才发现原来ultrasurf是个反华网站搞的软件,怪不得被封掉。。。


后记2:
今天想起还有个好东西:迅雷。把下载链接贴给迅雷,一般都可以下,而且速度很快!
此外,还可以在 ~/.bashrc 中设置代理

后记3:
刚发现在图形界面中,system选项里面就有代理设置:System --> Preferences --> Network Proxy,这个其实是修改了环境变量 $http_proxy ,和在 ~/.bashrc 中设置 $http_proxy是一样的,注意:是针对http的代理,而不是socks,所以用putty通过ssh建立的代理是不能用在这儿的。

同时,对于tor,还有与之配套使用的几个东西:vidalia、privoxy、firefox。ff就不说了,至于vidalia,它是tor的图形界面,最后是privoxy:(一下一段摘自http://blog.sina.com.cn/s/blog_4fe29ac90100bi8l.html
Privoxy是一种Web代理,为了浏览HTTP必不可少。Privoxy是支持HTTP、SOCKS代理以及HTTP转换为SOCKS代理,Tor支持SOCKS。所以要通过tor浏览HTTP就要通过Privoxy的转换。同时,Privoxy 会删除 Web 请求中危险的报头并且阻挡 Doubleclick 之类的令人厌恶的广告站点,经过调试各种广告、弹出窗口啊都可以过滤。
(下面一段摘自wiki)
Privoxy is a non-caching web proxy with advanced filtering capabilities for enhancing privacy, modifying web page data, managing HTTP cookies, controlling access, and removing ads, banners, pop-ups and other obnoxious Internet junk. Privoxy has a flexible configuration and can be customized to suit individual needs and tastes. Privoxy has application for both stand-alone systems and multi-user networks.

还有:NAT,应该勉强算是一种代理技术吧,可以让多台机器通过一台机器上网。
(NAT在网络层或传输层,socks在会话层,应用层代理如http代理、ftp代理当然在应用层)
ssh用-D选项的话可以这样:
ssh -D port user@host
详细的说:ssh -CNfgD port user@host
其中的C表示对传输的数据进行压缩,这个在网络环境差时有用,但在网速快时反而影响速度
f让ssh在后台运行
N通常和f连用,表示不执行远程命令
g可以让其它机子也连到这个隧道上
D指定dynamic类型的端口

6 ultrasurf(类似于tor)
7 迅雷
8 修改系统设置,如修改Linux系统的环境变量 $http_proxy $ftp_proxy(Linux下好像只支持http和ftp)或直接在System --> Preferences --> Network Proxy中改。
9 NAT
10 TOR+Vidalia+Privoxy+Firefox


后记4:
Windows下强大的代理软件:ccproxy,Linux下代理软件:squid
Linux的实用代理软件:tsocks能让应用软件透明的使用socks代理,能把socks代理转化为http等代理,很不错的说。

《开源》杂志第二期:
http://bbs.linuxpk.com/attachment.php?aid=3090&k=e5e2b2132af7f5d98504271af5661200&t=1232518139&fid=101&sid=89f3s6Qud85luFAgD8A3XQXpMdjNezZi4roqnsMRjQtUypE
介绍了几个不错的代理软件以及http代理获取设计

后记5:
在bbs上看到的:
和GAppProxy一样基于google AppEngine的web代理:http://go2.appspot.com/
http://quick-proxy.appspot.com/也是,并且可以直接把地址加在http://quick-proxy.appspot.com
后面,如http://quick-proxy.appspot.com/www.baidu.com/
类似的还有:
http://proxypy.appspot.com
http://web-proxy.appspot.com
http://fly-proxy.appspot.com
另外还有“99宿舍加速器”
火狐有gladder插件,自动搜集代理列表,并使用之。

后记5:google自己的web代理(好像是)
http://www.google.com/gwt/n

后记6:
科大代理:
类型:scok5
地址:202.38.76.238
端口:1080

没有评论: