第1章 L2TP协议原理及背景 & 常识点
l L2TP协议隧道建立过程 l L2TP协议隧道维护过程 l L2TP与PPTP的区别
1.1 L2TP概述与背景L2TP(Layer Two Tunneling Protocol,二层隧道协议) 是VPDN(虚拟专用拨号网络)技术的一种,专门用来进行第二层数据的通道传送,即将第二层数据单元,如点到点协议(PPP)数据单元,封装在IP或UDP载荷内,以顺利通过网络(如Internet),抵达目的地。类似点对点隧道协议(PPTP),通过其他远程访问技术,例如通过DSL所提供的Internet访问,它可以被用于为隧道式端对端Internet连接提供安全保护。与 PPTP 不同,L2TP不依赖特定厂商的加密技术即可达到完全安全和成功的实施。由于此原因,它可能成为Internet上保护虚拟专用网安全的标准。L2TP是一个工业标准Internet隧道协议,它和点对点隧道协议(PPTP)的功能大致相同。L2TP的Windows Server 2003家族的实施设计为通过 IP 网络在本机运行。L2TP 的实施不支撑通过X.25、帧中继网络的本地隧道。根据第二层转发(L2F)和点对点隧道协议(PPTP)的规范,您可以使用L2TP通过中介网络建立隧道。与PPTP一样,L2TP也会压缩点对点协议(PPP)帧,从而压缩IP、IPX或NetBEUI协议,因此允许用户远程运行依赖特定网络协议的应用程序。 L2TP的主要特性有: 1. L2TP适合单个或少数用户接入企业的情况,其点到网连接的特性是其承载协议PPP所约定的; 2. 由于L2TP对私有网的数据包进行了封装因此在Internet上传输数据时对数据包的网络地址是透明的,并支撑接入用户的内部动态地址分配; 3. 与PPP模块配合,支撑本地和远端的AAA功能(认证、授权和记费)对用户的接入也可根据需要采用全用户名,用户域名和用户拨入的特殊服务号码来识别是否为VPN用户。 4. 对数据报文的安全性可采用IPSEC协议采用该协议即可以在用户发往Internet之前对数据报文加密即用户控制方式也可采用在VPN端系统LAC侧加密即服务提供商控制方式。 5. 对于拨号用户可以配置相应的VPN拨号App,发起由用户直接对企业私有网的连接,这样用户在上网时可以灵活选择是否需要VPN服务。 1.2 L2TP的原理图1.2‑1 L2TP组网图 1.2.1 术语LAC:L2TP Access Concentrator,为L2TP的接入设备,它提供各种用户接入的AAA服务,发起隧道和会话连接的功能,以及对VPN用户的代理认证功能,它是ISP侧提供VPN服务的接入设备,在物理实现上,它可以是配置L2TP的路由器,或接入服务器也可以是专用的VPN服务器。 LNS:L2TP Network Server,为L2TP企业侧的VPN服务器,该服务器完成对用户的最终授权和验证,接收来自LAC的隧道和连接请求,并建立连接LNS和用户的PPP通道。 Incoming Call(呼入):LAC接收到的一个呼叫,请求建立一个到LNS的隧道。 Outgoing Call(呼出):由于LNS的请求而由LAC发出的一个呼叫。 Proxy LCP and Authentication(代理验证):L2TP的正常协商包含了两次PPP的协商过程(两次LCP协商和两次认证的过程)。第一次协商是在用户端和LAC(ISP)之间进行的,第二次协商是在用户端和LNS(企业网关)之间进行的。所谓代理验证就是第二次PPP协商不再需要,而是由LNS端对第一次协商的参数进行验证,如果验证通过,则直接进行PPP的下一步协商。 1.2.2 L2TP协议结构图1.2‑2 L2TP协议结构图 T:T位表示信息类型。若是数据信息,该值为0;若是控制信息,该值为1。 L:当设置该字段时,说明Length字段存在,表示接收数据包的总长。对于控制信息,必须设置该值。 X:X位为将来扩张预留使用。在导出信息中所有预留位被设置为0,导入信息中该值忽略。 S:如果设置S位,那么Nr字段和Ns字段都存在。对于控制信息,S位必须设置。 O:当设置该字段时,表示在有效负载信息中存在Offset Size字段。对于控制信息,该字段值设为0。 P:如果Priority(P)位值为1,表示该数据信息在其本地排队和传输中将会得到优先处理。 Ver:Ver位的值总为002。它表示一个版本1L2TP信息。 Length:信息总长,包括头、信息类型AVP以及另外的与特定控制信息类型相关的AVPs。 TunnelID:控制信息应用的Tunnel。如果对等结构还没有接收到分配的Tunnel ID,那么Tunnel ID必须设置为0。一旦接收到分配的Tunnel ID,所有更远的数据包必须和Tunnel ID一起被发送。 Call ID:识别控制信息应用的Tunnel中的用户会话。如果控制信息在Tunnel中不应用单用户会话(例如,一个Stop-Control-Connection-Notification 信息),Call ID必须设置为0。 Nr:希望在下一个控制信息中接收到的序列号。 Ns:数据或控制信息的序列号。 Offset Size & Pad:该字段规定通过L2F协议头的字节数,协议头是有效负载数据起始位置。Offset Padding 中的实际数据并没有定义。如果Offset字段当前存在,那么L2TP头Offset Padding的最后八位字节后结束。 1.2.3 L2TP协议封装过程图1.2‑3 L2TP协议在TCP/IP协议栈中的位置 大家以一个用户侧的IP报文的传递过程来描述VPN工作原理,黄色标示的IP为需要传递的用户数据,经过PPP封装后到达LAC。 在LAC侧的链路层将用户数据报文传递给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隧道协议。 1.2.4 L2TP建立过程图1.2‑4 L2TP建立流程 L2TP隧道的建立是一个三次握手的过程,首先由LAC发起隧道建立请求SCCRQ,LNS收到请求后进行应答SCCRP,最后LAC在收到应答后再给LNS返回确认SCCCN;隧道建立。 会话建立的过程与隧道类似,首先由LAC发起会话建立请求ICRQ,LNS收到请求后返回应答ICRP,LAC收到应答后返回确认ICCN,会话建立。L2TP的会话建立由PPP触发,隧道建立由会话触发。由于多个会话可以复用在一条隧道上如果会话建立前隧道已经建立,则隧道不用重新建立。 1.2.5 L2TP维护过程 图1.2‑5 L2TP维护过程 隧道建立后,一直要等到该隧道所有会话全部下线后,再进行拆除,为了确认对端的隧道结构依然存在,需要定时发送与对端的维护报文,其流程为:LAC或LNS发出Hello报文,对应的LNS或LAC发出确认信息。 1.2.6 L2TP拆除过程图1.2‑6 L2TP拆除过程 隧道拆除流程比其建立过程要简单,隧道的任何一端发出拆链通知StopCCN,对端返回确认;会话的拆除流程为:会话一端发出拆链通知CDN,对端返回确认即可。 1.2.7 其他a.LAC与LNS或Client与LNS的消息交互的过程如下: 1. LAC向LNS发送SCCRQ(Start-Connect-Control-Request)消息,发起隧道建立请求 2. LNS向LAC发送SCCRP(Start-Connect-Control-Reply)消息,收到请求后应答 3. LAC向LNS发送SCCCN(Start-Connect-Control-Connected)消息,收到应答后返回确认 4. 通信隧道建立成功 5. LAC向LNS发送ICRQ(Incoming-Call-Request)消息,发起会话建立请求 6. LNS向LAC发送ICRP(Incoming-Call-Reply)消息,收到请求后返回应答 7. LAC向LNS发送ICCN(Incoming-Call-Connected)消息,收到应答后返回确认 8. PPP认证 9. 建立L2TP隧道会话 L2TP连接的维护以及PPP数据的传送都是通过L2TP消息的交换来完成的,这些消息再通过UDP的1701端口承载于TCP/IP之上。 L2TP报文分为控制报文和数据报文两类。控制报文包括L2TP通道的建立、维护、拆除,基于通道连接的会话连接的建立、维护、拆除,控制消息中的参数用AVP值对(Attribute Value Pair)来表示,使得协议具有很好的扩展性;在控制消息的传输过程中还应用了消息丢失重传和定时检测通道连通性等机制来保证了L2TP层传输的可靠性; 认证方式: 本地认证方式:在需要进行认证的一端(LAC或LNS)建立数据库,当用户进行拨号的时候,会从数据库中读取相应信息(即用户名和密码)进行认证。本地建立数据库的方式是通过user-group实现的。 Radius认证方式:在需要认证的一端(LAC或LNS)与radius server进行关联,通常是在LNS端。当用户进行拨号的时候,认证端(LAC或LNS)把用户信息发送到radius server上进行认证,radius server会把认证结果返回给认证端(LAC或LNS),认证端根据radius server返回的认证结果进行相应处理。 注:无论是本地认证或Radius认证,都要选择一种认证手段:pap或chap。
|