虚拟专用网络VPN

前言

一提到VPN,可能很多人想到的都是“翻墙”。那么VPN到底是什么,它又是什么原理?本篇文章将讲解VPN相关的原理。本文只讲述该技术的技术原理,完全合法合规,并不存在直接或间接唆使个人搭建违法违规上网工具的意图,解释权归站长Timewaster所有。

VPN的诞生背景

跨越地域的数据传输

在2000的五月的时候HTTPS才被编入RFC,也就是说在此之前,大家上网所使用的协议大部分都是HTTP。HTTP有一个致命的弱点就是它使用的传输方式是明文传输。比如说现在在中国北京市有A公司的销售部,然后A公司的仓库在贵州省。假设现在一个客户在A公司下单了,北京的销售部直接将客户的个人信息和订单信息通过HTTP协议发送给贵州的仓库,中间这么长的距离信息进过谁的手、被谁看过都不清楚。如果说为了防止被监听而在北京和贵州之间修建一条线缆,即耗时又耗钱,性价比特别低。那现在怎么办呢?

修建虚拟线缆!

那么就有人提出了:可以修建一条虚拟的线缆!这个想法正是VPN的原理。在公司的两边各配置一台VPN集线器(也称VPN服务器或VPN网关)。数据发送的时候先通过发送端的VPN集线器,VPN将数据加密之后发送给ISP(互联网提供商,也就是联通、电信、移动等),ISP再通过公共互联网发送给接收端的VPN集线器,接收端再解密。这就完成了数据的传输。那么反过来也是一样的道理。数据在公网的时候是加密状态的。它在传输数据的时候就像搭建了一个管道,管道外面的人无法解读管道内的内容,保证了数据的保密性。

VPN的类型

点对点连接

点对点连接一般适用于刚刚讲的那种公司的情况,也就是IP基本不会改变,属于定点传输的模式。

比如现在销售部的IP是8.8.8.8 ,仓库的IP是9.9.9.9。

而销售部和仓库的VPN集线器分别是10.10.10.10和11.11.11.11。

本来传输头字节写的from是8.8.8.8,to是9.9.9.9(两边电脑的IP)。那么在传输过程中,数据包从8.8.8.8到了10.10.10.10的时候,传输头字节就变成了from是10.10.10.10,to是11.11.11.11(两边VPN集线器的IP)。到了11.11.11.11的时候再由11.11.11.11转发给到9.9.9.9。

客户端对点连接

点对点连接这种方式只适合于定点传输,也就是保证两边的IP都不会变的情况下。但是根据我们的常识,我们可以知道,根据我们位置的变化,我们的IP是会随着改变的。就算同样坐在家里,我们只要把网络断掉再重新连接,根据DHCP协议,我们的IP也可能发生改变。那这样的情况下点对点连接就不再适用,因此我们就需要一种新的连接方式,也就是客户端对点连接。这种连接方式会应用在居家办公里,比如人在家中坐,数据在公司。

客户端对点的连接可以直接通过互联网认证并连接,也可以安装特定的桌面客户端软件。这种客户端对点的连接方式有两种隧道方式,分别是全隧道和半隧道。全隧道就是全部都走公司网络,然后再从公司网络走出去。半隧道就是一部分走公司网络,一部分走自己的网络。很多人会选择使用半隧道,毕竟上班时间难免摸一下鱼,如果全隧道的话,摸鱼记录就都被记录到公司了。

VPN的职责

保密

VPN既然是隧道传输了,那首要的职责就是要保证数据的安全性,常见的加密算法有AES和3DES。这两个算法都有一个E,代表的是Encryption,也就是加密的意思。关于这些常见的加密算法,我后期会专门发一篇文章讲解,这里就不多赘述了。

完整

保密工作是做好了。另一个问题就是:就算看不懂,黑客还是可以乱改你的数据。该如何保证数据的准确性和完整性?我们可以用到另一个算法,想必各位都有所耳熟,叫做哈希Hash。哈希属于非对称算法,就是通过特定的算法生成一串唯一的字符串。目前网上常见的哈希加密方式就是MD5,BASE64,SHA1和SHA256。以SHA256为例,现在加密“Timewaster”

“Timewaster”被加密之后是这个值,但是如果我加一点点就完全不一样了。

通过校验文件的哈希值就可以判断文章的内容和长度是否准确,保证了数据的完整性。

认证

我们已经保证了数据的安全性和完整性,还有一大问题就是如何确定接收信息方就是我们要的人?万一是员工的账号被盗怎么办?

这里认证会用到两种协议,分别是:IPsec和SSL/TLS。先来讲SSL/TLS协议,它对应的连接方式是客户端对点连接。这个SSL/TLS就是HTTPS里面的S,所以其实只要有能上网的浏览器就能用,非常的方便。

IPsec在客户端对点和点对点两种情况下都可以使用,但是现在看来IPsec更多被用在点对点。

从OSI模型来看的话,数据从发送发的应用层发出,到本方的物理层,再从接收方的物理层进入,传输到接收方的应用层。

SSL/TLS是在表示层,也就是如果使用的是SSL/TLS就是在表示层加密再发送。再往下就没有使用SSL/TLS协议了。

但是IPsec不一样,IPsec是在网络层,它是在网络层加密发送出去,所以两种是不同的。

关于两种协议在不同层级的不同和OSI模型我会另讲。

VPN如何翻墙

这一部分有一点点敏感,害怕的可以直接跳过。

众所周知,我们上网访问一个网站,就是在浏览器输入网址,比如输入:

1
www.google.com

那么我们的浏览器就会转跳到这个网站。

如果你在中国大陆,现在在没有开任何其他工具的情况下是没办法访问Google的,因为国家防火墙禁止你访问(别问为什么)。

你连接到中国大陆的DNS,DNS就会给你禁止掉。关于什么是DNS,请看我上一篇讲IP的文章。那么我们使用VPN是怎么连接到Google的呢?我们其实就是先通过连接到VPN服务器(一般在境外),再有VPN服务器连接到国外被国家防火墙禁止的网站,传回数据。

误区

很多人会觉得连接到VPN之后就完全安全了,但是实际上并不是。

我们连接VPN之后数据都会先经过VPN再到达公网,因此VPN是知道我们所有的浏览记录和上行下行数据的。那么,你能保证你的VPN不会出卖你嘛?不好说吧……

好吧,就算你的VPN是保密的,上网连接ISP的时候如果DNS是ISP的,DNS也会记录上行请求记录,所以还是一样的。

使用特定国家服务器的VPN确实能访问该国家的一些资源,但其实你用多了就会发现网站是知道你在用VPN的,因此就会跳出reCAPTCHA之类的验证码。

结束语

这就是关于VPN的一些东西了!VPN这东西有好有坏,掌握权在自己手里。用的好是利剑,用不好就是银白手镯一副。不要妄想干一些违法违规的东西,切记:这个世界上没有绝对的安全!