PPTP、L2TP、OpenVPN三种隧道协议的概念与区别

对于构建VPN来说,隧道技术是一个关键技术

Posted by Jingh on January 15, 2017
本文阅读量:

VPN的隧道技术

对于构建VPN来说,隧道技术是一个关键技术。它用来在IP公网中国仿真条点到点的通路,实现两个节点间(VPN网关之间,或VPN网关与VPN远程能过户之间)的安全通信,使数据包在公共网络上的专用隧道内出传输1

隧道的基本组成包括:隧道启动结点;隧道终结结点;IP网等路由的分组网络。

隧道的启动和终止结点可由许多网络设备和软件来实现。例如:ISP接入服务器、企业网防火墙,或者其他支持VPN的设备主机等。这里统称为VPN结点,其功能还可能包括:防火墙和地址转换、数据加密、身份鉴别和授权的功能。

隧道协议

隧道技术的实质是如何利用一种网络层的协议来传输另一种网络层的协议,其基本功能是封装和加密,主要利用隧道协议来实现。封装是构建隧道的基本手段。从隧道的两端来看,封装就是用来创建、维持和撤销一个隧道,来实现信息的隐蔽和抽象。而如果流经隧道的数据不加密,那么整个隧道就暴露在公共网络中,VPN的安全性和私有性就得不到体现。1

网路隧道技术涉及了3种网络协议:网络隧道协议、隧道协议下面的承载协议和隧道协议所承载的被承载协议。如图所示

隧道协议作为VPN IP层的底层,将VPN IP分组进行安装封装;隧道协议同时作为公用IP网的一种特殊形式,将封装的VPN分组利用公网内的IP协议栈进行传输,以实现隧道内的功能。隧道协议在这个协议体系中起着承上启下的作用。

隧道协议存在多种可能的实现方式,按照工作的层次,可分为两类:一类是二层隧道协议,用于传输二层网络协议,它主要应用于构建拨号VPN(Access VPN);另一类是三层隧道协议,用于传输三层网络协议,它主要应用于构建内部网VPN(Intranet VPN)和外联网(VPN Extranet VPN)。

二层隧道协议

二层隧道协议指用公用网络来封装和传输二层(数据链路层)协议,此时在隧道内传输的是数据链路层的帧。工作原理如图所示2

在点到点的二层链路上,最常用的二层协议是PPP协议,隧道协议实现中,首先将IP分组封装在二层的PPP协议帧中,也就是会所,先把各种网络协议封装在PPP中,再把整个数据包装入二层隧道协议中。这种双层封装方法形成的数据包在公用网络中传输。

第二层隧道协议具有简单易行的优点,但是他没的可扩展性不太好,而且提供内在的安全机制安全强度低,因此它们不支持企业和企业的外部客户以及供应商之间通信的保密性需求,不适合用来构建连接企业内部网和企业的外部客户和供应商的企业外部网VPN。

三层隧道协议

三层隧道协议是用公用网来封装和传输三层(网路层)协议(如IP、IPX、AppleTalk等),此时在隧道内传输的是网路层的分组。三层隧道协议并非是一种很新的技术,早已出现的RFC 1701 通路路由封装协议就是一个三层隧道协议。IETF制定的IP层加密标准协议IPSec 也是一个三层速到协议,利用IPSec(ESP/AN)的隧道模式构成的VPN隧道。三层隧道协议的协议栈如图所示,2

PPTP、L2TP、OpenVPN三种隧道协议的概念

PPTP(Point to Point Tunneling Protocol,点对点隧道协议)默认端口号:1723

PPTP,即PPTF协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可以通过密码身份验证协议 (PAP)、可扩展身份验证协议(EAP)等方法增强安全性。可以使远程用户通过拨入ISP、通过直接连接Internet或其他网络安全地访问企业网。

