long long ago…
在很久很久以前,我们访问各种网站都是简单而直接的,用户的请求通过互联网发送到服务提供方,服务提供方直接将信息反馈给用户。
when evil comes
然后有一天,GFW 就出现了,他像一个收过路费的强盗一样夹在了在用户和服务之间,每当用户需要获取信息,都经过了 GFW,GFW将它不喜欢的内容统统过滤掉,于是客户当触发 GFW 的过滤规则的时候,就会收到 Connection Reset 这样的响应内容,而无法接收到正常的内容。
ssh tunnel
聪明的人们想到了利用境外服务器代理的方法来绕过GFW 的过滤,其中包含了各种HTTP代理服务、Socks服务、VPN服务… 其中以 ssh tunnel 的方法比较有代表性
1) 首先用户和境外服务器基于 ssh 建立起一条加密的通道2-3) 用户通过建立起的隧道进行代理,通过 ssh server 向真实的服务发起请求4-5) 服务通过 ssh server,再通过创建好的隧道返回给用户
由于 ssh 本身就是基于 RSA 加密技术,所以 GFW 无法从数据传输的过程中的加密数据内容进行关键词分析,避免了被重置链接的问题,但由于创建隧道和数据传输的过程中,ssh 本身的特征是明显的,所以 GFW 一度通过分析连接的特征进行干扰,导致 ssh存在被定向进行干扰的问题。
其实ssh只是代理的一种,代理有很多种,例如http代理,反向代理等,这些之所以在国内的网络环境里不堪大用,主要是因为他们内容传输都是使用明文,不加密的内容很容易被第三方嗅探,然后截断连接。
shadowsocks
简单理解的话,shadowsocks 是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,所以下面这个原理图基本上和利用 ssh tunnel 大致类似
1、6) 客户端发出的请求基于Socks5 协议跟 ss-local 端进行通讯,由于这个ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了上面被 GFW 通过特征分析进行干扰的问题2、5) ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的TCP包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密3、4) ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回。
VPN
VPN其实也是在本地与远程服务器之间建立了一个加密的通道,但是与SSH不同的是,VPN客户端会虚拟一个网卡出来,这个虚拟的网卡连接的就是刚才说的那个加密通道,然后修改路由,使流量从加密通道走,达到加密的目的。举个例子你就明白了:
在你们班,你有一个暗恋的女神,为了求得女神的关注,你每天都给女神写情书,然后让同学一个一个传过去。这样的话,每个帮你传情书的同学都可以知道你写的是什么内容,班主任也可以很容易截获你的情书。
有一天,你女神的同桌突然告诉你,她可以给你提供一个服务,让别人无法获取你情书的内容,也无法知道你是写给谁的,前提是收取费用(付费服务),可以给你三天试用,你当然会同意。
于是,这个服务者给你一个她的加密公钥,你把情书加密之后让同学一个一个把情书传给她,然后女神的同桌用她的私钥解密内容,再把解密之后的结果递给女神,女神回信还是把内容给她同桌,同桌加密之后传给你,你用公钥解密。
这个VPN的好处是其他人无法过去你们信件的任何信息,但是从VPN到女神之间的信息传递是没有任何保护的,也就是说除了女神的同桌外,其他人可能通过女神的同桌到女神这一传播路径获取到你们的信息。
由于你们的这个举措,班主任再也抓不到在学校谈恋爱的人了,于是恋爱之风席卷了整个班级,上课传递纸条的情况越来越多了,有童鞋看到这个可能是个赚钱的点子,于是像女神的同桌一样,也提供情书加密传递服务,为了吸引更多的人使用他的服务,他们普遍采取先免费后收费,免费提供有限服务等措施。还有一些童鞋比较有思想,认为不应该阻止大家谈恋爱,免费无偿给大家提供传递服务。还有童鞋是隔壁班的卧底,因为两个班级有竞争,如果这个班恋爱的多了,成绩必然会收到一些影响,这些受隔壁班的资助,给大家提供无偿加密传递服务。还有一些人就是大款,他给大家爱提供这项服务,就是为了赢得大家的欢迎。还有一些我们也不知道目的......+这些就是免费VPN的由来。
VPN好的地方在于更全能。实际大规模使用的VPN至少有四种:PPTP,L2TP,OpenVPN,IPSec。其中L2TP和PPTP作为最老牌的vpn,是工作在OSI七层模型的数据链路层,从下往上第二层,是一个非常底层的网络通信协议,作为底层的隧道技术有什么好处呢,它们完全不需要上层客户端做任何修改,不需要客户端支持设置代理,不需要客户端做什么设置,不需要客户端任何改变,之前你怎么使用的网络,还是怎么使用。它从底层模拟了vpn服务器的网络环境,给使用网络的上层应用造成了一种假象,让它们以为自己就是在VPN服务器所在的局域网中,没有wall,没有reset,一切都那么美好。
简单一句话就是VPN是全局代理。
看懂了的话,那我们在说说两两之间的区别:
VPN与SSH:
如果你使用的软件没有设置代理的功能,你必须使用VPN。
如果你需要对个别网站使用加密连接,需要通过网址快速切换加密和普通网络,建议使用 SSH,而且SSH的价格比VPN要稍便宜一些。
如果你不仅需要加密网站,还要玩一些外服游戏加速的,如美服,韩服之类的,那么使用VPN是个不错的选择。
在VPN和SSH的速度方面,一直存在争议,即使存在速度方面的差异,也是可以忽略不计的,在使用中基本上感觉不出来。
VPN与SS
文章来源于网络,目的仅供大家参考,版权归原作者所有,如有侵权,请及时联系我们删除。