华为HCIE课堂笔记第十七章 广域网互联技术
第十七章 广域网互联技术
17.1 GRE VPN
GRE VPN用于分支与分支通过私网地址互联,通过在私网报文上添加一个GRE的头部,以及添加一层外层的IP头部,通过外层头部中的目IP地址使得报文到达隧道对端接口,并解封装得到原始的私网报文。隧道的两个源目IP地址就相当于是形成了一个隧道。
17.1.1 报文格式
格式:外层的帧头+外层IP头部+GRE头部+内层的IP头部+载荷部分
外层帧头:由报文外层目的IP地址及查找路由的下一跳决定。
外层IP头部:Tunnel接口中配置的隧道远端IP地址和隧道目的端IP地址决定
GRE头部:
- 1、C bit位:如果置1,表示该头部中携带校验和字段(可变字段),置0不携带
- 2、K bit位:如果置1,表示该头部中携带Key字段(主要是用于隧道通信时进行隧道合法性验证),置0不携带。
- Recursion:该字段表示报文经过了几层GRE的封装,防止报文进行无限次数封装。GRE头部最多3层,设备收到超过3层GRE的封装的报文,则丢弃。
- Protocol type字段:乘客协议,是指GRE报文内部中封装的私网报文是何种协议。
私网IP头部:源目IP地址是互访的两条私网设备自身地址。
GRE隧道是承载3层数据通信的L3VPN,支持广播、组播、单播、因此该隧道中可以传递动态路由协议,可以承载IPv4和IPv6报文。
17.1.2 GRE功能
1、Keepalive机制
GRE默认不开启Keepalive 机制,手动开启后,设备将按照默认5s的周期发送Keepalive报文给隧道对端的接口,如果重传3次,对端仍为未回复Keepalive报文,则认为隧道Down。
2、校验和机制
GRE头部中Cbit位置1,表示携带校验和字段,校验和根据载荷部分报文hash计算得来,一起发送给对端,对端收到报文之后,对载荷部分重新按照相同算法再进行一次校验,得出校验值与报文GRE头部中的校验和进行比较,相同则接受,不同则丢弃。
- Key功能
GRE隧道两端设备都隧道接口都设置相同的关键字(key),收发报文关键字必须一致,否则就丢弃报文。Kbit位置1,携带Key字段。
- 动态路由:支持IGP协议直接通过隧道学习分支路由表
- 在私网的IGP中通告GRE Tunnel接口的本身的IP地址,但是不同通告隧道的源地址。
- 如果通告了隧道的源地址(公网地址),公网地址也通过隧道封装,会导致报文重复进行GRE封装,而封装失败。(隧道接口网络层协议平繁的up和down)
- 应用场景:MPLS VPN 中CE设备和PE设备非直连,通过GRE隧道在CE和PE之间建立GRE VPN,PE上创建实例在Tunnel 接口下绑定。
17.2 L2TP VPN
- 概念:
- NAS:网络接入服务器,连接的终端的拨号网络(也是LAC)
- LAC:网络接入客户端,发起L2TP连接的设置(一般为出差员工的终端设备)
- LNS:L2TP网络服务器,与LAC是一对,接收L2TP的连接请求的服务器。(一般总部的出口设备)
- 组网模型:三种,常用远程办公连接
- 远程办公设备作为LAC直接向LNS进行拨号
- 分支的出口设备作为LAC向总部LNS进行拨号
- 分支的终端设备通过PPPoE向ISP的NAS进行拨号,NAS作为LAC向总部的LNS进行L2TP拨号连接。
- 消息类型:控制消息和数据消息
- 控制消息:主要是用于隧道建立,会话建立拆除等
- 公网IP头部+UDP头部+L2TP头部+控制消息部分
- 数据消息
- 公网IP头部+UDP头部+L2TP头部+PPP头部+私网IP头部+数据部分
- 控制消息:主要是用于隧道建立,会话建立拆除等
-
- IPsec VPN
17.3.1 IPsec的功能:
-
-
- 加密、认证,提供报文的安全
- 防重放机制:防止恶意大量复制IPsec报文并发送给IPsec目标设备,消耗目标设备系统资源
- 不可否认性:通过对通信双方身份进行信息认证。
-
17.3.2 加密方式
对称加密:用于数据传输过程中对报文的加密,加密和解密使用相同的密钥进行。
加解密需要用密钥算法和密钥(密码)。DES、3DES算法,AES算法。
非对称加密:用于身份认证,保护对称密钥,加密和解密使用不同的密钥进行。DH算法,RSA算法。公钥和私钥,公钥是公开的,所有人可以得到该用户的公钥,私钥用户自己保存,不能泄露。
- 数据认证:主要作用是报文被篡改后能够及时发现
- A将报文和报文hash计算之后的hash值一起发送给B
- B将报文的内容重新进行hash计算,得出的hash值与报文携带的hash值进行比较,相同则说明报文未被修改,接收。不同则说明报文被篡改,丢弃不接受。
17.4 IPsec 工作原理
- 加密思路:
- 通信报文通过对称密钥A进行加解密,需要保障密钥A交互的过程中必须要安全
- 使用对端的公钥B1进行加密对称密钥A,得到密钥A的密文X
- 对端收到密文X后,通过自己的私钥B2进行解密,得到对称密钥A,用于数据通信加密。
- IPsec SA(安全联盟):用于隧道建立的一些要素的约定,包含了加密算法、认证算法、封装的类型(隧道模式封装,传输模式封装)。两个方向,对于同一个通信的两个点,本端设备上会存在两个IPsec SA(inbound和outbound方向)。Ipsec隧道的建立过程,就是SA的建立过程。两种方式:手工和IKE自动建立。
- IPsec加密和认证
- 认证:本端根据加密算法,将自己的报文A加密得到A1,在根据认证算法将A1进行hash计算,得到hash值ICV,ICV与A1一起发送给对端。
- 对端将根据相同的认证算法,对报文进行hash计算,得到ICV与报文后携带ICV进行比较,相同则进行解密,不同,则丢弃。
- 解密:对端根据解密算法,将报文A1进行解密得到原始报文A
- 两种传输协议:AH(支持认证)、ESP(认证、加密)
- 两种封装模式:隧道封装、传输模式封装
- 隧道封装报文:AH
- 原报文:私网IP+Data部分
- AH封装后报文:外层IP+AH头部(ICV)+私网IP头部+Data部分
- AH认证的部分:外层IP头部到Data部分(包含这两个部分)
- 隧道封装报文:ESP
- 原报文:私网IP头部+Data部分
- ESP封装后的报文:外层IP头部+ESP头部+私网IP头部+Data部分+ESP尾部+ESP认证数据
- ESP加密后的报文:私网IP头部+Data部分+ESP尾部
- ESP认证范围:ESP头部+私网IP头部+Data部分+ESP尾部
- 对加密后的报文进行认证,将认证后计算的Hash值放入到ESP认证数据部分,报文格式:外层IP头部+ESP头部+私网IP头部+Data部分+ESP尾部+ESP认证数据
- 传输模式封装报文:AH
- 原报文:私网IP+Data部分
- AH封装后:私网IP+AH头部+Data部分
- 认证范围:私网IP+AH头部+Data部分
- 传输模式封装报文:ESP
- 原报文:私网IP+Data部分
- ESP封装后:私网IP头部+ESP头部+数据部分+ESP尾部+ESP认证数据
- 认证范围:ESP的头部+数据部分+ESP的尾部,认证数据放到报文尾部ESP认证数据字段
- 加密范围:数据部分+ESP尾部
- 总结:AH的认证范围是包含外层IP头部;ESP的加密范围是ESP头部之后的数据(隧道模式包含内层的IP头部)+ESP尾部;ESP认证范围是ESP的头部到ESP尾部中间(包含头尾)。
- 隧道封装报文:AH
17.5 IPsec 隧道动态建立过程
17.5.1 IKE 协议动态建立IPsec SA
IKE两个版本:v1版本和V2版本
- IKE V1版本:两种模式,主动模式和野蛮模式,两个阶段
- 主动模式:第一阶段,6个报文,三次交互
- 1,2个报文进行IKE提议的交互,确定IKE SA
- 3,4个报文交互密钥材料,生成相同的密钥,生成飞对称密钥。
- 5,6个报文使用第2步生成密钥对身份认证和过程的认证报文交互进行加密保护
- 野蛮模式:第一阶段,3个报文
- 1,2个携带IKE 提议、身份和验证信息,交互报文确定IKE SA
- 发送验证数据
- 快速模式:第二阶段,主要的任务协商IPsec SA,该过程使用第一阶段生成的密钥进行加密保护。
- 1,2报文进行IPsec 提议的交互,协商IPsec SA
- 发送方发送确认信息,确认与响应方可以通信,协商结束。
17.5.2 IKE v2
除了初始交换过程开始两个报文不加密,其他报文均加密
1、初始交换:用于协商IPsec SA的,4个报文,其中两个报文用于交互IKE参数,2个报文用于进行身份和过程认证。
2、子SA交换过程,如果需要协商过个IPSec SA,每增加一个SA,增加一次子SA交换过程即可
3、通知交换过程:用于交换查错信息,消息信息等。
17.6 IPsec NAT穿越
AH协议由于要对报文的外层IP头部进行认证,经过了NAT设备后,IP头部发生改变,会导致对端接受到报文后,认证失败,因此AH不支持NAT穿越
ESP协议,新增加封装UDP头部,则可以支持NAT穿越。
NAT-T 功能,开启NAT-T,检测数据包的源IP地址和端口号,将源IP地址与源端口号hash计算,传递给对端,对端收到报文后,将报文的IP源IP地址和与源端口再次hash计算,得出的结果不同,则认为报文经过了NAT设备。
NAT穿越只能通过分部发起IPsec协商,如果需要总部发起IPsec协商可以在NAT设备上,将端口500和4500一起映射到公网。总部发起IPsec协商的地址是分部的公网地址。如果不映射,分部发起IPsec协商,总部采用策略模版配置。
NAT-T场景,IPsec网关在分支的NAT设备后面,分支访问总部,在NAT设备上创建NAT会话表,总部回包根据NAT会话,NAT设备进行向内部转发。总部无法主动访问分支,因为NAT设备上不存在NAT会话表。但是如果存在NAT会话表,总部也可以主动访问分支IPsec网关。
NAT会话保活:分支IPsec网关周期默认20s一次发送NAT保活报文,用于保留NAT设备上的NAT映射表,此时总部和分支都可以主动任意互访。
17.7 NAT穿越
17.7.1 NAT的类型
- 圆锥型:同一个内部tuple转换为同一个外部tuple
- 完全圆锥型:收到报文检查报文的目的地址与映射表中的外部tuple是否相同,相同则转发
- 限制圆锥型:收到报文之后,检查报文的目的地址与映射表中的外部tuple是否相同,还检查报文的源地址是否与映射表中的目的tuple是否相同。
- 端口限制圆锥型:收到报文之后,检查报文的目的地址与因设备表的外部tuple是否相同,还检查报文的源地址与端口号是否与目的tuple相同。
- 对称型:同一个内部tuple加上同一个目的tuple转为同一个外部tuple,否则不同的外部tuple;收到报文后检查项和端口限制圆锥型相同。
17.7.2 映射表
存在三个tuple:
-
- 内部tuple:私网IP地址和私网端口号(转换前的IP地址和端口号)
- 外部tuple:转换后的IP地址和端口号(公网IP地址和端口号)
- 目的tuple:私网设备经过NAT设备访问公网设备,报文的目的IP地址和端口号。
17.7.3 NAT穿越
NAT ALG技术:对应用层报文的内容进行识别,并修改应用层报文的内容,提前建立映射表。实现NAT穿越。典型应用是FTP协议。
参考命令:
[Huawei]nat alg all enable //使能所有可以支持的应用层协议支持ALG功能。
STUN技术:作用主要适用于获取NAT地址转换映射关系
- 内网设备发送绑定请求消息,给到STUN服务器,服务器收到请求消息后,从消息中读取设备的源地址(私网地址和端口号),以及报文的源地址(公网地址和端口号)的映射关系。将绑定关系回复给内网设备(客户端)
- 通过BGP协议相互学习对方的NAT信息,从而或者对方的映射信息,私网之间设备通信访问映射消息中的公网地址和端口号即可。
- 必须是要完全圆锥型NAT才能支持。
相关文章:
华为HCIE课堂笔记第十七章 广域网互联技术
第十七章 广域网互联技术 17.1 GRE VPN GRE VPN用于分支与分支通过私网地址互联,通过在私网报文上添加一个GRE的头部,以及添加一层外层的IP头部,通过外层头部中的目IP地址使得报文到达隧道对端接口,并解封装得到原始的私网报文…...
代码随想录算法训练营第17天(二叉树5)| 找树左下角的值二叉树的路径总和从中序与后序遍历序列构造二叉树从前序与中序遍历序列构造二叉树
513.找树左下角的值 leetcode题目地址 题目链接/文章讲解/视频讲解 如果使用递归法,如何判断是最后一行: 其实就是深度最大的叶子节点一定是最后一行。 //迭代法 class Solution { public:int findBottomLeftValue(TreeNode* root) {queue<TreeNod…...
代码随想录 Leetcode106. 从中序与后序遍历序列构造二叉树
题目: 代码(首刷看解析 2024年1月30日): class Solution { public:TreeNode* recursion(vector<int>& inorder, vector<int>& postorder, int longthOfLeft, int longthOfRight) {if (postorder.size() 0) …...
Log4j Log4j2
前言 今天抽时间来把这个日志框架学学,毕竟经常用,虽然不用自己写,但是书到用时方恨少,技多不压身。而且最近我的 GUI 软件中有一个关于日志问题的希望学完能够感觉解决掉。 Log4j & Log4j2 Log4j2 是 Log4j 的升级版&#x…...
C语言——如何进行文件操作
大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流 本文由:残念ing原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各位→…...
python中for循环的几个现象
1. 运行如下代码 l [{}, {}, {}] for k in l:k[1] 1 print(l) 输出为 [{1: 1}, {1: 1}, {1: 1}]2. 运行如下代码 l [{}, {}, {}] for k in l:k {1:1} print(l) 输出为 [{}, {}, {}] 3. 运行如下代码 l [1,2,3] for k in l:k k * 2 print(l)输出为 [1, 2, 3…...
openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板
文章目录 openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板概述笔记工程中需要的openssl的库实现补充 - 最终的模板工程END openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板 概述 openssl3.2 - 测试程序的学习 整了几个test.c, 每开一个新的测试工…...
Delphi.cz采访Embarcadero捷克共和国办事处经理:理查德·库巴特 - 第一部分
Embarcadero捷克办事处主任理查德库巴特(Richard Kubt,55 岁)接受了我的采访。 Radek Červinka (RČ):库巴特先生您好,感谢您抽出时间访问 delphi.cz。 一开始:我在某处听说您是一名程序员,从…...
AI投资或成科技裁员罪魁祸首
最近的科技裁员让许多人对这个行业的稳定性产生了疑问。然而,仔细观察发现,这些裁员并不是经济困境的迹象,而是科技公司为了重新调整优先事项并投资未来而进行的战略举措。科技行业正投入数十亿美元用于人工智能(AI)&a…...
解读BEVFormer,新一代自动驾驶视觉工作的基石
文章出处 BEVFormer这篇文章很有划时代的意义,改变了许多视觉领域工作的pipeline[2203.17270] BEVFormer: Learning Birds-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers (arxiv.org)https://arxiv.org/abs/2203.17270 BEV …...
【React教程】(1) React简介、React核心概念、React初始化
目录 ReactReact 介绍React 特点React 的发展历史React 与 Vue 的对比技术层面开发团队社区Native APP 开发 相关资源链接 EcmaScript 6 补充React 核心概念组件化虚拟 DOM 起步初始化及安装依赖Hello World React React 介绍 React 是一个用于构建用户界面的渐进式 JavaScrip…...
云计算中的弹性是什么?
云弹性是指当客户需求增加或减少时,自动从数据中心配置和取消配置资源。这使得云资源(包括计算、存储和内存资源)能够根据需求变化快速重新分配。CPU/处理、内存、输入/输出带宽和存储容量等计算资源可以根据需要增加或减少,而不会影响系统性能。 它旨在…...
Vue3基础:pnpm是什么?npm和pnpm的区别?如何使用pnpm?
pnpm 是一个流行的 JavaScript 包管理器,类似于 npm 和 yarn。它是 performant npm 的缩写,意在表明它是一个更高效的 npm 替代品。pnpm 的主要特点和优势包括: 高效的存储空间使用 pnpm 使用称为“内容寻址存储”的机制来存储 npm 包。这意…...
vue中父组件直接调用子组件方法(通过ref)
目录 1、vue2 中,父组件调用子组件的方法 2、vue3 中,父组件调用子组件的方法 1、vue2 中,父组件调用子组件的方法 在Vue 2中,父组件可以通过使用ref属性来引用子组件的实例,然后通过该实例调用子组件的方法。 首先…...
Gunicorn性能优化:提升Python Web应用的服务效率
在Python Web开发中,Gunicorn作为WSGI HTTP服务器,常常作为Web应用(如Django或Flask)与反向代理或负载均衡器之间的桥梁。为了充分发挥其性能,本文将提供一些实用的Gunicorn配置建议。 Gunicorn架构 Gunicorn采用了预…...
如何使用ssh key免密码登录服务器?
以下是使用密钥对免密码登录服务器的具体指令操作步骤: 步骤一:生成密钥对 在本地电脑上打开终端或命令提示符,运行以下命令生成密钥对: ssh-keygen -t rsa -C "your_emailexample.com" 该命令会提示您选择保存密钥…...
macos Android平台签名证书(.keystore)
一、申请appid的使用说明(有appid的请忽略申请appid) 创建应用 申请的appid在源码视图填写后会自动生成一个对应的包名 ⚠️注意:申请appid的时候应用名称和项目名称保持一致。 二、 Android如何使用自用证书进行打包 1.找到安装jdk的路径…...
Kotlin快速入门系列2
Kotlin的基本数据类型 Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。 Java和kotlin数据类型对照如下: Java基本数据类型 Kotlin对象数据类型 数据类…...
单片机之keil软件环境搭建
简介 Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。 目前软件对中文的支持不友好,不建议安装网上的一些汉化包…...
数学公式OCR识别php 对接mathpix api 使用公式编译器
数学公式OCR识别php 对接mathpix api 一、注册账号官网网址:https://mathpix.com 二、该产品支持多端使用注意说明(每月10次) 三、api 对接第一步创建create keyphp对接api这里先封装两个请求函数,get 和post ,通过官方…...
如何用WaveTools终极优化《鸣潮》游戏性能:从卡顿到丝滑的完整指南
如何用WaveTools终极优化《鸣潮》游戏性能:从卡顿到丝滑的完整指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 如果你正在玩《鸣潮》却频繁遭遇帧率波动、画面卡顿或操作延迟,那…...
别再死记硬背了!用UE材质里的点积、叉积,5分钟搞定模型表面动态光效
用UE材质玩转动态光效:点积、叉积实战指南第一次接触UE材质编辑器时,看到那些密密麻麻的数学节点总让人头皮发麻。特别是"点积"、"叉积"这些听起来就很高深的术语,很容易让美术背景的创作者望而却步。但你知道吗…...
基于树莓派打造万能遥控器:从硬件选型到Web控制界面全解析
1. 项目概述:打造一个能“学习”的万能遥控器家里遥控器越来越多,电视、空调、风扇、灯带……每个设备都配一个,找起来麻烦,用起来也乱。市面上所谓的“万能遥控器”其实并不万能,它内置的码库有限,很多小众…...
Noto字体终极指南:告别“豆腐块“,让全球文字清晰显示
Noto字体终极指南:告别"豆腐块",让全球文字清晰显示 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 在数字世界中,你是否经常看到那些令人困…...
AI算法工程师如何进行数据预处理?这5个步骤让你的数据更优质
在AI模型开发与测试的全流程中,数据质量直接决定了最终模型的效果上限——哪怕是最先进的大语言模型,用劣质数据训练出来也只能输出劣质结果。对于软件测试从业者来说,不管是参与AI模型的功能测试、性能测试,还是负责测试数据集的…...
Elsevier-Tracker:5分钟打造您的学术论文审稿进度监控系统
Elsevier-Tracker:5分钟打造您的学术论文审稿进度监控系统 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 在科研工作者的日常中,论文审稿进度追踪常常成为消耗时间与精力的隐形负担。每天反…...
如何用500KB工具完全替代AWCC:AlienFX Tools终极指南
如何用500KB工具完全替代AWCC:AlienFX Tools终极指南 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 你是否厌倦了Alienware Command Cente…...
免费岛屿设计工具终极指南:Happy Island Designer 完整教程 [特殊字符]️
免费岛屿设计工具终极指南:Happy Island Designer 完整教程 🏝️ 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友…...
基于傅里叶神经算子的含时密度泛函理论加速模拟
1. 项目概述与核心思路在计算材料科学和量子化学领域,模拟电子在激光等外场驱动下的动力学行为,是理解光催化、光电转换、甚至量子计算基础过程的关键。含时密度泛函理论(TDDFT)是处理这类问题的“金标准”之一,它通过…...
DeepSeek熔断决策延迟超23ms?,基于eBPF实时观测的熔断器内核态性能瓶颈诊断指南(限内部技术圈流通)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek熔断降级方案 DeepSeek大模型服务在高并发、低质量请求或底层依赖异常时,需具备快速响应的熔断与降级能力,以保障系统整体可用性与资源稳定性。该方案基于响应延迟、错误…...