点对点隧道协议(PPTP)是一种支持多协议虚拟专用网络的网络技术,它工作在第二层。 通过该协议,远程用户能够通过 Microsoft Windows NT工作站、Windows xp 、Windows 2000 和windows2003、windows7操作系统以及其它装有点对点协议的系统安全访问公司网络,并能拨号连入本地ISP,通过Internet 安全链接到公司网络。 PPTP协议是点对点隧道协议,其将控制包与数据包分开,控制包采用TCP控制。PPTP使用TCP协议,适合在没有防火墙限制的网络中使用。

L2TP(Layer 2 Tunneling Protocol,第二层隧道协议)

L2TP是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处,比如PPTP要求网络为IP网络,L2TP要求面向数据包的点对点连接;PPTP使用单一隧道,L2TP使用多隧道;L2TP提供包头压缩、隧道验证,而PPTP不支持。

L2TP是一个数据链路层协议,基于UDP。其报文分为数据消息和控制消息两类。数据消息用投递 PPP 帧,该帧作为L2TP报文的数据区。L2TP不保证数据消息的可靠投递,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。控制消息用以 建立、维护和终止控制连接及会话,L2TP确保其可靠投递,并支持对控制消息的流量控制和拥塞控制。

L2TP是国际标准隧道协议,它结合了PPTP协议以及第二层转发L2F协议的优点,能以隧道方式使PPP包通过各种网络协议,包括ATM、SONET和帧中继。但是L2TP没有任何加密措施,更多是和IPSec协议结合使用,提供隧道验证。

L2TP使用UDP协议,一般可以穿透防火墙,适合在有防火墙限制、局域网用户,如公司、网吧、学校等场合使用。

PPTPL2TP二个连接类型在性能上差别不大,如果使用PPTP不正常,那就更换为L2TP

OpenVPN

OpenVpn的技术核心是虚拟网卡,其次是SSL协议实现。 虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如 果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的 操作系统下都有相应的实现,这也是OpenVpn能够跨平台一个很重要的理由。 OpenVPN使用OpenSSL库加密数据与控制信息:它使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。 OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持。

在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。 OpenVPN是一个基于SSL加密的纯应用层VPN协议,是SSL VPN的一种,支持UDP与TCP两种方式(说明:UDP和TCP是2种通讯协议,这里通常UDP的效率会比较高,速度也相对较快。所以尽量使用UDP连接方式,实在UDP没法使用的时候,再使用TCP连接方式)。 由于其运行在纯应用层,避免了PPTPL2TP在某些NAT设备后面不被支持的情况,并且可以绕过一些网络的封锁(通俗点讲,基本上能上网的地方就能用OpenVPN)。 OpenVPN客户端软件可以很方便地配合路由表,实现不同线路(如国内和国外)的路由选择,实现一部分IP走VPN,另一部分IP走原网络。

PPTP、L2TP、OpenVPN三种隧道协议的优缺点对比

  • 易用性: PPTP > L2TP > OpenVPN
  • 速度: PPTP > OpenVPN UDP > L2TP > OpenVPN TCP
  • 安全性: OpenVPN > L2TP > PPTP
  • 稳定性: OpenVPN > L2TP > PPTP
  • 网络适用性:OpenVPN > PPTP > L2TP

VPN协议的选择

电脑上优先使用PPTP,无法使用可以尝试L2TP,对安全性要求高的优先使用OpenVPN。手持设备推荐使用L2TP。

  • PPTP: 最常用,设置最简单,大多数设备都支持;
  • L2TP: 支持PPTP的设备基本都支持此种方式,设置略复杂,需要选择L2TP/IPSec PSK方式,且设置预共享密钥PSK;
  • OpenVPN:最稳定,适用于各种网络环境,但需要安装第三方软件和配置文件,较复杂。

参考资料

  1. 龚向阳等.宽带通信网原理:北京邮电大学出版社,2006年  2

  2. VPN及其隧道技术研究 .中国知网[引用日期2015-02-06]  2