L2TP简介

news/2024/11/18 0:12:01/

一、L2TP介绍
1、基础介绍
L2TP(Layer 2 Tunneling Protocol,二层隧道协议)通过在公共网络(如Internet)上建立点到点的L2TP隧道,将PPP(Point-to-Point Protocol,点对点协议)数据帧封装后通过L2TP隧道传输,使得远端用户(如企业驻外机构和出差人员)利用PPP接入公共网络后,能够通过L2TP隧道与企业内部网络通信,访问企业内部网络资源,从而为远端用户接入私有的企业网络提供了一种安全、经济且有效的方式。
2、L2TP隧道和会话
在一个LNS和LAC对之间存在着两种类型的连接,一种是隧道(Tunnel)连接,一对LAC和LNS中可以有多个L2TP隧道;另一种是会话(Session)连接,它复用在隧道连接之上,用于表示承载在隧道连接中的每个PPP会话过程。
(1)隧道由一个控制连接和一个或多个会话(Session)组成。会话连接必须在隧道建立(包括身份保护、L2TP版本、帧类型、硬件传输类型等信息的交换)成功之后进行,每个会话连接对应于LAC和LNS之间的一个PPP数据流。控制消息和PPP数据报文都在隧道上传输。
L2TP使用Hello报文来检测隧道的连通性。LAC和LNS定时向对端发送Hello报文,若在一段时间内未收到Hello报文的应答,该隧道连接将被断开。
(2) L2TP报文头中包含隧道标识符(Tunnel ID)和会话标识符(SessionID)信息,用来标识不同的隧道和会话。隧道标识相同、会话标识不同的报文将被复用在一个隧道上,报文头中的隧道标识符与会话标识符由对端分配。
(3)隧道(tunnel)和会话(session)的关系,可以形象的理解为会话是建立在隧道之中的,隧道想成一个有10个车道的高速公路,一台拨号PC的数据流为一个会话,相当于占用了一个车道(告诉公路有多少车道是设备规定好的),这个车道只能跑这个运载这个PC的报文的卡车。(比如某型号设备每条隧道最多支持1000个会话)。
二、典型组网
这里写图片描述
上述组网主要包括三个部分:远端系统、LAC、LNS
1、远端系统
远端系统是要接入企业内部网络的远端用户和远端分支机构,通常是一个拨号用户的主机或私有网络中的一台设备。
2、LAC(L2TP Access Concentrator,L2TP访问集中器)
LAC是具有PPP和L2TP协议处理能力的设备,通常是一个当地ISP的NAS(Network Access Server,网络接入服务器),主要用于为PPP类型的用户提供接入服务。
LAC作为L2TP隧道的端点,位于LNS和远端系统之间,用于在LNS和远端系统之间传递报文。它把从远端系统收到的报文按照L2TP协议进行封装并送往LNS,同时也将从LNS收到的报文进行解封装并送往远端系统。
3、LNS(L2TP Network Server,L2TP网络服务器)
LNS是具有PPP和L2TP协议处理能力的设备,通常位于企业内部网络的边缘。
LNS作为L2TP隧道的另一侧端点,是LAC通过隧道传输的PPP会话的逻辑终点。L2TP通过在公共网络中建立L2TP隧道,将远端系统的PPP连接由原来的NAS延伸到了企业内部网络的LNS设备。
三、L2TP消息类型及封装结构
L2TP协议定义了两种消息:
1、控制消息:用于L2TP隧道和L2TP会话的建立、维护和拆除。控制消息的传输是可靠的,并且支持流量控制和拥塞控制。
2、数据消息:用于封装PPP帧,其格式如下图所示。数据消息的传输是不可靠的,若数据消息丢失,不予重传。数据消息支持流量控制,即支持对乱序的数据消息进行排序L2TP。控制消息和L2TP数据消息均封装在UDP报文中。
这里写图片描述
封装结构如下图:
这里写图片描述
举例做ping操作,icmp报文在l2tp封装情况:
这里写图片描述
四、L2TP建立、维护与拆除过程
1、L2TP建立过程
这里写图片描述
(1)L2TP隧道的建立是一个三次握手的过程,首先由LAC发起隧道建立请求SCCRQ,LNS收到请求后进行应答SCCRP,最后LAC在收到应答后再给LNS返回确认SCCCN;隧道建立。
(2)会话建立的过程与隧道类似,首先由LAC发起会话建立请求ICRQ,LNS收到请求后返回应答ICRP,LAC收到应答后返回确认ICCN,会话建立。
(3)L2TP的会话建立由PPP触发,隧道建立由会话触发。由于多个会话可以复用在一条隧道上,如果会话建立前隧道已经建立,则隧道不用重新建立。
建立隧道和会话各个报文如下:
SCCRQ:
这里写图片描述
SCCRP:
这里写图片描述
SCCCN:
这里写图片描述
ICRQ:
这里写图片描述
ICRP:
这里写图片描述
ICCN:
这里写图片描述
2、L2TP维护过程
这里写图片描述
隧道建立后,要等到该隧道所属会话全部下线后,再进行拆除,为了确认对端的隧道依然存在,需要定时发送与对端的维护报文,其流程为:LAC或LNS发出Hello报文,对应的LNS或LAC发出确认信息。
3、L2TP拆除过程
这里写图片描述
隧道拆除流程比其建立过程要简单,隧道的任何一端发出拆链通知StopCCN,对端返回确认;会话的拆除流程为:会话一端发出拆链通知CDN,对端返回确认即可。
五、L2TP特点
1、灵活的身份验证机制以及高度的安全性
L2TP协议本身并不提供连接的安全性,但它可依赖于PPP提供的认证(比如CHAP、PAP等),因此具有PPP所具有的所有安全特性。
L2TP还可以与IPsec结合起来实现数据安全,使得通过L2TP所传输的数据更难被攻击。
2、多协议传输
L2TP传输PPP数据包,在PPP数据包内可以封装多种协议。
3、支持RADIUS服务器的认证
LAC和LNS可以将用户名和密码发往RADIUS服务器,由RADIUS服务器对用户身份进行认证。
4、支持内部地址分配
LNS可以对远端系统的地址进行动态的分配和管理,可支持私有地址应用(RFC 1918)。为远端系统分配企业内部的私有地址,可以方便地址的管理并增加安全性。
5、网络计费的灵活性
可在LAC和LNS两处同时计费,即ISP处(用于产生帐单)及企业网关(用于付费及审计)。L2TP能够提供数据传输的出/入包数、字节数以及连接的起始、结束时间等计费数据,AAA服务器可根据这些数据方便地进行网络计费。
6、可靠性
L2TP协议支持备份LNS,当主LNS不可达之后,LAC可以与备份LNS建立连接,增加了L2TP服务的可靠性。
7、支持由RADIUS服务器为LAC下发隧道属性
L2TP隧道采用NAS-Initiated模式时,LAC上的L2TP隧道属性可以通过RADIUS服务器来下发。此时,在LAC上只需开启L2TP服务,并配置采用AAA远程认证方式对PPP用户进行身份验证,无需进行其他L2TP配置。
当L2TP用户拨入LAC时,LAC作为RADIUS客户端将用户的身份信息发送给RADIUS服务器。RADIUS服务器对L2TP用户的身份进行验证。RADIUS服务器将验证结果返回给LAC,并将该用户对应的L2TP隧道属性下发给LAC。LAC根据下发的隧道属性,创建L2TP隧道和会话。


