当前位置: 首页 > news >正文

计算机网络-L2TP VPN基础概念与原理

一、概述

前面学习了GRE和IPSec VPN,今天继续学习另外一个也很常见的VPN类型-L2TP VPN。

L2TP(Layer 2 Tunneling Protocol) 协议结合了L2F协议和PPTP协议的优点,是IETF有关二层隧道协议的工业标准。L2TP是虚拟私有拨号网VPDN(Virtual Private Dial-up Network)隧道协议的一种,它扩展了点到点协议PPP(Point-to-Point Protocol)的应用,是应用于远程办公场景中为出差员工远程访问企业内网资源提供接入服务的一种重要VPN技术。

L2TP的主要使用场景可以为移动办公提供直接远程接到企业网络的功能,以及在企业分支与总部建立网络互联提供支持。

二、L2TP基础架构与原理

L2TP主要由以下几部分组成:

  • NAS,NAS网络接入服务器(Network Access Server)主要由ISP维护,连接拨号网络
  • LAC,L2TP访问集中器LAC是交换网络上具有PPP和L2TP协议处理能力的设备
  • LNS,LNS是LAC的对端设备,即LAC和LNS建立了L2TP隧道
  • 隧道和会话,L2TP隧道在LAC和LNS之间建立,一对LAC和LNS可以建立多个L2TP隧道,一个L2TP隧道可以包含多个L2TP会话。
L2TP基本架构
L2TP基本架构

现实情况下可以理解为L2TP是C/S架构,一般情况下企业出口设备作为LNS(服务器端),映射端口、分配地址池等待LAC(客户端)连接。 从图中可以看到主要两种模式,一种是电脑终端直接通过L2TP客户端连接到服务器访问内网资源,另外一种类似于IPSec在LNS和LAC间建立隧道实现联通。

2.1 NAS网络接入服务器(Network Access Server)

NAS网络接入服务器(Network Access Server)主要由ISP维护,连接拨号网络,是距离PPP终端地理位置最近的接入点。NAS用于传统的拨号网络中,ISP在NAS上部署LAC,可为远程拨号用户提供L2TP服务,和企业总部建立隧道连接。

2.2 LAC

L2TP访问集中器LAC是交换网络上具有PPP和L2TP协议处理能力的设备。LAC根据PPP报文中所携带的用户名或者域名信息,和LNS建立L2TP隧道连接,将PPP协商延展到LNS。在不同的组网环境中,LAC可以是不同的设备: NAS-Initiated场景:在传统的拨号网络中,ISP在NAS上部署LAC,或在企业分支的以太网络中,为PPP终端配备网关设备,网关作为PPPoE服务器,同时部署为LAC。

企业分支在网关设备配置可以主动向LNS发起L2TP隧道连接请求的L2TP Client,不需要远端系统拨号触发,L2TP Client为LAC。出差人员使用PC或移动终端接入Internet,在PC或移动终端上使用L2TP拨号软件,则PC或移动终端终端为LAC。

LAC可以发起建立多条L2TP隧道使数据流之间相互隔离,即LAC可以承载多条L2TP连接。

2.3 LNS

L2TP网络服务器LNS是终止PPP会话的一端,通过LNS的认证,PPP会话协商成功,远程用户可以访问企业总部的资源。对L2TP协商,LNS是LAC的对端设备,即LAC和LNS建立了L2TP隧道;对PPP,LNS是PPP会话的逻辑终止端点,即PPP终端和LNS建立了一条点到点的虚拟链路。

LNS位于企业总部私网与公网边界,通常是企业总部的网关设备。 必要时,LNS还兼有网络地址转换(NAT)功能,对企业总部网络内的私有IP地址与公共IP地址进行转换。

通过上面的一些理论知识大致可以知道L2TP是基于PPP的基础上采用账号密码认证的方式与企业总部建立VPN隧道连接的一种VPN方式,可以在企业网关间建立L2TP隧道,也可以直接在电脑终端上通过拨号软件与企业网关建立L2TP连接。

三、L2TP数据包

L2TP协议包含两种类型的消息,控制消息和数据消息。

  • 控制消息用于L2TP隧道和会话连接的建立、维护和拆除。
  • 数据消息封装PPP数据帧并在L2TP隧道上传输。
L2TP数据包结构
L2TP数据包结构

控制消息,用于L2TP隧道和会话连接的建立、维护和拆除。在控制消息的传输过程中,使用消息丢失重传和定时检测隧道连通性等机制来保证控制消息传输的可靠性,支持对控制消息的流量控制和拥塞控制。控制消息承载在L2TP控制通道上,控制通道实现了控制消息的可靠传输,将控制消息封装在L2TP报头内,再经过IP网络传输。

