主流的VPN协议有PPTP、L2TP、IPSec、OpenVPN和SSTP,具体区别如下:
1、PPTP 点对点隧道协议 (PPTP) 是由包括微软和3Com等公司组成的PPTP论坛开发的⼀种点对点隧道协,基于拨号使⽤的PPP 协议使⽤PAP或CHAP之类的加密算法,或者使⽤ Microsoft的点对点加密算法MPPE。其通过跨越基于 TCP/IP 的数据 ⽹络创建 VPN 实现了从远程客户端到专⽤企业服务器之间数据的安全传输。PPTP ⽀持通过公共⽹络(例如 Internet) 建⽴按需的、多协议的、虚拟专⽤⽹络。PPTP 允许加密 IP 通讯,然后在要跨越公司 IP ⽹络或公共 IP ⽹络(如 Internet)发送的 IP 头中对其进⾏封装。
2、L2TP 第 2 层隧道协议 (L2TP) 是IETF基于L2F (Cisco的第⼆层转发协议)开发的PPTP的后续版本。是⼀种⼯业标准 Internet 隧道协议,其可以为跨越⾯向数据包的媒体发送点到点协议 (PPP) 框架提供封装。PPTP和L2TP都使⽤PPP协 议对数据进⾏封装,然后添加附加包头⽤于数据在互联⽹络上的传输。PPTP只能在两端点间建⽴单⼀隧道。 L2TP⽀ 持在两端点间使⽤多隧道,⽤户可以针对不同的服务质量创建不同的隧道。L2TP可以提供隧道验证,⽽PPTP则不⽀持 隧道验证。但是当L2TP 或PPTP与IPSEC共同使⽤时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道使 ⽤L2TP。 PPTP要求互联⽹络为IP⽹络。L2TP只要求隧道媒介提供⾯向数据包的点对点的连接,L2TP可以在IP(使⽤ UDP),桢中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATM VCs⽹络上使⽤。
3、IPSec IPSec 隧道模式隧道是封装、路由与解封装的整个过程。隧道将原始数据包隐藏(或封装)在新的数据包内部。该新的 数据包可能会有新的寻址与路由信息,从⽽使其能够通 过⽹络传输。隧道与数据保密性结合使⽤时,在⽹络上窃听通讯 的⼈将⽆法获取原始数据包数据(以及原始的源和⽬标)。封装的数据包到达⽬的地后,会删除封装,原始数据包头⽤ 于将数据包路由到最终⽬的地。 隧道本⾝是封装数据经过的逻辑数据路径,对原始的源和⽬的端,隧道是不可见的,⽽只能看到⽹络路径中的点对点连 接。连接双⽅并不关⼼隧道起点和终点之间的任何路由器、交换机、代理服务器或其他安全⽹关。将隧道和数据保密性 结合使⽤时,可⽤于提供VPN。 封装的数据包在⽹络中的隧道内部传输。在此⽰例中,该⽹络是 Internet。⽹关可以是外部 Internet 与专⽤⽹络间的周 界⽹关。周界⽹关可以是路由器、防⽕墙、代理服务器或其他安全⽹关。另外,在专⽤⽹络内部可使⽤两个⽹关来保护 ⽹络中不信任的通讯。 当以隧道模式使⽤ IPSec 时,其只为 IP 通讯提供封装。使⽤ IPSec 隧道模式主要是为了与其他不⽀持 IPSec 上的 L2TP 或 PPTP VPN 隧道技术的路由器、⽹关或终端系统之间的相互操作。
4、OpenVPN SSL/TLS协议提供了数据私密性、端点验证、信息完整性等特性。SSL/TLS协议由许多⼦协议组成,其中两个主要的⼦ 协议是握⼿协议和记录协议。握⼿协议允许服务器和客户端在应⽤协议传输第⼀个数据字节以前,彼此确认,协商⼀种 加密算法和密码钥匙。在数据传输期间,记录协议利⽤握⼿协议⽣成的密钥加密和解密后来交换的数据。 SSL/TLS独⽴于应⽤,因此任何⼀个应⽤程序都可以享受它的安全性⽽不必理会执⾏细节。SSL/TLS置⾝于⽹络结构体 系的 传输层和应⽤层之间。此外,SSL/TLS本⾝就被⼏乎所有的Web浏览器⽀持。这意味着客户端不需要为了⽀持 SSL/TLS连接安装额外的软件。这两个特征就是SSL/TLS能应⽤于VPN的关键点。
典型的SSL VPN应⽤如OpenVPN,是⼀个⽐较好的开源软件。PPTP主要为那些经常外出移动或家庭办公的⽤户考虑; ⽽OpenVPN主要是针对企业异地两地总分公司之间的VPN不间断按需连接,例如ERP在企业中的应⽤。 OpenVPN 允许参与建⽴VPN的单点使⽤预设的私钥,第三⽅证书,或者⽤户名/密码来进⾏⾝份验证。它⼤量使⽤了 OpenSSL加密库,以及SSLv3/TLSv1 协议。OpenVPN能在Linux、xBSD、Mac OS X与Windows 2000/XP上运⾏。它 并不是⼀个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。 隧道加密 OpenVPN使⽤OpenSSL库加密数据与控制信息:它使⽤了OpesSSL的加密以及验证功能,意味着,它能够使⽤任何 OpenSSL⽀持的算法。它提供了可选的数据包HMAC功能以提⾼连接的安全性。此外,OpenSSL的硬件加速也能提⾼ 它的性能。 验证OpenVPN提供了多种⾝份验证⽅式,⽤以确认参与连接双⽅的⾝份,包括:预享私钥,第三⽅证书以及⽤户名/密码组 合。预享密钥最为简单,但同时它只能⽤于建⽴点对点的VPN;基于PKI的第三⽅证书提供了最完善的功能,但是需要 额外的精⼒去维护⼀个PKI证书体系。OpenVPN2.0后引⼊了⽤户名/⼝令组合的⾝份验证⽅式,它可以省略客户端证 书,但是仍有⼀份服务器证书需要被⽤作加密。 ⽹络OpenVPN所有的通信都基于⼀个单⼀的IP端⼝,默认且推荐使⽤UDP协议通讯,同时TCP也被⽀持。OpenVPN连接 能通过⼤多数的代理服务器,并且能够在NAT的环境中很好地⼯作。服务端具有向客户端“推送”某些⽹络配置信息的功 能,这些信息包括:IP地址、路由设置等。OpenVPN提供了两种虚拟⽹络接⼝:通⽤Tun/Tap驱动,通过它们,可以建 ⽴三层IP隧道,或者虚拟⼆层以太⽹,后者可以传送任何类型的⼆层以太⽹络数据。传送的数据可通过LZO算法压缩。 IANA(Internet Assigned Numbers Authority)指定给OpenVPN的官⽅端⼝为1194。OpenVPN 2.0以后版本每个进程 可以同时管理数个并发的隧道。 OpenVPN使⽤通⽤⽹络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISP(Internet service provider)过滤某些特定VPN协议的情况下。在选择协议时候,需要注意2个加密隧道之间的⽹络状况,如有⾼延迟或 者丢包较多的情况下,请选择 TCP协议作为底层协议,UDP协议由于存在⽆连接和重传机制,导致要隧道上层的协议 进⾏重传,效率⾮常低下。 安全OpenVPN与⽣俱来便具备了许多安全特性:它在⽤户空间运⾏,⽆须对内核及⽹络协议栈作修改;初始完毕后以 chroot⽅式运⾏,放弃root权限;使⽤mlockall以防⽌敏感数据交换到磁盘。 OpenVPN通过PKCS#11⽀持硬件加密标识,如智能卡。
4、SSTP 安全套接字隧道协议(Secure Socket Tunneling Protocol,SSTP)是⼀种VPN隧道的形式,提供了⼀种通过SSL3.0通道 传输PPP或L2TP流量的机制。SSL利⽤密钥协商提供传输级别的安全性。通过TCP端⼝443使⽤SSL,允许SSTP通过 ⼏乎所有的防⽕墙和代理服务器,除了需要⾝份验证的Web代理。 SSTP可⽤于Linux、BSD和Windows。MikroTik的RouterOS还包括⼀个SSTP客户端和服务器端。对于 Windows,SSTP仅可⽤于⾃Windows Vista SP1之后的系统。 这种SSTP只适⽤于远程访问,通常不⽀持站点与站点之间的VPN隧道。RouterOS的版本有没有这样的限制。