L2TP协议简介

传送门:L2TP代码实现

1. L2TP 概述

L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是 VPDN(Virtual Private Dial-up Network, 虚拟私有拨号网)隧道协议的一种。
VPDN 是指利用公共网络(如 ISDNPSTN)的拨号功能接入公共网络,实现虚拟专用网,从而为企业、小型 ISP、移动办公人员等提供接入服务。即,VPDN 为远端用户与私有企业网之间提供了一种经济而有效的点到点连接方式。
VPDN 采用专用的网络通信协议,在公共网络上为企业建立安全的虚拟专网。企业驻外机构出差人员可从远程经由公共网络,通过虚拟隧道实现和企业总部之间的网络连接,而公共网络上其它用户则无法穿过虚拟隧道访问企业网内部的资源。

VPDN 有以下两种实现方式:

  • 接入服务器发起 VPDN 连接
    NAS(Network Access Server,网络接入服务器)通过使用 VPDN 隧道协议,将客户的 PPP 连接直接连到企业的 VPDN 网关上,从而与 VPDN 网关建立隧道。这些对于用户是透明的,用户只需要登录一次就可以接入企业网络,由企业网进行用户认证和地址分配,而不占用公共地址。该方式需要 NAS 支持 VPDN 协议、认证系统支持 VPDN 属性。
  • 用户发起 VPDN 连接
    客户端与 VPDN 网关建立隧道。这种方式由客户端先建立与 Internet 的连接,再通过专用的客户软件(如 Windows 2000 支持的 L2TP 客户端)与 VPDN 网关建立隧道连接。用户上网的方式和地点没有限制,不需 ISP 介入。但是,用户需要安装专用的软件(一般都是 Windows 2000 平台),限制了用户使用的平台。
    VPDN 网关一般使用路由器或 VPN 专用服务器。
    VPDN 隧道协议主要包括以下三种:
  • PPTP(Point-to-Point Tunneling Protocol,点到点隧道协议)
  • L2F(Layer 2 Forwarding,二层转发)
  • L2TP
    目前使用最广泛的是 L2TP

2. L2TP 典型组网应用

使用L2TP协议构建的VPDN应用的典型组网如 图 1所示。
在这里插入图片描述
在 L2TP 构建的 VPDN 中,网络组件包括以下三个部分:

  • 远端系统
    远端系统是要接入 VPDN 网络的远地用户和远地分支机构,通常是一个拨号用户的主机或私有网络的一台路由设备。

  • LAC(L2TP Access Concentrator,L2TP 访问集中器)
    LAC 是附属在交换网络上的具有 PPP 端系统和 L2TP 协议处理能力的设备,通常是一个当地 ISP的 NAS,主要用于为 PPP 类型的用户提供接入服务。
    LAC 作为 L2TP 隧道的端点,位于 LNS 和远端系统之间,用于在 LNS 和远端系统之间传递信息包。它把从远端系统收到的信息包按照 L2TP 协议进行封装并送往 LNS,同时也将从 LNS 收到的信息包进行解封装并送往远端系统。
    LAC 与远端系统之间采用本地连接或 PPP 链路,VPDN 应用中通常为 PPP 链路。

  • LNS(L2TP Network Server,L2TP 网络服务器)
    LNS 既是 PPP 端系统,又是 L2TP 协议的服务器端,通常作为一个企业内部网的边缘设备。
    LNS 作为 L2TP 隧道的另一侧端点,是 LAC 的对端设备,是 LAC 进行隧道传输的 PPP 会话的逻辑终止端点。通过在公网中建立 L2TP 隧道,将远端系统的 PPP 连接的另一端由原来的 LAC 在逻辑上延伸到了企业网内部的 LNS。

3. L2TP 基本概念

3.1 L2TP 协议背景

