L2TP协议【转载】

2023-05-16

L2TP协议

一、
+L2TP : Layer 2 Tunnel Protocol 第2层隧道协议,是为在用户和企业的服务器之间透明传输PPP报文而设置的隧道协议
+特性
灵活的身份验证机制以及高度的安全性
多协议传输
支持RADIUS服务器的验证
支持内部地址分配
网络计费的灵活性
可靠性

L2TP协议是由IETF起草,微软、Ascend 、Cisco、 3COM等公司参预制定的2层隧道协议,它结合了PPTP和L2F两种2层隧道协议的优点,为众多公司所接受。

L2TP的特性有:
L2TP特别适合单个或少数用户接入企业的情况,其点到网的特性是其承载协议PPP所约定的。
由于L2TP对私有网的数据包进行了封装,因此在Internet上传输数据时,对数据包的网络地址是透明的,并支持接入用户的内部动态地址分配。
与PPP模块配合,支持本地和远端的认证、授权和记费(AAA)功能,对用户的接入也可根据需要采用全用户名,用户域名和用户拨入的特殊服务号码来识别是否为VPN用户。
对数据报文的安全性可采用IPSEC协议,采用该协议即可以在用户发往Internet之前对数据报文加密(即用户控制方式),也可采用在VPN端系统LAC侧加密(即服务提供商控制方式)。
对于拨号用户可以配置相应的VPN拨号软件,发起由用户直接对企业私有网的连接,这样用户在上网时可以灵活选择是否需要VPN服务。

二、用L2TP构建VPDN

方式一: 员工通过PSTN/ISDN接入IPS的LAC,LAC(L2TP Access Concentrator)是L2TP的接入设备,它提供各种用户接入的AAA服务,发起隧道和会话连接的功能,以及对VPN用户的代理认证功能;它是ISP侧提供VPN服务的接入设备,在物理实现上,它即可以是配置L2TP的路由器或接入服务器,也可以是专用的VPN服务器。由LAC通过 Internet向LNS发起建立隧道连接请求,连接总部的网络。
LNS(L2TP Network Server)是L2TP企业侧的VPN服务器,该服务器完成对用户的最终授权和验证,接收来自LAC的隧道和连接请求,并建立连接LNS和用户的PPP通道。对于用户AAA数据也可以采用RADIUS服务器来保存,该服务器既可以在本地也可以在远端。采用这种方式,员工不需要配置VPN拨号软件。这种方式的好处在于: 对用户是透明的,用户只需要登录一次就可以接入企业网络,由企业网进行用户认证和内部地址分配(而不占用公共地址),可由LNS或LAC侧的AAA完成对拨号用户的计费。用户可使用各种平台上网。这种方式需要ISP支持VPDN协议,需要认证系统支持VPDN属性,网关一般使用路由器或VPN专用服务器。

方式2: 员工直接连入POP(Point fo present)点,该POP点提供数据服务,在用户侧配置VPN拨号软件就可以直接与总部建立VPN连接。用户端客户机与VPDN网关建立隧道。由客户机先建立与Internet的连接,再通过专用的客户软件(如Win2000支持的L2TP)与企业网关建立隧道连接。这种方式的好处在于:用户上网的方式和地点没有限制,不需ISP介入,只能由LNS侧的AAA对拨号用户进行计费。这种方式的缺点是:用户需要安装专用的软件(一般都是Win2000平台),限制了用户使用的平台。

L2TP中存在两种消息: 控制消息和数据消息。控制消息用于隧道和会话连接的建立、维护及删除;数据消息则用于封装PPP帧并在隧道上传输。

三、L2TP隧道和会话建立流程


为了在VPN用户和服务器之间传递数据报文,必须在LAC和LNS之间建立传递数据报文的隧道和会话连接,隧道是保证具有相同会话连接特性的一组用户可以共享的连接属性所定义的通道,而会话是针对每个用户与企业VPN服务器建立连接的PPP数据通道。同一对LAC与LNS之间只可建立一个L2TP隧道,多个会话复用在一个隧道连接上。隧道和会话是动态建立与删除的。
会话的建立是由PPP模块触发,如果该会话在建立时没有可用的隧道,那么先建立隧道连接。会话建立完毕后,开始进行数据传输。
隧道的建立是一个三次握手的过程,
首先由LAC发起隧道建立请求SCCRQ(Start-Control-Connection-Request)
LNS收到请求后进行应答SCCRP(Start-Control-Connection-Reply)
LAC在收到应答后返回确认SCCCN(Start-Control-Connection-Connected) 隧道建立。
会话建立的过程与隧道类似:
首先由LAC发起会话建立请求ICRQ(Incoming-Call-Request)
LNS收到请求后返回应答ICRP(Incoming-Call-Reply)
LAC收到应答后返回确认ICCN(Incoming-Call-Connected),会话建立。