数据消息,用于封装PPP数据帧并在隧道上传输。数据消息是不可靠的传输,不重传丢失的数据报文,不支持对数据消息的流量控制和拥塞控制。数据消息携带PPP帧承载在不可靠的数据通道上,对PPP帧进行L2TP封装,再经过IP网络传输。

简单说就是控制消息用于建立连接,数据消息用于传输业务数据流量。

四、L2TP工作过程

L2TP能够传输数据,工作过程基本需要3步:

  • 建立L2TP隧道
  • 建立L2TP会话连接
  • 传输PPP报文
L2TP工作过程
L2TP工作过程

建立L2TP隧道连接,LAC收到远程用户的PPP协商请求时,LAC向LNS发起L2TP隧道请求。LAC和LNS之间通过L2TP的控制消息,协商隧道ID、隧道认证等内容,协商成功后则建立起一条L2TP隧道,由隧道ID进行标识。

建立L2TP会话连接,如果L2TP隧道已存在,则在LAC和LNS之间通过L2TP的控制消息,协商会话ID等内容,否则先建立L2TP隧道连接。会话中携带了LAC的LCP协商信息和用户认证信息,LNS对收到的信息认证通过后,则通知LAC会话建立成功。L2TP会话连接由会话ID进行标识。

传输PPP报文,L2TP会话建立成功后,PPP终端将数据报文发送至LAC,LAC根据L2TP隧道和会话ID等信息,进行L2TP报文封装,并发送到LNS,LNS进行L2TP解封装处理,根据路由转发表发送至目的主机,完成报文的传输。

这里写的是网关设备间建立L2TP的过程,其实移动端也差不多意思,理解一下就好,具体的还是需要通过实验才能更好的看到现象。

五、L2TP应用场景

alt
alt
alt

总结:L2TP基于PPP与VPN技术,在LNS与LAC间建立L2TP隧道和会话实现网络互联,可以在网关设备间建立也可以在终端通过软件连接到企业网关出口LLNS,通常L2TP作为移动办公的选择。

本文由 mdnice 多平台发布

相关文章:

计算机网络-L2TP VPN基础概念与原理

一、概述 前面学习了GRE和IPSec VPN,今天继续学习另外一个也很常见的VPN类型-L2TP VPN。 L2TP(Layer 2 Tunneling Protocol) 协议结合了L2F协议和PPTP协议的优点,是IETF有关二层隧道协议的工业标准。L2TP是虚拟私有拨号网VPDN&…...

Node.js day-01

01.Node.js 讲解 什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码 Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来编写服务器后端…...

vue el-dialog实现可拖拉

el-dialog实现拖拉&#xff0c;每次点击度居中显示&#xff0c;以下贴出代码具体实现&#xff0c;我是可以正常拖拉并且每次度显示在中间&#xff0c;效果还可以&#xff0c;需要的可以丢上去跑跑 组件部分&#xff1a; <el-dialog:visible.sync"dialogVisible"…...

go配置文件

https://github.com/spf13/viper viper golang中常用的配置文件工具为viper库&#xff0c;是一个第三方库。viper功能&#xff1a; 解析JSON、TOML、YAML、HCL等格式的配置文件。监听配置文件的变化(WatchConfig)&#xff0c;不需要重启程序就可以读到最新的值。...

C++ OpenGL学习笔记(2、绘制橙色三角形绘制、绿色随时间变化的三角形绘制)

相关文章链接 C OpenGL学习笔记&#xff08;1、Hello World空窗口程序&#xff09; 目录 绘制橙色三角形绘制1、主要修改内容有&#xff1a;1.1、在主程序的基础上增加如下3个函数1.2、另外在主程序外面新增3个全局变量1.3、编写两个shader程序文件 2、initModel()函数3、initS…...

项目搭建+删除(单/批)

一 : 删除没有单独的页面,在列表页面写 二 : 删除在列表的页面 1.删除(单/双)的按钮 ① : 在列表文档就绪函数的ajax里面,成功回调函数追加数据里写删除按钮 注意点 : 删除/修改/回显都是根据id来的,记得传id ② : 批删给批删按钮,定义批删的方法 one : 示例(单删) : //循环追…...

《小米创业思考》

《小米创业思考》是小米创始人雷军对小米创业历程的系统梳理和深度思考&#xff0c;蕴含着许多宝贵的创业经验与智慧&#xff0c;以下是主要内容&#xff1a; 创业初心与梦想 - 源于热爱与使命感&#xff1a;雷军及团队怀着对科技的热爱和让每个人享受科技乐趣的使命感创立小米…...

