vpn协议之l2tp
2013-12-08 21:32:42 阿炯

虚拟专用网(VPN--Virtual Private Network)被定义为通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道,它是对企业内部网的扩展。

L2TP协议提供了对PPP链路层数据帧的隧道(Tunnel)传输支持,允许二层链路端点和PPP会话点驻留在不同设备上,并采用包交换技术进行信息交互,从而扩展了PPP模型。L2TP协议结合了L2F协议和PPTP协议的各自优点,成为IETF有关二层隧道协议的工业标准。

协议背景

PPP协议定义了一种封装技术,可以在二层的点到点链路上传输多种协议数据包,这时用户与NAS之间运行PPP协议,二层链路端点与PPP会话点驻留在相同硬件设备上。

L2TP协议通过以下方式扩展了PPP模型:

提供了对PPP链路层数据包的通道(Tunnel)传输支持。

允许二层链路端点和PPP会话点驻留在不同设备上。

采用包交换网络技术进行信息交互。

L2TP协议结合了L2F协议和PPTP协议的各自优点,成为IETF有关二层隧道协议的工业标准。

典型L2TP组网应用

使用L2TP协议构建的VPDN应用的典型。

其中,LAC表示L2TP访问集中器(L2TP Access Concentrator),是附属在交换网络上的具有PPP端系统和L2TP协议处理能力的设备。LAC一般是一个网络接入服务器NAS,主要用于通过PSTN/ISDN网络为用户提供接入服务。LNS表示L2TP网络服务器(L2TP Network Server),是PPP端系统上用于处理L2TP协议服务器端部分的设备。

LAC位于LNS和远端系统(远地用户和远地分支机构)之间,用于在LNS和远端系统之间传递信息包,把从远端系统收到的信息包按照L2TP协议进行封装并送往LNS,将从LNS收到的信息包进行解封装并送往远端系统。LAC与远端系统之间可以采用本地连接或PPP链路,VPDN应用中通常为PPP链路。LNS作为L2TP隧道的另一侧端点,是LAC的对端设备,是被LAC进行隧道传输的PPP会话的逻辑终止端点。

L2TP协议的技术细节

L2TP协议的技术细节介绍如下:

L2TP协议结构

L2TP协议结构描述了PPP帧和控制通道以及数据通道之间的关系。PPP帧在不可靠的L2TP数据通道上进行传输,控制消息在可靠的L2TP控制通道内传输。

通常L2TP数据以UDP报文的形式发送。L2TP注册了UDP 1701端口,但是这个端口仅用于初始的隧道建立过程中。L2TP隧道发起方任选一个空闲的端口(未必是1701)向接收方的1701端口发送报文;接收方收到报文后,也任选一个空闲的端口(未必是1701),给发送方的指定端口回送报文。至此,双方的端口选定,并在隧道保持连通的时间段内不再改变。

隧道和会话的概念

在一个LNS和LAC对之间存在着两种类型的连接,一种是隧道(Tunnel)连接,它定义了一个LNS和LAC对;另一种是会话(Session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。在同一对LAC和LNS之间可以建立多个L2TP隧道,隧道由一个控制连接和一个或多个会话(Session)组成。会话连接必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。控制消息和PPP数据报文都在隧道上传输。

L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,该会话将被清除。

控制消息和数据消息的概念

L2TP中存在两种消息:控制消息和数据消息。控制消息用于隧道和会话连接的建立、维护以及传输控制;数据消息则用于封装PPP帧并在隧道上传输。控制消息的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制;而数据消息的传输是不可靠传输,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。

控制消息和数据消息共享相同的报文头。L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(Session ID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。

两种典型的L2TP隧道模式

如所示,远端系统或LAC客户端(运行L2TP协议的主机)与LNS之间对PPP帧的隧道模式如下:

由远程拨号用户发起

远程系统通过PSTN/ISDN拨入LAC,由LAC通过Internet向LNS发起建立通道连接请求。拨号用户地址由LNS分配;对远程拨号用户的验证与计费既可由LAC侧的代理完成,也可在LNS侧完成。

直接由LAC客户(指可在本地支持L2TP协议的用户)发起。

此时LAC客户可直接向LNS发起通道连接请求,无需再经过一个单独的LAC设备。此时,LAC客户地址的分配由LNS来完成。

L2TP隧道会话的建立过程
L2TP隧道的呼叫建立流程



L2TP隧道的呼叫建立流程过程为:

用户端PC机发起呼叫连接请求

PC机和LAC端(Eudemon 1000E_A)进行PPP LCP协商。

LAC对PC机提供的用户信息进行PAP或CHAP认证。

LAC将认证信息(用户名、密码)发送给RADIUS服务器进行认证。

RADIUS服务器认证该用户,如果认证通过则返回该用户对应的LNS地址等相关信息,并且LAC准备发起Tunnel连接请求。

LAC端向指定LNS发起Tunnel连接请求。

LAC端向指定LNS发送CHAP challenge信息,LNS回送该challenge响应消息CHAP response,并发送LNS侧的CHAP challenge,LAC返回该challenge的响应消息CHAP response。

隧道验证通过。

LAC端将用户CHAP response、response identifier和PPP协商参数传送给LNS。

LNS将接入请求信息发送给RADIUS服务器进行认证。

RADIUS服务器认证该请求信息,如果认证通过则返回响应信息。

若用户在LNS侧配置强制本端CHAP认证,则LNS对用户进行认证,发送CHAP challenge,用户侧回应CHAP response。

LNS再次将接入请求信息发送给RADIUS服务器进行认证。

RADIUS服务器认证该请求信息,如果认证通过则返回响应信息。

验证通过,用户访问企业内部资源。

L2TP协议的特点

L2TP协议的特点如下:

灵活的身份验证机制以及高度的安全性

L2TP协议本身并不提供连接的安全性,但它可依赖于PPP提供的认证(比如CHAP、PAP等),因此具有PPP所具有的所有安全特性。L2TP可与IPSec结合起来实现数据安全,这使得通过L2TP所传输的数据更难被攻击。L2TP还可根据特定的网络安全要求在L2TP之上采用通道加密技术、端对端数据加密或应用层数据加密等方案来提高数据的安全性。

多协议传输

L2TP传输PPP数据包,这样就可以在PPP数据包内封装多种协议。

支持RADIUS服务器的验证

LAC端将用户名和密码发往RADIUS服务器进行验证申请,RADIUS服务器负责接收用户的验证请求,完成验证。

支持内部地址分配

LNS可放置于企业网的防火墙之后,它可以对远端用户的地址进行动态的分配和管理,可支持私有地址应用(RFC1918)。为远端用户所分配的地址不是Internet地址而是企业内部的私有地址,这样方便了地址的管理并可以增加安全性。

网络计费的灵活性

可在LAC和LNS两处同时计费,即ISP处(用于产生帐单)及企业网关(用于付费及审计)。L2TP能够提供数据传输的出入包数、字节数以及连接的起始、结束时间等计费数据,可根据这些数据方便地进行网络计费。

可靠性

L2TP协议支持备份LNS,当一个主LNS不可达之后,LAC可以重新与备份LNS建立连接,这样增加了VPN服务的可靠性和容错性。

参考链接
L2TP协议介绍