隧道建立后,一直要等到该隧道所属会话全部下线后才能进行拆除,为了确认对端的隧道依然存在,需要定时发送维护报文,其流程为LAC或LNS发出Hello报文进行查询,对应的LNS或LAC发出ZLB(Zero-Length Body)进行确认。ZLB报文只有一个L2TP的报文头。
隧道拆除流程为,首先由隧道任一端(LAC/LNS)发出拆链通知消息StopCCN (Stop-Control-Connection-Notification),对端返回ZLB确认
会话的拆除流程为,会话一端发出拆链通知CDN(Call-Disconnect-Notify),对端返ZLB确认。

四、 L2TP协议栈结构及数据包的封装过程

下面以一个用户侧的IP报文的传递过程来描述VPN工作原理:
从用户侧(Client)向服务器侧(Server):用户数据为IP报文,先经过PPP封装,在LAC侧的链路层将相同的数据报文作为用户数据传递给L2TP协议,L2TP再封装成UDP报文,UDP再次封装成可以在Internet上传输的IP报文,此时的结果就是IP报文中又有IP报文,但两个IP地址不同,用户报文的IP地址是私有地址,而LAC上的IP地址为公有地址,至此完成了VPN的私有数据的封装。
在LNS侧收到VPN的IP报文后,将IP、UDP、L2TP报文头去掉后就恢复了用户的PPP报文,将PPP报文头去掉就可以得到IP报文,至此用户IP数据报文得到传递。

L2TP配置

一、
+LAC侧配置
配置AAA认证和本地用户
启用VPDN l2tp enable
创建VPDN组 l2tp-group group-number
配置发起L2TP连接请求及LNS地址
start l2tp {ip ip-address [ip ip-address ...]}{domain domian-name | dnis dialed-number | fullsername user-name}

在LAC端进行用户身份验证,用户名可以采用两种形式:
1、采用用户全名(fullusername)验证方式时,配置的本地用户名为VPN用户全名,口令为VPN用户注册口令。
2、采用特定域名用户(domain)验证方式时,配置的本地用户名为域名。

+LNS侧的配置
配置本地VPDN用户
启用VPDN
创建VPDN组
创建虚接口模版并为用户分配IP地址
interface virtual-template virtual-template-number
remote address pool [pool-name]
配置接收呼叫的隧道对端名称
allow l2tp virtual-template virtual-template-number [remote remote-name]

可选配的参数如下:
本端名称
启用隧道验证及配置密码
适用于LAC和LNS侧。用户可根据实际需要决定是否在创建隧道连接之前启用隧道验证。有下列三种隧道验证方式:
LAC对LNS进行验证
LNS对LAC进行验证
LAC与LNS之间互相验证
配置隧道Hello报文发送时间间隔
配置域名分隔符及查找顺序
在域名方式下,配置了前/后缀分隔符后,有四种查找规则可供选择:
dnisdomain(先按被叫号码查找,再按域名查找)
dnisonly(仅按照被叫号码查找)
domaindnis(先按域名查找,再被叫号码查找)
domainonly(仅按照域名查找)
强制挂断隧道
强制本端CHAP验证
强制LCP重新协商
L2TP最大会话数

二、L2TP隧道的呼叫建立流程

  1. 用户端PC机发起呼叫连接请求;
  2. PC机和LAC进行PPP LCP协商,确保之间的物理链路正常;
  3. LAC对PC机提供的用户信息进行PAP或CHAP认证;
  4. LAC将认证信息(用户名、密码)发送给RADIUS服务器进行认证;
  5. RADIUS服务器认证该用户,如果认证通过则返回该用户对应的LNS地址等相关信息,并准备发起Tunnel连接请求;
  6. LAC端向指定LNS发起Tunnel连接请求;
  7. LAC端向指定LNS发送SCCRQ(Start-Control-Connection-Request)消息,其中包含LAC侧的CHAP challenge信息;
  8. LNS回送SCCRP(Start-Control-Connection-Reply)消息给LAC端,其中包括对接收到的LAC侧challenge的响应消息CHAP response,和LNS侧的CHAP challenge;
  9. LAC端向该LNS发送SCCCN(Start-Control-Connection-Connect)消息,通知LNS隧道验证通过,其中包括对LNS侧challenge的响应消息CHAP response;
  10. LNS通知LAC端隧道验证通过;
  11. LAC端将用户CHAP response、response identifier和PPP协商参数传送给LNS;
  12. LNS将接入请求信息发送给RADIUS服务器进行认证;
  13. RADIUS服务器认证该请求信息,如果认证通过则返回响应信息;
  14. 若用户在LNS侧配置强制本端CHAP认证,则LNS对用户进行认证,发送CHAP challenge;
  15. 用户侧回应CHAP response;
  16. LNS再次将接入请求信息发送给RADIUS服务器进行认证;
  17. RADIUS服务器认证该请求信息,如果认证通过则返回响应信息;
  18. 验证通过,用户访问企业内部资源。