http://www.ppmy.cn/news/720970.html

相关文章

tp5开发接口:接口安全设计

设计思想:以登陆接口为例 登陆安全接口设计 1.username red_panda 2.password 123456 3.时间戳 timestamp 17988732 token md5(api_md5(red_panda) md5(123456) md5(timestamp)_api); service_token md5(api_md5(red_panda) md5(123456) md5(timestamp)…

tp6 防止XSS攻击之表单提交安全校验

对后端做安全措施:转化和过滤 首先:tp6框架已经自带转化危险标签 其次:使用tp6做过滤掉危险标签 安装 composer 安装插件来处理 composer require ezyang/htmlpurifier 安装成功以后在app下面的 common.php 放公共函数的地方添加如下代码 …

L2TP LAC initial 配置与安全策略

对于和NAS initial类似,这里是由LAC发起的,而且不是使用pppoe进行隧道的建立和会话的建立,当有去往总部的流量的时候,LAC就会主动和LNS进行隧道和会话的协商,LNS会分配给LAC一个地址,所以如果分支机构的用户…

L2TP详解(一)

今天继续给大家介绍HCIE安全。本文给大家介绍的是L2TP相关内容,包括L2TP的特点和应用场景。 一、L2TP简介 L2TP是一种二层的VPN技术,它提供了对PPP链路层数据帧的隧道传输支持,允许二层链路端点和PPP会话驻留在不同设备上,扩展了…

TP5学习(十二):安全

一、输入安全 设置public目录为唯一对外访问目录,不要把资源文件放入应用目录;开启表单令牌验证避免数据的重复提交,能起到CSRF防御作用;使用框架提供的请求变量获取方法(Request类param方法及input助手函数&#xff…

毛概的笔记

简述毛泽东思想的活的灵魂。答:(1)贯穿于毛泽东思想各个组成部分的立场、观点和方法,是毛泽东思想的活的灵魂,它们有三个基本方面,即实事求是,群众路线,独立自主。(2&…

TP5之安全机制

防止sql注入 1、查询条件尽量使用数组方式,具体如下: $wheres array();$wheres[account] $account;$wheres[password] $password;$User->where($wheres)->find(); 2、如果必须使用字符串,建议使用预处理机制,具体如下&…

ROS学习笔记 -day1入门学习

学习资料:https://sychaichangkun.gitbooks.io/ros-tutorial-icourse163/content/chapter1/ 1、Linux下的编译器:gcc/g , Makefile , Cmake , … ROS对Cmake进行拓展 — Catkin(对cmake , make指令进行封装) 2、Catkin编译与工作…