多种注意力机制详解及其源码

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

VMWare 的克隆操作

零、碎碎念 VMWare 的这个克隆操作很简单&#xff0c;单拎出来成贴的目的是方便后续使用。 一、操作步骤 1.1、在“源”服务器上点右键&#xff0c;选择“管理--克隆” 1.2、选择“虚拟机的当前状态”为基础制作克隆&#xff0c;如下图所示&#xff0c;然后点击“下一页” 1.3、…...

Y3编辑器教程7:界面编辑器

文章目录 一、简介1.1 导航栏1.2 画板1.3 场景界面1.4 控件1.4.1 空节点1.4.2 按钮1.4.3 图片1.4.4 模型1.4.5 文本1.4.6 输入框1.4.7 进度条1.4.8 列表 1.5 元件1.5.1 简介1.5.2 差异说明1.5.3 元件实例的覆盖、还原与禁止操作1.5.4 迷雾控件 1.6 属性1.7 事件&#xff08;动画…...

「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具

本篇将带你实现一个评分统计工具&#xff0c;用户可以对多个选项进行评分。应用会实时更新每个选项的评分结果&#xff0c;并统计平均分。这一功能适合用于问卷调查或评分统计的场景。 关键词 UI互动应用评分统计状态管理数据处理多目标评分 一、功能说明 评分统计工具允许用…...

run postinstall error, please remove node_modules before retry!

下载 node_modules 报错&#xff1a;run postinstall error, please remove node_modules before retry! 原因&#xff1a;node 版本出现错误&#xff0c;我的项目之前是在 12 下运行的。解决方法&#xff1a; 先卸载node_modules清除缓存将node版本切换到12重新下载即可...

详细解读TISAX认证的意义

详细解读TISAX认证的意义&#xff0c;犹如揭开信息安全领域的一颗璀璨明珠&#xff0c;它不仅代表了企业在信息安全管理方面的卓越成就&#xff0c;更是通往全球汽车供应链信任桥梁的关键一环。TISAX&#xff0c;即“Trusted Information Security Assessment Exchange”&#…...

【开源项目】数字孪生轨道~经典开源项目数字孪生智慧轨道——开源工程及源码

飞渡科技数字孪生轨道可视化平台&#xff0c;基于国产数字孪生引擎&#xff0c;结合物联网IOT、大数据、激光雷达等技术&#xff0c;对交通轨道进行超远距、高精度、全天侯的监测&#xff0c;集成轨道交通运营数据&#xff0c;快速准确感知目标&#xff0c;筑牢轨交运营生命线。…...

云原生是什么

云原生是一种构建和运行应用程序的方法&#xff0c;它充分利用了云计算的优势。它不仅仅是指在云上运行应用程序&#xff0c;更重要的是指应用程序的设计、开发、部署和运维方式都充分考虑了云环境的特性&#xff0c;从而能够更好地利用云的弹性、可扩展性和灵活性。 更详细地…...

买卖股票的最佳时机 IV - 困难

************* C topic&#xff1a;188. 买卖股票的最佳时机 IV - 力扣&#xff08;LeetCode&#xff09; ************* Stock angin: Still stocks. Intuitively, it feels hard. For once: class Solution { public:int maxProfit(vector<int>& prices) {in…...

linux源码编译php提示:No package ‘oniguruma‘ found

编译遇到缺少Oniguruma开发包&#xff0c;处理办法1 安装epel仓库、安装 Oniguruma 开发包 [rootiZwz98gb9fzslgpnomg3ceZ php-8.1.29]# yum install epel-release [rootiZwz98gb9fzslgpnomg3ceZ php-8.1.29]# yum install oniguruma oniguruma-devel 方法2&#xff1a;去On…...

2024技能大赛Vue流程复现

1. 关于版本的控制 vue/cli 5.0.8vscode 最新下载版本 2. 创建vuecli项目 若没有安装vuecli则可以先安装 npm install -g vue/cli # 默认下载最新版本。vue --version vue -V # 查看版本&#xff0c;两个选一 使用vuecli来创建一个新的vue项目&#xff0c;vs code打开…...

MATLAB截取图像的一部分并保存导出,在itksnap中3D展示

**问题描述&#xff1a;**输入nifti图像&#xff0c;截取图像的一部分并输出&#xff0c;比如截取图像的101010这一块&#xff0c;并导出为nii文件 inputFile D:\aa\dcm\input.nii; % 输入文件路径subsetSize [10 10 10]; % 截取的图像块大小 subsetStart [1 1 1]; % 截取的…...

