L2TP协议
L2TP(Layer 2 Tunneling Protocol) 第二层隧道协议。该协议是工业标准的Internet隧道协议。
L2TP实现的两种方式
LAC (L2TP Access Concentrator L2TP访问集中器)是附属在交换机网络中具有PPP端系统和L2TP协议处理能力的设备。LAC一般是一个网络接入服务器NAS(Network Access Server),主要用于通过PSTN/ISDN网络为用户提供接入服务。
LNS (L2TP Network Server L2TP网络服务器)是PPP端系统上用于处理L2TP协议服务器端部分的设备。
VPDN (virtual Private Dial Network,虚拟私有拨号网) 指利用公共网络(如ISDN,PSDN)的编号功能及接入网来实现虚拟专用网。
(1)PC机和LNS直连
(2)PC机通过LAC拨号连接到LNS
L2TP封装
PC机的报文在PPP内网环境中发送到LAC,由LAC封装L2TP,再通过外网的报文正常转发给LNS的报文封装过程。
从pc到LAC的报文PPP下还有pppoe和ethernet II,如下:
如果需要抓到上图完整的报文,需要到LAC到LNS的链路抓取报文
隧道和会话
LAC和LNS之间存在两种连接,隧道连接(一对LAC和LNS之间可以有多个L2TP隧道)和会话连接(复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话进程)
隧道由一个控制连接和一个或多个会话连接组成。会话必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。控制消息和PPP数据报文都在隧道上传输。
L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,该隧道连接将被断开。
L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(Session ID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。
消息类型
L2TP是数据链路层协议,报文分为数据消息和控制消息。数据消息用PPP帧,该帧作为L2TP报文的数据区,L2TP不保证数据消息的可靠投递,若报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。
控制消息用以建立、维护和终止控制连接及会话,L2TP确保其可靠投递,并支持对控制消息的流量控制和拥塞控制。
L2TP/IPSec
通常,L2TP会和IPSec结合使用,IPSec提供加密功能,此时数据封装形式为:
L2TP vs PPTP
(1)PPTP要求互联网络为IP网络,L2TP只要求隧道媒介提供面向数据包的点对点连接。L2TP可以在IP(使用UDP),帧中继永久虚拟电路,ATM 虚拟电路网络上使用
(2)PPTP只能在两端点之间建立单一隧道,L2TP支持在两端点见使用多隧道。使用L2TP,用户可以针对不同的服务质量创建不同的隧道
(3)L2TP可以提供包头压缩。当压缩包头时,系统开销占用4个字节,而PPTP协议要用6个字节
(4)PPTP依靠MPPE提供加密服务,而L2TP依靠IPSec提供加密服务
出处:http://www.cnblogs.com/gtarcoder/p/6259107.html
补充:
L2TP VPN的原生使用环境
第9期专栏讲的是VPN的起源,这一期讲讲VPN中的VPDN(Virtual Private Dial Network虚拟拨号专线网络)的主力技术L2TP(Layer 2 Tunnel Protocol二层隧道协议l),上图说明了VPDN的一些特点,出差员工或者外出员工通过拨特定号码的方式接入到企业内部网络:
- 运营商对外提供L2TP VPN服务
- 有远程拨入需要的企业想运营商提出申请,交费,开通
- 企业要对运营商提供一个L2TP LNS(L2TP Network Server网络服务器)作为企业内部网络入口
- 运营商提供一个L2TP LAC(L2TP Access Concentrator接入汇聚点),LAC要和企业LNS之间跨越运营商IP网络建立L2TP隧道,同时运营商将一个电话号码15400分配给LAC,以供出差员工拨入
- 当出差员工或者外出员工使用Modem或者特制手机拨打号码15400,此时Modem就连接到LAC
- L2TP是收费服务,而且企业不可能让任何人拨入这个网络,所以安全性肯定要考虑,结合上期网络身份保护的内容,LAC对拨入用户要进行身份确认,典型的身份确认方式就是用户名、密码验证,这个身份信息列表由企业提供,运营商执行
- LAC确认身份无误后就把这次呼叫封装到L2TP隧道里送给LNS
- LNS再对用户进行一次身份验证,验证通过后对远端用户分配IP地址
- 远端用户获得IP地址后,就可以访问企业内部网络了
具体处理流程如下:
从上图可以发现,出差员工和LAC之间只有PPP会话,没有任何L2TP的内容,L2TP隧道、会话只存在于LAC和LNS之间:
- L2TP使用的是UDP封装,端口号1701
- L2TP隧道在LAC和LNS之间只有1个,协商隧道时可以使用身份确认
- L2TP会话在隧道内部可以有多个,一个会话对应一个PPP会话,即有多少个出差员工拨号,就会有多少个L2TP会话
所以,如果一个出差员工拨号到LAC时,LAC检查到LNS的L2TP隧道已经建立,那么LAC直接和LNS协商一个新会话;当一个隧道内没有任何会话时,隧道才会被拆除。L2TP原生应用场景的数据封装流程如下图所示:
可以发现出差员工发送的是纯PPP数据,到了LAC之后则增加了L2TP隧道封装,得以穿越运营商内部的IP网络,这样企业私有数据不会暴露到运营商IP网络之中。L2TP隧道封装数据到了LNS之后,LNS进行VPN数据剥离,反向流量封装顺序将流程逆转、源目的调换即可。
运营商使用1个LAC同时为多个企业服务
从LAC命名来说,我们可以知道这个东西必定价格不菲,运营商肯定不可能为每个企业单独设置一台LAC和一个号码,因为这么做成本很高,赚不到钱,运营商的想法是只用1个LAC、1个号码同时为多个企业服务:
如上图所示,该LAC同时为弯曲评论、华三通信、惠普三家企业同时提供L2TP VPN接入服务,这是怎么做到的呢?答案很简单:
- 我们在第一节中讲到了LAC要对拨入用户进行身份验证,可以在这里做文章
- 不同企业的用户肯定不一样,在身份验证时,根据不同的用户名找到不同的LNS即可
- 由于不同企业的人用户名有可能相同,所以这时的身份是带域名的用户名,比如弯曲评论的员工用户名是abc@tektalk.org,而华三的员工则是abc@h3c.com,惠普员工则是@hp.com
- 有了后缀域名,运营商只要少量的LAC,创造的收入就很紧实了
新网络时代的L2TP VPN
随着ADSL等高速接入技术的普及(xDSL下行最高速度可以达到12M),而普通的Modem接入速度只有56k,在这种情况下,高速L2TP VPN接入需求变得很迫切:
如上图所示,新网络时代的L2TP VPN基本上没有运营商什么事,因为没有LAC了,L2TP跨越的网络直接就是互联网:
- 企业总部还是要提供L2TP LNS,对互联网上的出差员工提供接入
- 该LNS最好要有一个固定都IP地址,如60.1.99.140,如果地址是变动的,那么需要实用DDNS和一个固定域名如l2tp.tektalk.org绑定起来,为什么呢,如果没有这个地址或域名,你让出差员工拨入到哪呢,这个地址和域名的作用就相当于原生L2TP VPN中的LAC电话号码15400
- LAC功能(或者叫L2TP客户端)一般集成在出差员工PC上,如Windows XP系统自带L2TP客户端
- 出差员工通过设置拨号连接的IP地址或域名,开始向总部LNS发起连接
- 建立L2TP隧道后协商L2TP会话
- L2TP会话协商结束,开始进行PPP参数协商,主要是身份确认和地址分配
- 获得地址后就算是连接到企业内部网络了,VPN建立成功
- L2TP会话结束,立刻拆除隧道,因为在这种模式中,每个客户端都需要和LNS建立隧道,而这个隧道中只有1个PPP会话
具体处理流程如下图所示:
很多时候出差员工是在宾馆上网,而宾馆客房网络通常都是通过NAT接入到互联网的,比如前图所示有2个出差员工的PC地址都是192.168.1.2,那么可以正常连接到LNS吗?
由于L2TP使用UDP 1701端口封装隧道,所以根据第10期专栏互联网穿越NAT介绍,它可以穿越出差员工的NAT网关,经过NAT转换后,两名员工的连接地址分别变成2.17.2.1和6.24.1.1,LNS可以做出正确的区分,L2TP VPN显然可以轻松应对这种条件。
下一期我们介绍另外一个VPN技术——IPSec VPN。
出处:
http://www.h3c.com.cn/MiniSite/Technology_Circle/Technology_Column/ICG/ICG_Technology/201004/671383_97665_0.htm