L2TP协议简介
传送门:L2TP代码实现
1. L2TP 概述
L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是 VPDN(Virtual Private Dial-up Network, 虚拟私有拨号网)隧道协议的一种。
VPDN 是指利用公共网络(如 ISDN 或 PSTN)的拨号功能接入公共网络,实现虚拟专用网,从而为企业、小型 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.3 隧道和会话
在一个 LNS 和 LAC 对之间存在着两种类型的连接。
- 隧道(Tunnel)连接:它对应了一个 LNS 和 LAC 对。
- 会话(Session)连接:它复用在隧道连接之上,用于表示承载在隧道连接中的每个 PPP 会话过程。
在同一对 LAC 和 LNS 之间可以建立多个 L2TP 隧道,隧道由一个控制连接和一个或多个会话连接组成。会话连接必须在隧道建立(包括身份保护、L2TP 版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于 LAC 和 LNS 之间的一个 PPP 数据流。
控制消息和PPP 数据报文都在隧道上传输。L2TP 使用 Hello 报文来检测隧道的连通性。LAC 和 LNS
定时向对端发送 Hello 报文,若在一段时间内未收到 Hello 报文的应答,隧道断开。
3.4 控制消息和数据消息
L2TP 中存在两种消息:控制消息和数据消息。
- 控制消息用于隧道和会话连接的建立、维护以及传输控制。它的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制。
- 数据消息用于封装 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侧完成。

- Client-Initiated
如 图 5所示,直接由LAC客户(指本地支持L2TP协议的用户)发起L2TP隧道连接。LAC客户获得Internet访问权限后,可直接向LNS发起隧道连接请求,无需经过一个单独的LAC设备建立隧道。LAC 客户的私网地址由LNS分配。
在 Client-Initiated 模式下,LAC 客户需要具有公网地址,能够直接通过 Internet 与 LNS 通信。

4.2 L2TP 隧道的建立过程
L2TP应用的典型组网如 图 6所示。

下面以 NAS-Initiated 模式的 L2TP 隧道为例,介绍 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 服务的可靠性和容错性。
L2TP协议简介的更多相关文章
- L2tp协议简单解析
1.L2TP简介 L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是VPDN(Virtual PrivateDial-up Network,虚拟私有拨号网)隧道协议的一种 ...
- PPP协议、PPPoE协议、L2TP协议的关系
1. 简述 首先对这3中协议做一个简单的描述: 协议 协议类型 描述 PPP 点对点链路层协议 应用最广泛的点对点协议,可应用在多种网络,改善了SLIP协议的不足 PPPoE 点对点链路层协议 对PP ...
- Fiddler--一、HTTP协议简介
在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...
- L2TP协议
L2TP协议 L2TP(Layer 2 Tunneling Protocol) 第二层隧道协议.该协议是工业标准的Internet隧道协议. L2TP实现的两种方式 LAC (L2TP Access ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...
- JavaWeb:Web与HTTP协议简介
JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...
- CC2540开发板学习笔记(九)—— BLE协议简介
一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...
- HTTP 协议简介
HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...
- OAUTH协议简介
OAUTH协议简介 原文来自:http://blog.csdn.net/hereweare2009/article/details/3968582 分类: Open API2009-03-08 12: ...
随机推荐
- JS知识梳理--图表
- [WesternCTF2018]shrine(SSTI+过滤)
记一道存在过滤的模板注入的题.直接给源代码 import flask import os app = flask.Flask(__name__) app.config['FLAG'] = os.env ...
- HCIA-物理层
OSI七层模型 应-->表-->会-->传-->网-->数-->物理层 TCP/IP四层模型 两个主导协议 -->工业标准 应-->传-->网-- ...
- Linux命令(五)之service服务查找、启动/停止等相关操作
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- systemd.service — 服务单元配置
转载:http://www.jinbuguo.com/systemd/systemd.service.html 名称 systemd.service - 服务单元配置 大纲 service.servi ...
- kali虚拟机安装VMTools、更新源、安装docker、配置sqli-labs
一.安装VMTools: 传送门:关于安装VMTools 跟其他版本的虚拟机安装VMTools没什么区别,也得连网(我是kali用dhcp开nat模式) 之后按照上面的链接根据博主的步骤一步一步来即可 ...
- 常见的六种容错机制:Fail-Over、Fail-Fast、Fail-Back、Fail-Safe,Forking 和 Broadcast
目录 1.Fail-Over:故障转移 2.Fail-Fast:快速失败 3.Fail-Back:失效自动恢复 4.Fail-Safe:失效安全 5.Forking:并行调用多个服务 6.Broadc ...
- 《手把手教你》系列技巧篇(二十)-java+ selenium自动化测试-元素定位大法之终卷(详细教程)
1.简介 这篇文章主要是对前边的文章中的一些总结和拓展.本来是不打算写着一篇的,但是由于前后文章定位元素的时间有点长,怕大家忘记了,就在这里简单做一个总结和拓展. 2.Selenium八种定位方式 S ...
- docker 安装部署 mysql(配置文件启动)
获取 mysql 镜像 docker pull mysql:5.6 docker images 创建容器 创建宿主机 redis 容器的数据和配置文件目录 # 创建宿主机 redis 容器的数据和配置 ...
- MySQL主从复制与Atlas读写分离
配置主从复制 1. 增加主从配置 # 主库配置文件 server-id = 1 log-bin = /var/lib/mysql/mysql-bin expire_logs_days = 10 ski ...