1.L2TP简介
2)LAC(L2TP Access Concentrator,L2TP 访问集中器)
3)LNS(L2TP Network Server,L2TP 网络服务器)
2、会话和隧道这两个概念
3 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隧道拆除
4、L2TP数据连接
L2TP数据消息用于封装PPP帧,并在隧道上传输。
原始用户数据为IP报文,先经过PPP封装,然后链路层将PPP帧进行L2TP封装,将其封装成UDP,并继续封装成可以在internet上传输的IP报文,此时的结果就是IP报文中有PPP帧,PPP帧中还有IP报文,但两个IP地址不同,里面的IP头部是私有地址(原地址为L2TP服务器动态分配的地址,目的地址为公司内网服务器的地址),外层IP头部的原IP是客户端的原始地址,目的IP是L2TP服务器的地址,至此完成客户端数据封装,然后通过L2TP隧道将报文发送到L2TP服务器,L2TP服务器收到封装的IP报文,发现外层IP头部的目的地址是指定自己的,然后L2TP服务器解封装报文,得到里面的IP报文,然后根据IP头部的的目的IP地址将数据包发送到内网局域网服务器。
L2TP是用来封装PPP帧的,L2TP隧道建立以后,发起的创建会话过程就是PPP的交互流程,具体如下:
1)PPP工作流程
一个IP分组需要传输,出发PPP层启动连接过程,LCP协议负责完成连接的建立过程,PAP或者CHAP协议完成身份认证,IPCP协议进一步完成网络层协议协商,当以上过程都成功完成之后,IP分组封装在PPP帧中传输到对方
2)PPP协议分析
LCP:负责链路的建立,维护以及拆除
CHAP:对客户端进行身份认证
IPCP:负责协商IP地址以及DNS等信息
6、 L2TP实际应用中的交互报文