JMeter配置原件-计数器

一、面临的问题&#xff1a; 由于本人的【函数助手对话框】中counter计数器每次加2&#xff0c;且只显示偶数(如下图所示)&#xff0c;因此借助【配置原件-计数器】来实现计数功能。 如果有大佬知道解决方式&#xff0c;麻烦评论区解答一下&#xff0c;谢谢。 二、配置原件-c…...

go面试问题

1 Go的内存逃逸如何分析 go build -gcflags-m main_pointer.go 2 http状态码 300 请求的资源可包括多个位置&#xff0c;相应可返回一个资源特征与地址的列表用于用户终端&#xff08;例如&#xff1a;浏览器&#xff09;选择 301 永久移动。请求的资源已被永久的移动到新U…...

springboot 配置Kafka 关闭自启动连接

这里写自定义目录标题 springboot 配置Kafka 关闭自启动连接方法一&#xff1a;使用 ConditionalOnProperty方法二&#xff1a;手动管理Kafka监听器容器方法三&#xff1a;使用 autoStartupfalse结语 springboot 配置Kafka 关闭自启动连接 在Spring Boot应用程序中&#xff0c…...

selenium工作原理

原文链接&#xff1a;https://blog.csdn.net/weixin_67603503/article/details/143226557 启动浏览器和绑定端口 当你创建一个 WebDriver 实例&#xff08;如 webdriver.Chrome()&#xff09;时&#xff0c;Selenium 会启动一个新的浏览器实例&#xff0c;并为其分配一个特定的…...

day14-16系统服务管理和ntp和防火墙

一、自有服务概述 服务是一些特定的进程&#xff0c;自有服务就是系统开机后就自动运行的一些进程&#xff0c;一旦客户发出请求&#xff0c;这些进程就自动为他们提供服务&#xff0c;windows系统中&#xff0c;把这些自动运行的进程&#xff0c;称为"服务" window…...

Hadoop、Hbase使用Snappy压缩

1. 前期准备 系统环境&#xff1a;centos7.9 配置信息&#xff1a;8C8G100G hadoop和hbase为单节点部署模式 jdk版本jdk1.8.0_361 1.1. 修改系统时间 timedatectl set-timezone <TimeZone> 1.2. 修改主机名以及主机名和IP的映射 vim /etc/hosts #将自己的主机名以及…...

【python】OpenCV—Image Moments

文章目录 1、功能描述2、图像矩3、代码实现4、效果展示5、完整代码6、涉及到的库函数cv2.moments 7、参考 1、功能描述 计算图像的矩&#xff0c;以质心为例 2、图像矩 什么叫图像的矩&#xff0c;在数字图像处理中有什么作用&#xff1f; - 谢博琛的回答 - 知乎 https://ww…...

环境变量的知识

目录 1. 环境变量的概念 2. 命令行参数 2.1 2.2 创建 code.c 文件 2.3 对比 ./code 执行和直接 code 执行 2.4 怎么可以不带 ./ 2.4.1 把我们的二进制文件拷贝到 usr/bin 路径下&#xff0c;也不用带 ./ 了 2.4.2 把我们自己的路径添加到环境变量里 3. 认识PATH 3.…...

ATECLOUD测试平台有哪些功能?

测试方案搭建 可视化拖拽编程&#xff1a;采用零代码的图文拖拽形式&#xff0c;用户通过鼠标拖拽节点和连线&#xff0c;即可可视化地构建测试模型&#xff0c;无需懂得代码开发&#xff0c;15 分钟左右就能快速搭建项目&#xff0c;大大降低了上手门槛。 子项目多层嵌套&am…...

使用pyinstaller打包pyqt的程序,运行后提示ModuleNotFoundError: No module named ‘Ui_main‘

环境&#xff1a;windowpython3.9pyqt6 使用pyqt UI编辑器生成了main.ui &#xff0c;main.ui编译成了Ui_main.py main.py 使用当前目录下的Ui_main.py。 打包过程没报错&#xff0c;运行报错。 错误如下: 解决方法&#xff1a;pyinstaller -Fw main.py --paths. 使…...

搭建分布式Spark集群

title: 搭建分布式Spark集群 date: 2024-11-29 12:00:00 categories: - 服务器 tags: - Spark - 大数据搭建分布式Spark集群 本次实验环境&#xff1a;Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、scala-2.11.5、Spark-3.2.1 功能规划 MasterSlave1Slave2主节点…...