内容纲要

虚拟专用网 (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 服务的可靠性和容错性。

发表评论

电子邮件地址不会被公开。 必填项已用*标注