• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

今天我们来聊一下什么是 vpn 以及 vpn 的实现原理。

VPN 维基百科解释

首先,我们看看 VPN 的维基百科介绍:

虚拟私人网络(英语:Virtual Private Network,缩写:VPN)是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。它利用隧道协议(Tunneling Protocol)来达到保密、传送端认证、讯息准确性等私人讯息安全效果,这种技术可以用不安全的网路(例如:网际网路)来传送可靠、安全的讯息。需要注意的是,加密讯息与否是可以控制的,如果是没有加密的虚拟私人网路讯息依然有被窃取的危险。

以日常生活的例子来比喻,虚拟私人网路就像:甲公司某部门的 A 想寄信去乙公司某部门的 B。A 已知 B 的地址及部门,但公司与公司之间的信不能注明部门名称。于是,A 请自己的秘书把指定 B 所属部门的信(A 可以选择是否以密码与 B 通讯)放在寄去乙公司地址的大信封中。当乙公司的秘书收到从甲公司寄到乙公司的信件后,该秘书便会把放在该大信封内的指定部门信件以公司内部邮件方式寄给 B。同样地,B 会以同样的方式回信给 A。在以上例子中,A 及 B 是身处不同公司(内联网)的计算机(或相关机器),透过一般邮寄方式(公用网路)寄信给对方,再由对方的秘书(例如:支援虚拟私人网路的路由器或防火墙)以公司内部信件(内部网路)的方式寄至对方本人。请注意,在虚拟私人网路中,因应网路架构,秘书及收信人可以是同一人。许多现在的作业系统,例如 Windows 及 Linux 等因其所用传输协议,已有能力不用透过其它网路设备便能达到虚拟私人网路连接。

传统 VPN 的特点是点对点拓扑,它们不支持或连接广播域,因此 Microsoft Windows NetBIOS 等服务可能无法完全支持或像在局域网(LAN)上那样工作。设计人员已经开发出 VPN 变体,例如虚拟专用 LAN 服务(VPLS)和第 2 层隧道协议(L2TP),以克服此限制。

VPN 安全性

安全的虚拟私人网络使用加密穿隧协议,通过阻止截听与嗅探来提供机密性,还允许发送者身份验证,以阻止身份伪造,同时通过防止信息被修改提供消息完整性。

某些虚拟私人网络不使用加密保护数据。虽然虚拟私人网络通常都会提供安全性,但未加密的虚拟私人网络严格来说是不“安全”或“可信”的。例如,一条通过 GRE 协议在两台主机间建立的隧道属于虚拟私人网络,但既不安全也不可信。

除以上的 GRE 协议例子外,原生的明文穿隧协议包括 L2TP(不带 IPsec 时)和 PPTP(不使用微软点对点加密(MPPE)时)。

VPN 的实现

vpn 是一个统称,它有很多的具体实现,比如 PPTP、L2TP、IPSec 和 openvpn。vpn 出现远早于 GFW,所以它不是为了翻墙而生的。我上面说了,vpn 是一种加密通讯技术,它被设计出来的目的是数据传输安全和网络匿名。

而既然不是为翻墙而生,那从翻墙的角度上讲,vpn 协议就存在诸多问题。最严重的一个就是流量特征过于明显。墙目前已经能够精确识别绝大部分 vpn 协议的流量特征并给予封锁,所以,vpn 这种翻墙方式基本已经废了。

但即便如此,vpn 作为过去很长一段时间最主流最热门最常用最为人所知的翻墙手段,已然成为翻墙的代名词。即便是 vpn 已不再常用的今天,当人们谈及翻墙的时候,说得最多的仍是:“你有什么好用的 vpn 吗?”

翻墙原理

既然我们在讨论 VPN,我们延伸下翻墙的题外话,聊聊翻墙的原理。

GFW 实现网络封锁的手段主要有两种:dns 劫持和 ip 封锁(除此之外,还有 dns 污染和关键词过滤,这里我们不讨论)。

Dns 劫持:ip 是网络上各主机的“地址”,要想访问“别人家”,当然得要有地址。但 ip 是一串数字,是给电脑看的,人记起来太麻烦,所以就有了域名(也就是我们常说的网址)和 dns(网域名称系统,Domain Name System)。域名是一串英文字符串,方便人记忆。dns 将域名和 ip 关联起来,形成映射。用户访问域名所在的目标网站前,将域名发给 dns 服务器询问这对映射关系,拿到对应的 ip 后就可以在茫茫网海中找到那个“她”了。而 GFW 所做的就是站在用户和 dns 服务器之间,破坏它们的正常通讯,并向用户回传一个假 ip。用户拿不到真正的 ip,自然也就访问不到本想访问的网站了。

Dns 劫持是 GFW 早期唯一的技术手段,所以那个时候的用户通过修改 Hosts 文件的方式就可以零成本突破封锁了。

ip 封锁:dns 劫持之后,GFW 引入了 ip 封锁,直接锁住了访问目标网站的去路,用户发往被封锁 ip 的任何数据都会被墙截断。这个时候,依靠类似于修改 Hosts 文件这种低成本方法突破封锁就显得有些天方夜谭了。那么,解决办法是什么呢?答案是:在第三方架设翻墙服务器,中转与目标服务器间的来往流量。目前为止,GFW 采用的是黑名单模式,像 Google、Facebook 这种在黑名单上的网站的 ip 无法访问,而不在黑名单上的第三方不记名 ip 可以。于是,一切就很明朗了,我们目前几乎所有的翻墙手段都是基于上述原理实现的,vpn 是,shadowsocks 是,还有一些比较冷门的(比如 v2ray)同样如此,只不过它们的技术细节不同(这个我们不会深入)。

发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址