L2TP协议介绍1.协议背景ppp协议定义了一种封装技术,可以在二层的点到点链路上传输多种协议数据包,这时,用户与nas之间运行ppp协议,二层链路端点与ppp会话点驻留在相同硬件设备上。l2tp协议提供了对ppp链路层数据包的通道(tunnel)传输支持,允许二层链路端点和ppp会话点驻留在不同设备上,并且采用包交换网络技术进行信息交互,从而扩展了ppp模型。l2tp协议结合了l2f协议和pptp协议的各自优点,成为ietf有关二层隧道协议的工业标准。2.典型l2tp组网应用使用l2tp协议构建的vpdn应用的典型组网如图2-1所示:其中,lac表示l2tp访问集中器(l2tpaccessconcentrator),是附属在交换网络上的具有ppp端系统和l2tp协议处理能力的设备。lac一般是一个网络接入服务器nas,主要用于通过pstn/isdn网络为用户提供接入服务。lns表示l2tp网络服务器(l2tpnetworkserver),是ppp端系统上用于处理l2tp协议服务器端部分的设备。lac位于lns和远端系统(远地用户和远地分支机构)之间,用于在lns和远端系统之间传递信息包,把从远端系统收到的信息包按照l2tp协议进行封装并送往lns,将从lns收到的信息包进行解封装并送往远端系统。lac与远端系统之间可以采用本地连接或ppp链路,vpdn应用中通常为ppp链路。lns作为l2tp隧道的另一侧端点,是lac的对端设备,是被lac进行隧道传输的ppp会话的逻辑终止端点。3.l2tp协议的技术细节(1)l2tp协议结构上图所示l2tp协议结构描述了ppp帧和控制通道以及数据通道之间的关系。ppp帧在不可靠的l2tp数据通道上进行传输,控制消息在可靠的l2tp控制通道内传输。通常l2tp数据以udp报文的形式发送。l2tp注册了udp1701端口,但是这个端口仅用于初始的隧道建立过程中。l2tp隧道发起方任选一个空闲的端口(未必是1701)向接收方的1701端口发送报文;接收方收到报文后,也任选一个空闲的端口(未必是1701),给发送方的指定端口回送报文。至此,双方的端口选定,并在隧道保持连通的时间段内不再改变。(2)隧道和会话的概念在一个lns和lac对之间存在着两种类型的连接,一种是隧道(tunnel)连接,它定义了一个lns和lac对;另一种是会话(session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个ppp会话过程。在同一对lac和lns之间可以建立多个l2tp隧道,隧道由一个控制连接和一个或多个会话(session)组成。会话连接必须在隧道建立(包括身份保护、l2tp版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于lac和lns之间的一个ppp数据流。控制消息和ppp数据报文都在隧道上传输。l2tp使用hello报文来检测隧道的连通性。lac和lns定时向对端发送hello报文,若在一段时间内未收到hello报文的应答,该隧道连接将被断开。(3)控制消息和数据消息的概念l2tp中存在两种消息:控制消息和数据消息。控制消息用于隧道和会话连接的建立、维护以及传输控制;数据消息则用于封装ppp帧并在隧道上传输。控制消息的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制;而数据消息的传输是不可靠传输,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。控制消息和数据消息共享相同的报文头。l2tp报文头中包含隧道标识符(tunnelid)和会话标识符(sessionid)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。4.两种典型的l2tp隧道模式远端系统或lac客户端(运行l2tp协议的主机)与lns之间的隧道模式如图2-3所示:(1)由远程拨号用户发起。远程系统通过pstn/isdn拨入lac,由lac通过internet向lns发起建立通道连接请求。拨号用户地址由lns分配;对远程拨号用户的验证与计费既可由lac侧的代理完成,也可在lns侧完成。(2)直接由lac客户(指可在本地支持l2tp协议的用户)发起。lac客户拥有公网地址后,可直接向lns发起通道连接请求,无需再经过一个单独的lac设备。此时,lac客户的私网地址分配由lns来完成。5.l2tp隧道会话的建立过程l2tp应用的典型组网如下图所示:l2tp隧道的呼叫建立流程可如下图所示:l2tp隧道的呼叫建立流程过程为:(1)用户端pc机发起呼叫连接请求;(2)pc机和lac端进行ppplcp协商;(3)lac对pc机提供的用户信息进行pap或chap认证;(4)lac将认证信息(用户名、密码)发送给radius服务器进行认证;(5)radius服务器认证该用户,如果认证通过则返回该用户对应的lns地址等相关信息,并且lac准备发起tunnel连接请求;(6)lac端向指定lns发起tunnel连接请求;(7)lac端向指定lns发送chapchallenge信息,lns回送该challenge响应消息chapresponse,并发送lns侧的chapchallenge,lac返回该challenge的响应消息chapresponse;(8)隧道验证通过;(9)lac端将用户chapresponse、responseidentifier和ppp协商参数传送给lns;(10)lns将接入请求信息发送给radius服务器进行认证;(11)radius服务器认证该请求信息,如果认证通过则返回响应信息;(12)若用户在lns侧配置强制本端chap认证,则lns对用户进行认证,发送chapchallenge,用户侧回应chapresponse;(13)lns再次将接入请求信息发送给radius服务器进行认证;(14)radius服务器认证该请求信息,如果认证通过则返回响应信息;(15)验证通过,用户访问企业内部资源。6.l2tp协议的特点(1)灵活的身份验证机制以及高度的安全性l2tp协议本身并不提供连接的安全性,但它可依赖于ppp提供的认证(比如chap、pap等),因此具有ppp所具有的所有安全特性。l2tp可与ipsec结合起来实现数据安全,这使得通过l2tp所传输的数据更难被攻击。l2tp还可根据特定的网络安全要求在l2tp之上采用通道加密技术、端对端数据加密或应用层数据加密等方案来提高数据的安全性。(2)多协议传输l2tp传输ppp数据包,这样就可以在ppp数据包内封装多种协议。(3)支持radius服务器的验证lac端将用户名和密码发往radius服务器进行验证申请,radius服务器负责接收用户的验证请求,完成验证。(4)支持内部地址分配lns可放置于企业网的防火墙之后,它可以对远端用户的地址进行动态的分配和管理,可支持私有地址应用(rfc1918)。为远端用户所分配的地址不是internet地址而是企业内部的私有地址,这样方便了地址的管理并可以增加安全性。(5)网络计费的灵活性可在lac和lns两处同时计费,即isp处(用于产生帐单)及企业网关(用于付费及审计)。l2tp能够提供数据传输的出入包数、字节数以及连接的起始、结束时间等计费数据,可根据这些数据方便地进行网络计费。(6)可靠性l2tp协议支持备份lns,当一个主lns不可达之后,lac可以重新与备份lns建立连接,这样,增加了vpn服务的可靠性和容错性。下面从lac、lns两侧分别介绍l2tp的配置。