三、 L2TP的调试
display l2tp tunnel 和display l2tp session 命令域的描述:
Total tunnels:Tunnel的数目
LocalID:本端唯一标识一个通道的数值
RemoteID:对端唯一标识一个通道的数值
RemName: 对端的名称
RemAddress:对端的IP地址
Port:对端的端口号
Sessions:在此Tunnel上的Session数目
Total sessions:Session的总数
常用的L2TP的debugging命令的描述:
control:表示打开控制报文调试开关
error:表示打开差错信息的调试开关
event:表示打开事件调试信息开关

四、 L2TP排错

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

L2TP协议【转载】 的相关文章

  • 带你了解无人机的大脑-飞控

    无人机大脑 xff1a 飞控 无人机之所以能够在空中自主飞行就是因为无人机也和人一样 xff0c 也拥有一个大脑 xff0c 究竟是什么样的一个大脑才能够控制一架飞机在空中自动驾驶呢 xff1f 一起来看看 通俗点说 xff0c 能够自主起
  • STM32F103串口(ISP)下载

    1 ISP简介 ISP Iin System Programming 在系统可编程 xff0c 指电路板上的空白器件可以编程写入最终用户代码 xff0c 而不需要从电路板上取下器件 xff0c 已经编程的器件也可以用SP方式擦除或再编程 I
  • 用Docker搭建更酷的本地开发环境

    以前要在本地跑一些有意思的工程和实验 xff0c 都需要通过在本地装上一大堆软件来实现 最近发现有一种更酷的方式 xff1a Docker 用Docker在本地搭建开发环境有一系列显而易见的优势 xff1a 不用依赖公司的资源 xff0c
  • 只需修改一个像素,让神经网络连猫都认不出 | 论文+代码

    夏乙 编译整理 量子位 出品 公众号 QbitAI 想骗过神经网络 xff0c 让它认错图像 xff0c 需要对图像做多少修改 xff1f 一个像素就够了 一项来自日本的研究表明 xff0c 改动图片上的一个像素 xff0c 就能让神经网络
  • 小米迎来NLP首席科学家王斌:中科院研究员,雷军崔宝秋亲学弟

    雷刚 发自 凹非寺 量子位 报道 公众号 QbitAI 曾经武大郎 xff0c 今日小米科学家 小米又有AI科学家加盟 xff0c 这次是中国科学院信息工程研究所研究员王斌 xff0c 他将出任小米AI实验室NLP首席科学家 xff0c 负
  • IGMPv1,v2,v3详解

    简介 IGMP IGMP Internet Group Management Protocol xff09 作为因特网组管理协议 xff0c 是TCP IP协议族中负责IP组播成员管理的协议 xff0c 它用来在IP主机和与其直接相邻的组播
  • 华为最强AI芯片麒麟980发布:全球首款7nm手机芯片,双核NPU,6项世界第一

    安妮 雷刚 发自 凹非寺 量子位 报道 公众号 QbitAI 遥遥领先 xff01 这是华为消费者业务CEO余承东放下的狠话 xff0c 他说自家即将推出的手机芯片麒麟980 xff0c 将在全球范围内遥遥领先 而且领先的不是别家 xff0
  • Haar小波提升算法

    传统的小波变换是在傅里叶变换的基础上演变而来 xff0c 计算过程中存在着大量的卷积运算或是乘累加的计算 xff0c 如若在硬件上实现 xff0c 势必会消耗大量的寄存器资源 xff0c 而且速度也上不去 提升小波又称为第二代小波 xff0

