翻墙软件的选择与安全系数(8)——VPN是什么?

翻墙党们最熟悉的翻墙工具应该就是VPN了。说起来,最近VPN被GFW大举封锁,很多人买的付费VPN都失效了,有人就推测GFW采用了新技术来封杀VPN。

其实根本就不需要什么新技术:VPN本来就不是为了翻墙而生的,GFW想要进行协议封锁太容易了,无非很多外企都使用VPN,GFW以前比较投鼠忌器而已(也有消息说很多国内VPN服务就是GFW的走狗们开设的),然后最近开始做死了。不过,GFW越做死,这墙倒的越快就是了,外企已经叫苦连天了。

”VPN并不是为了翻墙而生的?我一直以为VPN就是翻墙用的呢!“

很多翻墙党都有这样的疑问,而五毛也利用了这一点,以”其他很多国家的人都使用VPN,说明他们的网络也不自由”为由为天朝的互联网审查辩护。完全就是在扯淡!

首先来看看VPN到底是什么吧。这要从早期的互联网说起了:早期的互联网没有任何安全上的设计,所有数据都以明文的形式暴露在所有人的眼皮底下。

这样很多公司就头痛了:公司内部的资料要是就这么在公网上明文传输,可是很容易被窃取的啊!于是他们就想到了一个办法:搭设专线,在各个分公司之间搭设专线把公司局域网连接起来,形成一个专用网络。专线上只传输公司的资料,攻击者也很难对专线下手,这样公司员工就能安全的进行交流啦,而且速度又快,服务质量也有保证。

可是新问题又出现了:专线虽好,可是实在是太贵了,多搭几条就吃不消了,有些规模比较小的公司都拿不出这个钱来;而且专线还有一个缺点,就是无法让处在公网上的员工个人安全进入公司内网。你总不能为一个人搭建一条专线吧:)

”物理专线搭不起,那就搭建虚拟专线吧!“VPN(Virtual Private Network,虚拟专用网)就横空出世了!

虚拟专用网,顾名思义就是在物理公网上虚拟出专线来供企业使用。在企业的PC上配置好客户端,将数据封装之后发往处于另一个内网内的远程服务器上,然后就可以访问内网了。

实际上,VPN就是在两点(两个内网区域可以看成两点)之间建立一条隧道(Tunneling),数据被封装成特定的格式传输,看上去就是在一条虚拟专线中传输。除了企业,学校和政府等需要专线沟通的封闭机构也需要VPN;而且由于VPN可以改变IP,不少国家的人就借此对付有些网站(尤其是视频网站)的地域访问限制,或者隐藏身份,以及用支持加密的VPN防止无线网络下的信息窃取。所以,其他国家的人用VPN有什么奇怪的?VPN本来就不是为了翻墙而生的!天朝的GFW逼得VPN承担起了翻墙职责而已!

”你怎么没有提到加密和认证之类的过程?不加密的VPN还叫VPN?还说什么支持加密的VPN?“
很多VPN都支持加密,但这可不代表VPN就一定是加密的。事实上,有两种很常见的VPN就是明文的[1]:PPTP(点对点隧道协议)和L2TP(第二层隧道协议),而身份认证和数据完整性验证过程也不是必须的。当然,在实际运用中集加密和身份认证于一身的VPN是最常见的,常见的付费VPN(有常见协议,也有自创协议的)以及OPENVPN还有IPsecVPN都是同时支持加密和身份认证以及数据完整性验证的。

”VPN默认就是全局代理的,这又是为什么呢?为什么常见的HTTP代理和SOCKS代理不是全局代理呢?“
这要从VPN的具体工作流程说起了。前面提到VPN会封装用户数据然后发送到远程服务器上,那么VPN是工作在OSI模型的哪一层上的呢?

