L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是VPDN(Virtual Private Dial-up Network,虚拟私有拨号网)隧道协议的一种。
VPDN是指利用公共网络(如ISDN或PSTN)的拨号功能接入公共网络,实现虚拟专用网,从而为企业、小型ISP、移动办公人员等提供接入服务。即,VPDN为远端用户与私有企业网之间提供了一种经济而有效的点到点连接方式。
VPDN采用专用的网络通信协议,在公共网络上为企业建立安全的虚拟专网。企业驻外机构和出差人员可从远程经由公共网络,通过虚拟隧道实现和企业总部之间的网络连接,而公共网络上其它用户则无法穿过虚拟隧道访问企业网内部的资源。
VPDN有以下两种实现方式:
l 接入服务器发起VPDN连接
NAS(Network Access Server,网络接入服务器)通过使用VPDN隧道协议,将客户的PPP连接直接连到企业的VPDN网关上,从而与VPDN网关建立隧道。这些对于用户是透明的,用户只需要登录一次就可以接入企业网络,由企业网进行用户认证和地址分配,而不占用公共地址。该方式需要NAS支持VPDN协议、认证系统支持VPDN属性。
l 用户发起VPDN连接
客户端与VPDN网关建立隧道。这种方式由客户端先建立与Internet的连接,再通过专用的客户软件(如Windows 2000支持的L2TP客户端)与VPDN网关建立隧道连接。用户上网的方式和地点没有限制,不需ISP介入。但是,用户需要安装专用的软件(一般都是Windows 2000平台),限制了用户使用的平台。
VPDN网关一般使用路由器或VPN专用服务器。
VPDN隧道协议主要包括以下三种:
l PPTP(Point-to-Point Tunneling Protocol,点到点隧道协议)
l L2F(Layer 2 Forwarding,二层转发)
l L2TP
目前使用最广泛的是L2TP。
使用L2TP协议构建的VPDN应用的典型组网如图 1所示。
图 1 应用L2TP构建的VPDN服务
在L2TP构建的VPDN中,网络组件包括以下三个部分:
l 远端系统
远端系统是要接入VPDN网络的远地用户和远地分支机构,通常是一个拨号用户的主机或私有网络的一台路由设备。
l LAC(L2TP Access Concentrator,L2TP访问集中器)
LAC是附属在交换网络上的具有PPP端系统和L2TP协议处理能力的设备,通常是一个当地ISP的NAS,主要用于为PPP类型的用户提供接入服务。
LAC位于LNS和远端系统之间,用于在LNS和远端系统之间传递信息包。它把从远端系统收到的信息包按照L2TP协议进行封装并送往LNS,同时也将从LNS收到的信息包进行解封装并送往远端系统。
LAC与远端系统之间采用本地连接或PPP链路,VPDN应用中通常为PPP链路。
l LNS(L2TP Network Server,L2TP网络服务器)
LNS既是PPP端系统,又是L2TP协议的服务器端,通常作为一个企业内部网的边缘设备。
LNS作为L2TP隧道的另一侧端点,是LAC的对端设备,是LAC进行隧道传输的PPP会话的逻辑终止端点。通过在公网中建立L2TP隧道,将远端系统的PPP连接的另一端由原来的LAC在逻辑上延伸到了企业网内部的LNS。
PPP定义了一种封装技术,可以在二层的点到点链路上传输多种协议数据包,当用户与NAS之间运行PPP协议时,二层链路端点与PPP会话点驻留在相同硬件设备(NAS)上。
L2TP(RFC 2661)是一种对PPP链路层数据包进行隧道传输的技术,允许二层链路端点(LAC)和PPP会话点(LNS)驻留在通过分组交换网络连接的不同设备上,从而扩展了PPP模型,使得PPP会话可以跨越帧中继或Internet等网络。
L2TP结合了L2F和PPTP的各自优点,成为IETF有关二层隧道协议的工业标准。
图 2描述了控制通道以及PPP帧和数据通道之间的关系。PPP帧在不可靠的L2TP数据通道上进行传输,控制消息在可靠的L2TP控制通道内传输。
图 2 L2TP协议结构
图 3描述了LAC与LNS之间的L2TP数据报文的封装结构。通常L2TP数据以UDP报文的形式发送。L2TP注册了UDP 1701端口,但是这个端口仅用于初始的隧道建立过程中。L2TP隧道发起方任选一个空闲的端口(未必是1701)向接收方的1701端口发送报文;接收方收到报文后,也任选一个空闲的端口(未必是1701),给发送方的指定端口回送报文。至此,双方的端口选定,并在隧道保持连通的时间段内不再改变。
图 3 L2TP报文封装结构图
在一个LNS和LAC对之间存在着两种类型的连接。
l 隧道(Tunnel)连接:它对应了一个LNS和LAC对。
l 会话(Session)连接:它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。
在同一对LAC和LNS之间可以建立多个L2TP隧道,隧道由一个控制连接和一个或多个会话连接组成。会话连接必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。
控制消息和PPP数据报文都在隧道上传输。L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,隧道断开。
L2TP中存在两种消息:控制消息和数据消息。
l 控制消息用于隧道和会话连接的建立、维护以及传输控制。它的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制。
l 数据消息用于封装PPP帧,并在隧道上传输。它的传输是不可靠传输,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。
控制消息和数据消息共享相同的报文头。L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(Session ID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上。报文头中的隧道标识符与会话标识符由对端分配。
L2TP隧道的建立包括以下两种典型模式。
l NAS-Intiated
如图 4所示,由LAC端(指NAS)发起L2TP隧道连接。远程系统的拨号用户通过PPPoE/ISDN拨入LAC,由LAC通过Internet向LNS发起建立隧道连接请求。拨号用户的私网地址由LNS分配;对远程拨号用户的验证与计费既可由LAC侧代理完成,也可在LNS侧完成。
l Client-Initiated
如图 5所示,直接由LAC客户(指本地支持L2TP协议的用户)发起L2TP隧道连接。LAC客户获得Internet访问权限后,可直接向LNS发起隧道连接请求,无需经过一个单独的LAC设备建立隧道。LAC客户的私网地址由LNS分配。
在Client-Initiated模式下,LAC客户需要具有公网地址,能够直接通过Internet与LNS通信。
L2TP应用的典型组网如图 6所示。
图 6 L2TP应用的典型组网
下面以NAS-Initiated模式的L2TP隧道为例,介绍L2TP的呼叫建立流程。
图 7 L2TP隧道的呼叫建立流程
如图 7所示,L2TP隧道的呼叫建立流程过程为:
(1) 远端系统Host发起呼叫连接请求;
(2) Host和LAC端(RouterA)进行PPP LCP协商;
(3) LAC对Host提供的用户信息进行PAP或CHAP认证;
(4) LAC将认证信息(用户名、密码)发送给RADIUS服务器进行认证;
(5) RADIUS服务器认证该用户,如果认证通过,LAC准备发起Tunnel连接请求;
(6) LAC端向指定LNS发起Tunnel连接请求;
(7) 在需要对隧道进行认证的情况下,LAC端向指定LNS发送CHAP challenge信息,LNS回送该challenge响应消息CHAP response,并发送LNS侧的CHAP challenge,LAC返回该challenge的响应消息CHAP response;
(8) 隧道验证通过;
(9) LAC端将用户CHAP response、response identifier和PPP协商参数传送给LNS;
(10) LNS将接入请求信息发送给RADIUS服务器进行认证;
(11) RADIUS服务器认证该请求信息,如果认证通过则返回响应信息;
(12) 若用户在LNS侧配置强制本端CHAP认证,则LNS对用户进行认证,发送CHAP challenge,用户侧回应CHAP response;
(13) LNS再次将接入请求信息发送给RADIUS服务器进行认证;
(14) RADIUS服务器认证该请求信息,如果认证通过则返回响应信息;
(15) 验证通过,LNS端会给远端用户分配一个企业网内部IP地址,用户即可以访问企业内部资源。
L2TP协议本身并不提供连接的安全性,但它可依赖于PPP提供的认证(比如CHAP、PAP等),因此具有PPP所具有的所有安全特性。L2TP可与IPsec结合起来实现数据安全,这使得通过L2TP所传输的数据更难被攻击。L2TP还可根据特定的网络安全要求在L2TP之上采用隧道加密技术、端对端数据加密或应用层数据加密等方案来提高数据的安全性。
L2TP传输PPP数据包,在PPP数据包内可以封装多种协议。
LAC和LNS可以将用户名和密码发往RADIUS服务器进行验证申请,RADIUS服务器负责接收用户的验证请求,完成验证。
LNS可放置于企业网的防火墙之后,它可以对远端用户的地址进行动态的分配和管理,可支持私有地址应用(RFC 1918)。为远端用户所分配的地址不是Internet地址而是企业内部的私有地址,这样方便了地址的管理并可以增加安全性。
可在LAC和LNS两处同时计费,即ISP处(用于产生帐单)及企业网关(用于付费及审计)。L2TP能够提供数据传输的出入包数、字节数以及连接的起始、结束时间等计费数据,可根据这些数据方便地进行网络计费。
L2TP协议支持备份LNS,当主LNS不可达之后,LAC可以与备份LNS建立连接,增加了VPN服务的可靠性和容错性。