1、保护PPP报文。
2、数据没有加密机制,可通过IPSEC保证数据安全。
3、同3层VPN(IPSec\GRE)有所区别的是,L2TP是将来自用户网络的私有数据从二层PPP头部开始进行封装,而三层VPN是将来自用户网络的私有数据从三
层IP报头开始进行封装
4、主要用途:企业驻外机构和出差人员可从远程经由公共网络,通过虚拟隧道实现和企业总部之间的网络连接。
L2TP报文封装层次结构
IP报文头 (公网地址) | UDP 报文头 | L2TP 报文头 | PPP 报文头 | IP报文头 (私网地址) | Data |
L2TP报文头格式
L2TP报文头字段说明:
T:消息类型标志位,0为数据报文,1为控制报文。
二、L2TP的关键组件(它们之间通过协商建立隧道)
1、LAC(L2TP Access Concentrator,L2TP 访问集中器)
问服务器),主要用于为PPP 类型的用户提供接入服务。LAC 位于LNS 和远端系统之间,用于在LNS和远端系统之间传递信息包。它把从远
端系统收到的信息包按照L2TP 协议进行封装并送往LNS,同时也将从LNS收到的信息包进行解封装并送往远端系统。LAC 与远端系统之间采
用本地连接或PPP 链路,VPDN 应用中通常为PPP链路。
2、LNS(L2TP Network Server,L2TP 网络服务器)
LAC的对端设备,是LAC 进行隧道传输的PPP 会话的逻辑终止端点。通过在公网中建立L2TP隧道,将远端系统的PPP 连接的另一端由原来
LAC 在逻辑上延伸到了企业网内部的LNS。
3、VPN用户:
三、会话和隧道这两个概念
(Session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。
型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。控制消息和PPP数据报文都在隧道上传输。
接将被断开。
识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。
速公路,一台拨号PC的数据流为一个会话,相当于占用了一个车道(告诉公路有多少车道是设备规定好的),这个车道只能跑这个运载这个
PC的报文的卡车。(比如某型号设备每条隧道最多支持1000个会话)。
L2TP协议
L2TP协议在TCP/IP协议栈中的位置
此图说明了L2TP协议在整个TCP/IP层次结构中位置,也指明了ip数据包在传输过程中所经过的协议栈结构和封装过程;
我们以一个用户侧的IP报文的传递过程来描述VPN工作原理,黄色标示的IP为需要传递的用户数据!
在LAC侧的链路层将用户数据报文作为加上ppp封装,然后传递给L2TP协议,L2TP再封装成UDP报文,UDP再次封装成可以在
Internet上传输的IP报文,此时的结果就是IP报文中又有IP报文,但两个IP地址不同,一般用户报文的IP地址是私有地址,而LAC上的IP地址
为公有地址,至此完成了VPN的私有数据的封装;
在LNS侧,收到L2TP/VPN的IP报文后将IP、UDP、L2TP报文头去掉后就恢复了用户的PPP报文,将PPP报文头去掉就可以得到IP报
文,至此用户IP数据报文得到,从而实现用户ip数据的透明隧道传输,而且整个PPP报头/报文在传递的过程中也保持未变,这也验证了L2TP
是一个二层VPN隧道协议!
L2TP协商交互过程
为了在VPN用户和服务器之间传递数据报文,必须在LAC和LNS之间建立传递数据报文的隧道和会话连接,隧道是保证具有相同会
话连接特性的一组用户可以共享的连接属性所定义的通道,而会话是针对每个用户与企业VPN服务器建立连接的PPP数据通道,多个会话复
用在一个隧道连接上隧道和会话是动态建立与删除的。
会话的建立是由PPP模块触发,如果该会话在建立时没有可用的隧道结构,那么先建立隧道连接,会话建立完毕后开始进行数据传输!
1)L2TP建立流程
L2TP隧道的建立是一个三次握手的过程,首先由LAC发起隧道建立请求SCCRQ,LNS收到请求后进行应答SCCRP,最后LAC在收到应
答后再给LNS返回确认SCCCN;隧道建立。
会话建立的过程与隧道类似,首先由LAC发起会话建立请求ICRQ,LNS收到请求后返回应答ICRP,LAC收到应答后返回确认ICCN,会
话建立!
L2TP的会话建立由PPP触发,隧道建立由会话触发。由于多个会话可以复用在一条隧道上,如果会话建立前隧道已经建立,则隧道不用
重新建立。
2)L2TP隧道的维护
隧道建立后,一直要等到该隧道所属会话全部下线后,再进行拆除,为了确认对端的隧道结构依然存在,需要定时发送与对端的维护报
文,其流程为:LAC或LNS发出Hello报文,对应的LNS或LAC发出确认信息!
3)L2TP隧道拆除
隧道拆除流程比其建立过程要简单,隧道的任何一端发出拆链通知StopCCN,对端返回确认;会话的拆除流程为:会话一端发出拆链通知CDN,对端返回确认即可!
加密过程:
c1= p1⊕ MD5(AV|S|RV)
c2= p2⊕ MD5(S|c1)
…
ci = pi⊕ MD5(S|ci-1)
其中AV是2字节的属性类型,S是通信双方的共享秘密,RV为随机向量
对应解密过程是:
p1=c1⊕ MD5(AV|S|RV)
p2=c2 ⊕ MD5(S|c1)
…
pi=ci ⊕ MD5(S|ci-1)
其中AV是2字节的属性类型,S是通信双方的共享秘密,RV为随机向量