”工作在哪一层有什么重要的?非常重要,代理软件工作在哪一层直接决定了代理软件能实现什么样的功能。HTTP代理工作在应用层,专门处理HTTP协议,那么就只能为支持使用HTTP协议通信的程序(例如浏览器)服务了;SOCKS协议工作在会话层,在传输层之上应用层之下,理论上就支持所有应用层协议了,服务范围一下子广了很多,而且可以完美工作在TCP字节流之上(Tor就是这样的[2]),但依旧没有办法全局代理。

而VPN则是工作在这三层之上:物理层,数据链路层和网络层,其中物理层VPN已经是非常接近物理专线的存在了(Optical VPN就是一种物理层VPN[3]),咱们一般接触不到,暂且不提;而工作在数据链路层之上的VPN就是很熟悉的存在了:常见的PPTP,L2TP还有OPENVPN都是工作在数据链路层之上的;IPsecVPN是工作在网络层上的。

”这又和全局代理有什么关系?“关系大着呢:PC里的各路进程进行网络通信的时候都必须经过这样的过程:数据包封装完成之后经过操作系统的转发(操作系统内核此时当了路由器,根据系统路由表进行转发),然后再被系统网卡处理成帧(网卡驱动的活),最终转化为电信号发送出去(具体形式视传输介质而定,无线就是电磁波,双绞线和同轴电缆就是电流脉冲,光纤就是光脉冲)。

而常见的链路层VPN会在操作系统里安装一个虚拟网卡(所以VPN基本上不是绿色软件,需要管理员权限安装,原因就在这里:安装驱动级别的软件是一定要管理员权限的,网卡自然是驱动级别),VPN连接之后就会修改默认的系统路由表,将所有进程的通信流量都路由到虚拟网卡上,让虚拟网卡处理,生成特别的帧之后再发送出去。

”啊,系统路由表被修改了,那么很自然的就全局代理了!“没错,就是这样,进程通信是服从系统路由表的,那么系统路由表被VPN进程修改之后,所有的进程流量就只能乖乖通过VPN服务器的中转了!不过事实上windows系统有一个缺陷:特定情况下允许应用程序进程绕过系统路由表直接发起连接,这直接造成了webRTC IP泄露事件[4]。有些人会想到proxifier这类软件也可以进行全局代理,这和VPN的全局代理不是一回事情,proxifier之流是为本来无法设置代理的一些程序设置了代理,并没有动系统路由表。

除了默认全局代理之外,工作在数据链路层的VPN可以轻易穿透NAT[5],因为此时客户端是在数据链路层和远程服务器建立了端到端的连接,自然不会受到NAT的困扰了(NAT是工作在网络层的),而工作在网络层的IPsec面对NAT的时候就会有麻烦。

被VPN协议处理过的数据包格式一致(长度,结构都很一致的,而且非常特别),协议指纹极其明显(如果有动态身份认证过程和密钥协商过程就更加了),所以说GFW想要进行封锁一点都不困难,事实上ISP就可以完成硬件层面的协议封锁,联通就是这样干掉PPTP的。不过这也不奇怪,VPN又不是为了翻墙而生,没有必要降低协议指纹量的。

这回就聊到这里,下次说说各种VPN协议具体是怎么回事吧!

科普文链接集合:
https://plus.google.com/109790703964908675921/posts/TpdEExwyrVj

参考资料:
1,VPN翻墙,不安全的加密,不要相信墙内公司
https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
2,https://www.torproject.org/about/overview.html.en ”Tor only works for TCP streams and can be used by any application with SOCKS support“
3,虚拟专用网分类和比较研究

http://www.ecice06.com/CN/article/downloadArticleFile.do?attachType=PDF&id=17951
4,破坏匿名的凶手——WebRTC
https://plus.google.com/109790703964908675921/posts/1KjRdwo3jid
5,SSL/TLS的原理以及互联网究竟是如何工作的(6)
                                                                    ——嘿,我是IP!

https://plus.google.com/109790703964908675921/posts/8GLWQxp5yJN

原文:https://plus.google.com/109790703964908675921/posts/J43nQqL2Xwq

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s