Nov 15, 2010

VPN,可以结合SSH的优势吗?

VPN与SSH是常用的加密数据的方式(不限于凸墙),区别大致如下(原文在这里):

SSH方式:
通过SSH连接,在本地与远程服务器之间建立一个加密的管道(Tunnel),SSH客户端监听本地端口,形成SOCKET5代理。由于IE对 SOCKET5代理不好,大家一般都是用FireFox。直接将FireFox设置Socket5代理就是可以正常使用的。但是这样,上国内网站也会绕道国外,影响速度。好在FireFox有大量优秀的插件,FoxyProxy和AutoProxy是很常用的通过URL筛选决定是否通过代理访问网站的插件,后者用的尤其多。

VPN方式:
VPN其实也是在本地与远程服务器之间建立了一个加密的通道,但是,与SSH不同的是,VPN客户端会虚拟一个网卡出来(这个虚拟的网卡连接的就是刚才说的那个加密通道),然后修改路由,使流量从加密通道走,达到凸墙的目的。当然,VPN也存在跟SSH相同的问题,如果访问国内网站,会绕道国外,速度很慢。聪明的人们又想出了办法:连接了VPN的电脑相当于有两块网卡,只要让国内流量从真实网卡走而国际流量从虚拟网卡走,这个问题就解决了。实际的操作就是手工加入国内IP的路由,让这部分流量直接走本地连接来搞定。

在解决绕道的问题上,大家可以看出SSH方式和VPN方式的不同了,SSH方式可以在URL的级别上筛选网址走加密通道,而VPN方式只能筛选IP。

举个例子,假设xxx是某强屏蔽的关键字,SSH代理+AutoProxy可以做到使http://www.abc.com/xxx走代理,而http://www.abc.com/yyy不走代理,这是VPN方式力所不及的。当然,VPN方式也有它得天独厚的好处,就是不用对应用软件进行任何设置即可使用,这对一些根本没法设置代理的应用软件是莫大的福音,这也是SSH方式力所不及的。

简单的来说,SSH在7层,VPN在3层。至于VPN的好处在上面引用的文字中就说的很明白了——不用对应用软件进行任何的设置。换句话说,只要去往某一目的的路由是指向VPN的,那么所有去往此目的地的路由都将自动生效,而基于7层的SSH没有此能力。

我的考虑是,能不能基于某些现有的SSH代理的处理方式,动态的设置VPN路由,这样不失VPN的特点,又能结合SSH的吸收优势。当然,实际情况肯定还是不能完全像SSH一样灵活。但至少比采用一刀切的方式——国外IP都走VPN——更加灵活。

基本思路如下:利用autoproxy的列表,使用DNS代理收集哪些IP地址需要使用VPN(同时可以防止DNS污染)。对于需要代理的目的地址(匹配autoproxy列表的项),创建路由指向VPN。同时对于DNS污染的地址,直接指向黑洞,以免出现可能的安全问题。

0 comments:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger