HCIP的学习(4)
GRE和MGRE
VPN---虚拟专用网络。指依靠ISP(运营商)或其他公有网络基础设施上构建的专用的安全数据通信网络。该网络是属于逻辑上的。
核心机制—隧道机制(封装技术)
GRE—通用路由封装
三层隧道技术,并且是属于点到点的隧道。
[r1]interface Tunnel 0/0/0 ---创建一个虚拟隧道接口(接口序号只能变最后一个数字,范围:0/0/0-0/0/511)
[r1-Tunnel0/0/0]ip address 192.168.3.1 24
[r1-Tunnel0/0/0]tunnel-protocol gre ---定义隧道所使用的协议
[r1-Tunnel0/0/0]source 12.0.0.1 ---定义封装中的源地址信息
[r1-Tunnel0/0/0]destination 23.0.0.3 ---定义封装中的目的地址信息r1配完,r3也要配置测试隧道是否成功建立:
[r1]ping 192.168.3.3 ----ping对方的隧道地址PING 192.168.3.3: 56 data bytes, press CTRL_C to breakReply from 192.168.3.3: bytes=56 Sequence=1 ttl=255 time=20 msReply from 192.168.3.3: bytes=56 Sequence=2 ttl=255 time=20 msReply from 192.168.3.3: bytes=56 Sequence=3 ttl=255 time=30 msReply from 192.168.3.3: bytes=56 Sequence=4 ttl=255 time=30 msReply from 192.168.3.3: bytes=56 Sequence=5 ttl=255 time=30 ms
一定要添加私网路由信息,将其导入到隧道接口。
[r1]ip route-static 192.168.2.0 24 192.168.3.3
[r3]ip route-static 192.168.1.0 24 192.168.3.1测试:
[r1]ping -a 192.168.1.1 192.168.2.1 ---要使用-a规定源IP,不然路由器会使用12.0.0.1去测试
扩展:接收方在接收到报文时看到封装后的目的IP是自己的,往常逻辑会直接对三层进行解封装,但是GRE不同,接口看到报文的协议号为47(GRE协议号:47),就会直接将报文完整的交给隧道接口,因为它本身接口没有开启GRE协议,就算解封装了不认识GRE也会直接将报文丢了
keepalive机制
keepalive机制是用来检测隧道对端是否可达。(一般一端开启即可,因为发送和回复的报文都是keepalive报文,
内容都是一样的)
当某端开启该机制后,会周期性发送keepalive报文,对端收到后会回复keepalive报文。当一定次数未收到回复
报文,则认为该隧道不可用。(默认3次,每一次发送时间间隔为5秒)[r1-Tunnel0/0/0]keepalive
[r1-Tunnel0/0/0]keepalive period 10 retry-times 5 ---用来更改次数与时间间隔(5次,间隔10秒)period:设置发送周期retry-times:重传次数
MGRE—多点通用路由封装
NHRP—下一跳解析协议
MGRE环境是属于P2MP网络,可以近似的看做是NBMA网络。但是其本质还是点到点。Hub and Spoke架构---中心到站点架构在私网环境中,选择一个出口物理IP不变的设备作为NHRP的中心节点(NHS)。这样,剩下的分支就
可以知晓中心的隧道IP和物理IP地址。然后NHRP协议要求所有分支将自己的物理IP和隧道IP的对应关系
发送给NHS(一旦发生改变就会发送)。这样NHS就拥有所有分支的地址映射关系,并记录在本地。
在发送数据报文之前,查询NHS决定封装数据。
中心:
[r1]interface Tunnel0/0/0
[r1-Tunnel0/0/0]ip address 192.168.5.1 255.255.255.0
[r1-Tunnel0/0/0]tunnel-protocol gre p2mp ---修改接口的封装协议为MGRE
[r1-Tunnel0/0/0]source 15.0.0.1[r1-Tunnel0/0/0]nhrp network-id 1 --默认值为0(范围:1-4294967295),改不改都行,要改所有的设备都要改分支:
[r2]int Tunnel0/0/0
[r2-Tunnel0/0/0]ip address 192.168.5.2 255.255.255.0
[r2-Tunnel0/0/0]tunnel-protocol gre p2mp
[r2-Tunnel0/0/0]source GigabitEthernet0/0/0 ---规定封装源为GE0/0/0接口的IP地址
[r2-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register --第一个IP为隧道地址,第二个为物理地址(都是中心的)1、告知本端,hub节点的隧道IP与物理IP的对应关系;2、向hub节点注册本地的隧道IP与物理IP的对应关系;补全路由信息:
[r1]ip route-static 192.168.2.0 24 192.168.5.2
[r1]ip route-static 192.168.3.0 24 192.168.5.3[r2]ip route-static 192.168.1.0 24 192.168.5.1 ----下一跳均为Hub节点
[r2]ip route-static 192.168.3.0 24 192.168.5.1[r3]ip route-static 192.168.1.0 24 192.168.5.1
[r3]ip route-static 192.168.2.0 24 192.168.5.1
DSVPN(动态智能VPN技术):可以随时增加和删除虚拟隧道专线和节点(下面两者相加组成)
- MGRE
- NHRP
shortcut方式:分支路由汇聚到总部,每一个分支编写的路由信息的下一跳均为hub节点。非shortcut方式:非便捷方式,分支之间相互学习路由。下一跳分别是分支的隧道IP地址。而非hub节点。
扩展:
Hub - Spoke:NHRP映射表静态关系
Spoke - Spoke:NHRP映射表动态关系
在非shortcut方式下,NHRP映射表动态关系:7200S(2小时)老化时间
非shortcut
解释:(图中的数字为报文顺序)
- 首先,在r2里有着3.0网段下一条对应虚拟网段接口5.3,虚拟网段接口5.1对应真实接口吓一跳15.0.0.1,r3中有着2.0网段下一条对应虚拟网段接口5.2,虚拟网段接口5.1对应真实接口吓一跳15.0.0.1
- r2要发送信息给3.0网段时,知道要发送给虚拟网段接口5.3,但NHRP表中没有对应虚拟网段接口5.3的真实端口IP,发现缺少(有误就封装中心的对应真实接口,让中心转发)。而此时有ICMP数据需要发送(ICMP数据发送优先级比填补缺少对应高),所以先发送ICMP数据给r1(hub),随后发送NHRP报文,问r1要r3的地址信息。
- r1先接收到ICMP报文,查看是给r3的,就进行转发给r3,随后接收到NHRP报文,虽然r1有r3的地址信息,但r1不会直接回复,会转发给r3(征求r3意见)
- r3先接收到ICMP报文,正常回复ICMP报文,随后接收到NHRP请求报文,r3直接发送给r2(因为NHRP请求报文中有原IP信息:25.0.0.2),虽然NHRP请求报文中有r2的NHRP映射关系,但r3并不会保存下来,因为在r3看来并不是我主动要的,优先度最低,不可信。只有自己要的才是可信的,但r2接收到r3发送的NHRP应答报文,会直接将r3虚拟网段接口5.3的对应真实接口35.0.0.3写进NHRP映射表中,因为这是r2主动请求的。
- 此时,r1将r3发送的ICMP报文转发给r2,r2要再发送ICMP报文就直接发送给r3
- 而r3要去回复ICMP报文报文时,发现NHRP表中没有对应虚拟网段接口5.2的真实端口IP,他也要发送NHRP请求报文给r1,然后r1转发给r2,r2再直接发送NHRP应答报文给r3,当r3将虚拟网段接口5.2的对应真实接口25.0.0.2写进NHRP映射表中时,两者的虚拟隧道就算建立起来了。
- 当r2与r3两者都不发消息,不发消息超过7200S(2小时)老化时间,这条隧道就会被拆除。
shortcut
解释:(图中的数字为报文顺序)
- r2要发送ICMP报文给r3,先发送给r1(因为是shortcut方式,所以去往3.0网段下一跳写的就是5.1,5.1在NHRP映射表中有,所以在r2看来没有错误),r1接收后将ICMP报文转发给r3,再给r2发送重定向报文(原因和携带内容下面配置后面有写)。
- r2接收到重定向报文,像r1发送NHRP请求报文,r1再转发给r3,r3接收到NHRP请求报文,就直接给r2发送NHRP应答报文。
- 有区别的是:r3接收到第一次r1转发的ICMP报文,会给r1发送ICMP回复报文,r1接收后,也会转发给r2,但也会给r3发送一个重定向报文(原理与上面一样),r3也会给r1发送一个NHRP请求报文,与上面一样,最后r2与r3都NHRP映射表数据都改了,就建立了一个虚拟隧道
在shortcut方式下,如果需要分支之间独立建立隧道,则需要添加如下配置:[r1-Tunnel0/0/0]nhrp redirect ---hub节点配置,开启重定向功能(r1发现数据从r2发送进入Tunnel0/0/0,
又从Tunnel0/0/0出去转发给r3,发现是次优路径,才会给r2发送重定向报文,报文里面有3.0网段对应的
真实端口IP为192.168.5.3)
[r2-Tunnel0/0/0]nhrp shortcut ---在spoke节点配置,使能shortcut功能,未开启该功能,则代表分支站点
无法响应重定向报文。(如果不开启,r2收到r1的重定向报文,会认为自己可以正常收发消息(去3.0网段下
一跳为5.1,5.1又映射为15.0.0.1),没有错误,不需要更改,直接将重定向报文丢弃)
[r3-Tunnel0/0/0]nhrp shortcut
以非shortcut方式进行DSVPN组网时,分支站点可以自主发现NHRP映射表中存在关系缺少的现象,从而主动向hub节点申请通讯对端的映射关系。而在shortcut组网环境下,分支站点无法自主发现,需要hub节点通过重定向报文参与到分支之间的隧道建立过程。
相关文章:

HCIP的学习(4)
GRE和MGRE VPN---虚拟专用网络。指依靠ISP(运营商)或其他公有网络基础设施上构建的专用的安全数据通信网络。该网络是属于逻辑上的。 核心机制—隧道机制(封装技术) GRE—通用路由封装 三层隧道技术,并且是属于…...
MySQL写shell的问题
写shell用什么函数? select <?php phpinfo()> into outfile D:/shelltest.phpdumpfilefile_put_contentsoutfile不能用了怎么办? select unhex(udf.dll hex code) into dumpfile c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll;可以UDF提权https…...
每天学习一会java(第一天)----条件运算符
今天学习的是条件运算符 1.描述: 条件运算符由“?”与 “:” 两个符号组成,必须一起使用,是 JAVA 中唯一的三目(三元)运算符,需要三个操作数才能进行运算。 条件表达式的一般使用形式为: 表达…...

hyperf 二十八 修改器 一
教程:Hyperf 一 修改器和访问器 根据教程,可设置相关函数,如set属性名Attribute()、get属性名Attribute(),设置和获取属性。这在thinkphp中也常见。 修改器:set属性名Attribute();访问器:get属性名Attri…...

ubuntu20.04安裝輸入法
文章目录 前言一、操作過程1、安装fcitx-googlepinyin2、配置language support 前言 參考文獻 一、操作過程 1、安装fcitx-googlepinyin sudo apt-get install fcitx-googlepinyin2、配置language support 第一次點擊進去,會讓你安裝 點擊ctrl和空格切換中英文…...

2024年【熔化焊接与热切割】考试报名及熔化焊接与热切割找解析
题库来源:安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试报名考前必练!安全生产模拟考试一点通每个月更新熔化焊接与热切割找解析题目及答案!多做几遍,其实通过熔化焊接与热切割实操考试视频很简单。 1、【单选题】 下…...

聚类分析|基于层次的聚类方法及其Python实现
聚类分析|基于层次的聚类方法及其Python实现 0. 基于层次的聚类方法1. 簇间距离度量方法1.1 最小距离1.2 最大距离1.3 平均距离1.4 中心法1.5 离差平方和 2. 基于层次的聚类算法2.1 凝聚(Agglomerative)2.3 分裂(Divisive) 3. 基于…...
前端实现导出xlsx功能
1.安装xlsx插件 npm install xlsx 2.示例 import XLSX from xlsx;// 示例数据 const data [[Name, Age, Country],[Alice, 25, USA],[Bob, 30, Canada],[Charlie, 28, UK] ];// 创建一个 Workbook 对象 const wb XLSX.utils.book_new(); const ws XLSX.utils.aoa_to_sheet…...

算法系列--动态规划--⼦数组、⼦串系列(数组中连续的⼀段)(1)
💕"我们好像在池塘的水底,从一个月亮走向另一个月亮。"💕 作者:Mylvzi 文章主要内容:算法系列–动态规划–⼦数组、⼦串系列(数组中连续的⼀段)(1) 大家好,今天为大家带来的是算法系…...
RESTful架构
RESTful架构中的URI设计与传统的URL设计有一些区别。让我通过具体的例子来解释一下: 传统的URL设计通常将操作和资源混合在一起,例如: 获取所有图书:GET /getBooks获取特定图书:GET /getBookById/{id}创建新图书&…...

从IO操作与多线程的思考到Redis-6.0
IO操作->线程阻塞->释放CPU资源->多线程技术提升CPU利用率 在没有涉及磁盘操作和网络请求的程序中,通常不会出现线程等待状态。线程等待状态通常是由于线程需要等待某些事件的发生,比如I/O操作完成、网络请求返回等。如果程序只是进行计算或者简…...
MNN介绍、安装和编译
MNN是一个轻量级的深度学习推理框架,由阿里巴巴公司开发。它支持多种硬件平台,包括CPU、GPU和NPU,并提供高效、高性能的深度学习模型推理服务。下面是MNN的安装和编译步骤: 下载MNN源代码 在MNN的GitHub页面(https://g…...

【计算机图形学】AO-Grasp: Articulated Object Grasp Generation
对AO-Grasp: Articulated Object Grasp Generation的简单理解 文章目录 1. 做的事情2. AO-Grasp数据集2.1 抓取参数化和label标准2.2 语义和几何感知的抓取采样 3. AO-Grasp抓取预测3.1 预测抓取点3.2 抓取方向预测 4. 总结 1. 做的事情 引入AO-Grasp,grasp propo…...

「媒体宣传」财经类媒体邀约资源有哪些?-51媒体
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 财经类媒体邀约资源包括但不限于以下几类: 商业杂志和报纸:可以邀请如《财经》、《新财富》、《经济观察报》等主流商业杂志和报纸。这些媒体通常具有较强的品牌影…...
学习资料记录
http://interview.wzcu.com/Golang/%E4%BB%A3%E7%A0%81%E8%80%83%E9%A2%98.html map底层 https://zhuanlan.zhihu.com/p/616979764 go修养 https://www.yuque.com/aceld/golang/ga6pb1#4b19dba5 https://golang.dbwu.tech/performance/map_pre_alloc/ https://juejin.cn/pos…...

数据结构进阶篇 之 【二叉树】详细概念讲解(带你认识何为二叉树及其性质)
有朋自远方来,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,鞭数十,驱之别院 一、二叉树 1、二叉树的概念 1.1 二叉树中组分构成名词概念 1.2 二叉树的结构概念 1.3 特殊的二叉树 2、二叉树的存储结构 …...

vue.js制作学习计划表案例
通俗易懂,完成“学习计划表”用于对学习计划进行管理,包括对学习计划进行添加、删除、修改等操作。 一. 初始页面效果展示 二.添加学习计划页面效果展示 三.修改学习计划完成状态的页面效果展示 四.删除学习计划 当学习计划处于“已完成”状态时&…...
nginx localtion 匹配规则
1、语法规则 语法规则:location[|~|^~*|^~]/uri/{… } 表示精确匹配,这个优先级也是最高的 ^~ 表示 uri 以某个常规字符串开头,理解为匹配 url 路径即可。 nginx 不对 url 做编码,因此请求为 /image/20%/aa,可以被规则^~ /imag…...
Git:分布式版本控制系统
目录 Git的特点和功能常见的功能和对应的命令 Git的特点和功能 Git是一个分布式版本控制系统,用于跟踪和管理项目的代码变更。它是由Linus Torvalds在2005年创建的,旨在管理Linux内核的开发。Git具有以下特点和功能: 分布式版本控制…...

[STL]priority_queue类及反向迭代器的模拟实现
🪐🪐🪐欢迎来到程序员餐厅💫💫💫 今日主菜: priority_queue类及反向迭代器 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:c大冒险 向着c&…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
AT模式下的全局锁冲突如何解决?
一、全局锁冲突解决方案 1. 业务层重试机制(推荐方案) Service public class OrderService {GlobalTransactionalRetryable(maxAttempts 3, backoff Backoff(delay 100))public void createOrder(OrderDTO order) {// 库存扣减(自动加全…...

边缘计算设备全解析:边缘盒子在各大行业的落地应用场景
随着工业物联网、AI、5G的发展,数据量呈爆炸式增长。但你有没有想过,我们生成的数据,真的都要发回云端处理吗?其实不一定。特别是在一些对响应时间、网络带宽、数据隐私要求高的行业里,边缘计算开始“火”了起来&#…...