PPP 定义了一种封装技术,可以在二层的点到点链路上传输多种协议数据包,当用户与 NAS 之间运行 PPP 协议时,二层链路端点与 PPP 会话点驻留在相同硬件设备(NAS)上。
L2TP(RFC 2661)是一种对 PPP 链路层数据包进行隧道传输的技术,允许二层链路端点(LAC) 和 PPP 会话点(LNS)驻留在通过分组交换网络连接的不同设备上,从而扩展了 PPP 模型,使得PPP 会话可以跨越帧中继或 Internet 等网络。
L2TP 结合了 L2F 和 PPTP 的各自优点,成为 IETF 有关二层隧道协议的工业标准。

3.2 L2TP 协议结构

图 2描述了控制通道以及PPP帧和数据通道之间的关系。PPP帧在不可靠的L2TP数据通道上进行传输,控制消息在可靠的L2TP控制通道内传输。
在这里插入图片描述
图 3描述了LAC与LNS之间的L2TP数据报文的封装结构。通常L2TP数据以UDP报文的形式发送。L2TP注册了UDP 1701 端口,但是这个端口仅用于初始的隧道建立过程中。L2TP隧道发起方任选一个空闲的端口(未必是 1701)向接收方的 1701 端口发送报文;接收方收到报文后,也任选一个空闲的端口(未必是 1701),给发送方的指定端口回送报文。至此,双方的端口选定,并在隧道保持连通的时间段内不再改变。
图 3 L2TP 报文封装结构图

3.3 隧道和会话

在一个 LNSLAC 对之间存在着两种类型的连接

  • 隧道(Tunnel)连接:它对应了一个 LNS 和 LAC 对。
  • 会话(Session)连接:它复用在隧道连接之上,用于表示承载在隧道连接中的每个 PPP 会话过程。
    在同一对 LAC 和 LNS 之间可以建立多个 L2TP 隧道,隧道由一个控制连接和一个或多个会话连接组成。会话连接必须在隧道建立(包括身份保护、L2TP 版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于 LAC 和 LNS 之间的一个 PPP 数据流。
    控制消息和PPP 数据报文都在隧道上传输。L2TP 使用 Hello 报文来检测隧道的连通性。LAC 和 LNS
    定时向对端发送 Hello 报文,若在一段时间内未收到 Hello 报文的应答,隧道断开。

3.4 控制消息和数据消息

L2TP 中存在两种消息:控制消息数据消息

扫描二维码关注公众号,回复: 10980879 查看本文章
  • 控制消息用于隧道和会话连接的建立、维护以及传输控制。它的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制。
  • 数据消息用于封装 PPP 帧,并在隧道上传输。它的传输是不可靠传输,若数据报文丢失,不予重传,不支持对数据消息的流量控制和拥塞控制。

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

4. L2TP 隧道模式及隧道建立过程

4.1 两种典型的 L2TP 隧道模式

L2TP 隧道的建立包括以下两种典型模式。

  • NAS-Intiated
    如 图 4所示,由LAC端(指NAS)发起L2TP隧道连接。远程系统的拨号用户通过PPPoE/ISDN拨入LAC,由LAC通过Internet向LNS发起建立隧道连接请求。拨号用户的私网地址由LNS分配;对远程拨号用户的验证与计费既可由LAC侧代理完成,也可在LNS侧完成。
    图 4 NAS-Initiated L2TP 隧道模式
  • Client-Initiated
    如 图 5所示,直接由LAC客户(指本地支持L2TP协议的用户)发起L2TP隧道连接。LAC客户获得Internet访问权限后,可直接向LNS发起隧道连接请求,无需经过一个单独的LAC设备建立隧道。LAC 客户的私网地址由LNS分配。
    在 Client-Initiated 模式下,LAC 客户需要具有公网地址,能够直接通过 Internet 与 LNS 通信。
    图 5 Client-Initiated L2TP 隧道模式

4.2 L2TP 隧道的建立过程

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 地址,用户即可以访问企业内部资源。

5. L2TP 协议的特点

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

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

5.2 多协议传输

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

5.3 支持 RADIUS 服务器的验证

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

5.4 支持内部地址分配

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

5.5 网络计费的灵活性

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

5.6 可靠性

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

发布了81 篇原创文章 · 获赞 69 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/s2603898260/article/details/104177100