怎样用通俗的语言解释 VPN 中 PPTP 与 L2TP 协议的联系与区别?
通俗解释:
PPP协议,点对点协议,相当于你乘飞机的廊桥,把飞机和登机大厅物理连接起来,然后把旅客(IP Packet)送到飞机(Internet)上。
而如果没有廊桥,需要摆渡车,L2TP与PPTP就相当于这个摆渡车。
L2TP是一辆敞篷车,没有安全,为了全车旅客的安全,配备了安全人员(IPsecurity),保护所有乘客(IP Packet),安全到达目的地,然后再登机(Internet)。
PPTP是两辆车,一辆负责开道(控制通道,TCP Port 1723,用于建立安全通道),一辆运送旅客(IP/GRE)安全通道,运送旅客的车配备了一些安全人员,只负责保卫VIP旅客(IP Packet,end user traffic)的安全,其它旅客(IP Packet,control traffic)就没有人保卫,最终也到达目的地,登机(Internet)。
你可以看出,它们是殊途同归,最终的目的都是为了把旅客(IP Packet)送上飞机(Internet),只是途径不一样,安全级别也不一样。
专业同学通道:
PPTP:Point to Point Protocol Tunnel Protocol
L2TP: Layer 2 Tunnel Protocol
如果非要说他们有什么联系,那就是他们都能把PPP协议作为自己的Payload,封装PPP协议,这是他们之间唯一的联系,那有人一定要问,PPP作为点对点协议用在拨号网络好好的,为什么要把它封装起来?还要用什么PPTP,L2TP做啥?文章有点长,坚持看下去,你将会有不一样的收获。
即然他们都和PPP协议有关,那我们一定要谈谈PPP,这是一种拨号上网协议,无论是传统电话网络PSTN、ISDN、还是ADSL,最终来完成用户认证,分配用户电脑/modem IP地址的都是由PPP协议来完成的,他们之间的差别只是传输介质不同,过程是殊途同归,就是在PPP client 和PPP server之间完成PPP会话,认证用户,分配IP地址。但是这三种传统的部署方式最大的不足:太不灵活了!需要client 和server 之间是点对点连接,无论是PSTN circuit 、ISDN circuit、ADSL subscriber,都需要在同一台电信局端设备上,第一完成电路的终结(circuit termination),第二完成PPP会话的终结 ( PPP session termination),见下图:
这就需要在PSTN 接入服务器(NAS)、ISDNNAS、DSLAM NAS上:
配置PPP 服务器
配置认证服务器
配置地址池
这将会有很多很多的NAS存在于不同的网络,这种非常分散的方式不利于管理,而且管理成本很高。
于是就有了一种设想,能否把电路的终结与PPP会话的终结这两个功能物理分离,在一台设备上完成电路的终结,另一台设备完成PPP会话的终结。在这两台物理分离的设备上,以IP网络为传输介质,建立一个隧道tunnel, 来把电路终结剥离出来的PPP封装在这个隧道上,传输到PPP服务器,完成PPP会话的终结,这样我们只需要一台、二台集中的PPP服务器就可以了,见下图,值得庆幸的是,我们恰恰有这两种隧道协议可以完成这个设想。
这两种隧道协议就是PPTP和L2TP,虽然它们最终实现的目标一致,即封装PPP协议,穿越IP网络/ATM云/MPLS云,到达PPP Server,完成PPP会话,以及PPP用户数据流量,但是它们的实现方式大相径庭,所以我们还是分开介绍,先来谈谈PPTP协议。
PPTP
由微软公司牵头设计的企业标准,后来标准化,但是还是留下深深的企业烙印,对应标准RFC2637。
分control connection 和 tunnel connection 两个层次:
Control connection是一种基于TCP的连接,用于协商如何建立、释放、修改tunnel,如何区别这些tunnel。
PAC -----------TCP 1723-------------PNS
Tunnel connection 是一种基于增强型GRE,跑在IP层上,协议号47,所谓增强型,是GRE头有Key Tunnel ID,一方面可以区分tunnel,另一方面可以无障碍穿越NAT设备。
PAC -----------Enhanced GRE-------------PNS
综上,无论是控制、数据层面都是跑在IP层以上的,所以PPTP离不开IP网络的支持。另外控制层面、数据层面的分离,多通道的模式使实现起来较复杂,配置防火墙策略也要同时考虑2个通道。
另外PPTP只是靠被封装的PPP协议来提供安全性,TCP会话以及GRE Tunnel都是明文方式,安全性强度不够高。
L2TP
我们这里谈的是L2TPv2,即由思科公司牵头开发的协议,对应的标准是RFC2661。
即然是由思科来牵头设计这个协议,那肯定要考虑网络的多样性,而不能像微软公司设计PPTP那样,仅仅考虑IP网络作为底层传输网络,所以L2TP可以传输在以下网络上:
1)IP网络
协议号:115
LAC -----------IP 115------------LNS
优点是协议头较小,但不利于NAT Transversal
2)IP/UDP
UDP PORT 1701
LAC -----------UDP 1701-----------LNS
方便NAT transversal
3)二层ATM交换网络
LAC -----------ATM-----------LNS
可以承载在ATM云上
4)MPLS
LAC -----------MPLS-----------LNS
可以承载在二层、三层MPLS VPN上
5)Frame Relay
LAC -----------Frame Relay-----------LNS
可以承载在帧中继交换网络上
此外,控制层面、数据层面使用同一个通信通道,即用一个IP tunnel ,或同一个UDP tunnel ,简化网络的实现与部署。
综合以上对网络多样性的支持、以及单通道的实现,使的L2TP获得更广泛的支持,所以L2TP获得了发展与升级,现在最新版是L2TPv3,不仅支持对PPP的封装,还支持Ethernet 、ATM、HDLC、Frame Relay 的封装,几乎可以和Layer 2 MPLS匹敌了,对应的协议标准RFC3931。
但是L2TP本身也不提供安全加密,需要借助IP security来加密L2TP tunnel,因为是加密整个tunnel,所以安全性更高。
以上PPTP,L2TP都是配置在接入网,其实这两个协议非常灵活,只要有IP网络的主机、服务器、路由器都可以使用,我们来谈谈PPTP、L2TP配置在用户电脑上的场景。
用户希望PPTP、或者L2TP+ IP security 来远程拨号到公司服务器,获得公司VPN的连接。
这里有一个前提,就是用户已经ADSL上网了,有了IPconnectivity ,这个时候这两种协议都可以实现,只要保证以下前提:
a) PPTP
防火墙开放 TCP 1723
防火墙开放 IP protocol 47,即GRE
NAT设备 支持enhanced GRE
b) L2TP
采用UDP tunnel
防火墙开放 UDP 1701 L2TP
防火墙开放 UDP 500 IKE
防火墙开放 UDP 4500 IKE NAT Transversal
至于ESP,因为封装在UDP tunnel 里,所以没有必要单独考虑。