随机推荐

  • 【Docker学习】Docker Hub + GitHub实现镜像自动构建

    近期学习Docker的相关知识 xff0c 尝试了一下Docker Hub 43 GitHub自动构建镜像 xff0c 在此记录一下过程 将GitHub账号关联到Docker Hub账号 设置位置 下滑到Linked Accounts xf
  • spring整合mybatis报错Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容

    在spring的配置文件中配置mybatis时使用的是 xff1a span class hljs comment lt 控制和MyBatis整合 gt span span class hljs tag lt span class hljs
  • linux中UDP编程

    在前面的文件中 xff0c 我们介绍了linux网络编程中与IP相关的知识和常用的函数总结 xff0c 本文针对具体的UDP通信 xff0c 来详细的介绍UDP通信的使用 xff0c 包括UDP通信中的点对点通信 xff0c 多播 xff0
  • 语音增强--卡尔曼滤波介绍及MATLAB实现

    语音增强 卡尔曼滤波 状态方程 x k 43 1 61
  • 树莓派官方系统(raspbian)安装及使用教程

    以下内容为本人原创 xff0c 欢迎大家观看学习 xff0c 禁止用于商业用途 xff0c 作者 xff1a 64 Yhen 原文网站 xff1a CSDN 原文链接 xff1a https blog csdn net Yhen1 arti
  • 主键和外键的区别

    一 什么是主键 外键 主键 xff1a 关系型数据库中的一条记录中有若干个属性 xff0c 若其中某一个属性组 注意是组 能唯一标识一条记录 xff0c 该属性组就可以成为一个主键 比如 1 学生表 学号 xff0c 姓名 xff0c 性别
  • C++中,使用libCurl实现http的post请求

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • nodejs版本管理NVM

    nodejs版本管理NVM NVM全称 xff08 Node Version Manager xff09 是一个用来管理node版本的工具 因为在开发electron版本应用时遇到了 xff0c nodejs使用版本冲突 xff0c 所以我
  • OSPF中DR、BDR竞选机制【转载】

    OSPF DR BDR 竞选机制详解 OSPF 上篇技术文章中提到了建立邻居和邻接关系 xff0c 而邻居关系建立成功之后 xff0c 在broadcast NBMA网络上会进行DR BDR竞选 DR产生背景 在MA网络中 xff0c 任意
  • Citrix Receiver在linux系统(Ubuntu)下的安装使用

    本文为解决在linux系统下Citrix Receiver安装完成后无法登录服务器的情况 xff0c windows下没有这个问题 其中报错为无法识别安全证书 提示 xff1a no such file or directory verif
  • ORA-28000:the account is locked错误解决

    Oracle数据库日志中出现ORA 28000 the account is locked的错误 xff0c 可以按下面的步骤处理 xff1a 1 查询FAILED LOGIN ATTEMPTS参数默认值 xff0c 这个参数限制了从第一次
  • 在Ubuntu上安装boost库

    boost中 xff0c 用到了别的函数库 xff0c 所以为了使用boost中相应的功能 xff0c 需要先安装系统中可能缺失的库 apt get install mpi default dev 安装mpi库 apt get instal
  • 嵌入式平台算法优化

    嵌入式平台算法优化 目录 目录 前言 4 1 嵌入式系统优化流程 6 1 xff0c 选用更优的算法 6 2 xff0c 选择嵌入式平台型号 6 3 xff0c 算法优化一般流程 9 2 高效的编程 15 1 xff0c 数据类型 15 2
  • [028] Gazebo构建Kinect模型,在RVIZ中显示点云PointCloud2出错:点云位姿错误,浮在空中

    一 Bug描述 1 发生错误的 urdf代码 xff08 也不是代码错误 xff0c 是gazebo的bug xff09 lt link name 61 34 camera link 34 gt lt visual gt lt origin
  • Win10校园网宽带连接频繁秒断

    问题 xff1a 宽带连接连上过后很快就断开 解决方法 xff1a 1 Win 43 R输入regedit打开注册表编辑器 2 打开路径 xff1a 计算机 HKEY LOCAL MACHINE SYSTEM ControlSet001 S
  • UML类图--泛化关系

    泛化关系 Generalization 属于类的继承关系 xff0c 表明了子类如何特化或实现父类的属性和方法 UML类图表示 xff1a 箭头指向 xff1a 带箭头的实线 xff0c 箭头指向父类 代码实现 xff1a 测试类 publ
  • 汉诺塔问题解析(C语言)

    目录 一 什么是汉诺塔问题二 汉诺塔移动图解三 代码实现总结 一 什么是汉诺塔问题 汉诺塔问题是一个经典的问题 汉诺塔 xff08 Hanoi Tower xff09 xff0c 又称河内塔 xff0c 源于印度一个古老传说 大梵天创造世界
  • Shell脚本学习——字符串处理

    最近在做很多的字符串处理的工作 xff0c 主要用的还是excel xff0c 但是很费神 xff0c 总是Ctrl 43 C和Ctrl 43 V 就想用shell脚本对对应的字符串进行批量处理 1 xff09 首先是读取文件中的每一行字符
  • DSP算法移植---总结

    总结 很久没有写文章了 xff0c 今天逛了逛博客 xff0c 看到DSP算法移植的文章 xff0c 至于这个项目 xff0c 本人解释下 本人7月份将硕士毕业了 xff0c 不久就要离开校园了 xff0c 所以我基本上不接触这个项目了 x
  • L2TP协议【转载】

    L2TP协议 一 43 L2TP Layer 2 Tunnel Protocol 第2层隧道协议 xff0c 是为在用户和企业的服务器之间透明传输PPP报文而设置的隧道协议 43 特性 灵活的身份验证机制以及高度的安全性 多协议传输 支持R