• GRE MGRE原理与配置


    • IPSec VPN用于在两个端点之间提供安全的IP通信,但只能加密并传播单播数据无法加密和传输语音、视频、动态路由协议信息等组播数据流量。
    • 通用路由封装协议GRE( Generic Routing Encapsulation )提供了将一种协议的报文封装在另一种协议报文中的机制,是一种隧道封装技术。GRE可以封装组播数据,并可以和IPSec结合使用,从而保证语音、视频等组播业务的安全。

    GER应用场景

    在这里插入图片描述

    • GRE支持将一种协议的报文封装在另一种协议报文中
    • GRE可以解决异种网络的传输问题
    • GRE用来对某些网络层协议如IPX(Internet Packet Exchange)的报文进行封装,使这些
      被封装的报文能够在另一网络层协议(如IP)中传输。GRE可以解决异种网络的传输问题。
    • IPSec VPN技术可以创建一条跨越共享公网的隧道,从而实现私网互联。IPSec VPN能够
      安全传输IP报文,但是无法在隧道的两个端点之间运行RIP和OSPF等路由协议。GRE可以
      将路由协议信息封装在另一种协议报文(例如IP)中进行传输

    在这里插入图片描述
    GRE隧道扩展了受跳数限制的路由协议的工作范围,支持企业灵活设计网络拓扑

    • 使用GRE可以克服IGP协议的一些局限性。例如,RIP路由协议是一种距离矢量路由协议,
      最大跳数为15。如果网络直径超过15,设备将无法通信。这种情况下,可以使用GRE技术
      在两个网络节点之间搭建隧道隐藏它们之间的跳数扩大网络的工作范围

    在这里插入图片描述
    首先通过GRE对报文进行封装,然后再由IPSec对封装后的报文进行加密和传输
    在这里插入图片描述
    GRE封装报文时,封装前的报文称为净荷,封装前的报文协议称为乘客协议,然后GRE会
    封装GRE头部,GRE成为封装协议,也叫运载协议,最后负责对封装后的报文进行转发的
    协议称为传输协议。

    • GRE封装和解封装报文的过程如下:
    1. 设备从连接私网的接口接收到报文后,检查报文头中的目的IP地址字段,在路由表查找出
      接口,如果发现出接口是隧道接口,则将报文发送给隧道模块进行处理。

    2. 隧道模块接收到报文后首先根据乘客协议的类型和当前GRE隧道配置的校验和参数,对报
      文进行GRE封装,即添加GRE报文头。

    3. 然后,设备给报文添加传输协议报文头,即IP报文头。该IP报文头的源地址就是隧道源地
      址,目的地址就是隧道目的地址。

    4. 最后,设备根据新添加的IP报文头目的地址,在路由表中查找相应的出接口,并发送报文。
      之后,封装后的报文将在公网中传输。

    5. 接收端设备从连接公网的接口收到报文后,首先分析IP报文头,如果发现协议类型字段的
      值为47,表示协议为GRE,于是出接口将报文交给GRE模块处理。GRE模块去掉IP报文头
      和GRE报文头,并根据GRE报文头的协议类型字段,发现此报文的乘客协议为私网中运行
      的协议,于是将报文交给该协议处理。

    在这里插入图片描述
    隧道两端设备通过关键字字段(Key)来验证对端是否合法

    • 关键字(Key)验证是指对隧道接口进行校验,这种安全机制可以防止错误接收到来自其他设备的报文。关键字字段是一个四字节长的数值,若GRE报文头中的K位为1,则在GRE报文头中会插入关键字字段。只有隧道两端设置的关键字完全一致时才能通过验证,否则报文将被丢弃

    在这里插入图片描述
    Keepalive检测功能用于检测隧道对端是否可达

    • Keepalive检测功能用于在任意时刻检测隧道链路是否处于Keepalive状态,即检测隧道对
      端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。使能
      Keepalive检测功能后,GRE隧道本端会定期向对端发送Keepalive探测报文。若对端可达,
      则本端会收到对端的回应报文;若对端不可达,则收不到对端的回应报文。如果在隧道一
      端配置了Keepalive功能,无论对端是否配置Keepalive,配置的Keepalive功能在该端都生
      效。隧道对端收到Keepalive探测报文,无论是否配置Keepalive,都会给源端发送一个回
      应报文。

    • 使能Keepalive检测功能后,GRE隧道的源端会创建一个计数器,并周期性地发送
      Keepalive探测报文,同时进行不可达计数。每发送一个探测报文,不可达计数加1。

    • 如果源端在计数器值达到预先设置的值之前收到回应报文,则表明对端可达。如果计数器
      值达到预先设置的重试次数,源端还是没有收到回应报文,则认为对端不可达。此时,源
      端将关闭隧道连接。

    GRE配置

    在这里插入图片描述

    配置

    [r1]interface Tunnel 0/0/0 ----创建隧道接口
    [r1-Tunnel0/0/0]ip address 192.168.3.1 24 ---该IP地址必须为私网IP
    [r1-Tunnel0/0/0]tunnel-protocol gre ----定义封装方式
    [r1-Tunnel0/0/0]source 12.0.0.1 ----定义封装内容,该IP必须为真实的公网出口IP
    [r1-Tunnel0/0/0]destination 23.0.0.3
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    配置完成后,需要在本地补上通往目的私网网段的路由信息。

    • Keepalive检测机制
    [r1-Tunnel0/0/0]keepalive period 2 retry-times 5 
    
    
    • 1
    • 2

    设置发送周期为2S;设置重传次数为5次

    MGRE配置

    NHRP协议

    • NHRP,全称 “Next Hop Resolution Protocol”,是一种网络协议,通常用于帮助在虚拟专用网络(VPN)或广域网(WAN)中建立动态的点对点连接。NHRP 旨在解决动态点对点连接的地址解析问题,允许网络设备在需要时动态地确定下一跳路由器的地址。

    hub-spoke架构----中心到节点架构;NHS----下一跳服务器
    中心节点的IP地址必须固定。

    1. 地址解析:NHRP 用于解决动态点对点连接中的地址解析问题。当一个网络设备需要与远程设备建立连接时,它可以向 NHRP 服务器查询远程设备的 IP 地址,从而确定下一跳路由器的位置。
    
    • 1
    1. 点对点连接:NHRP 主要用于建立点对点连接,其中两个网络设备需要直接通信,而不经过中间路由器。这在虚拟专用网络(VPN)中非常有用,因为它允许不同地理位置的设备直接连接到VPN,而不需要流量经过 VPN 集线器。

    2. 动态路由:NHRP 可以与动态路由协议(如 EIGRP、OSPF)结合使用,以实现动态路由信息的更新。这意味着当网络拓扑发生变化时,NHRP 可以帮助网络设备动态地更新路由信息,以确保数据包能够有效传递。

    3. 效率:NHRP 旨在提高网络效率,尤其是在需要点对点连接的情况下。它可以减少数据包的冗余路由,直接将它们传送到目的地,减少了网络拥塞和传输延迟。

    4. 安全性:NHRP 也可以提供一定程度的安全性,通过身份验证和授权来限制谁可以查询 NHRP 服务器以获取地址解析信息。这有助于保护网络免受未经授权的访问。

    MGRE的shortcut配置

    在这里插入图片描述

    # Hub节点配置
    [r1]interface Tunnel 0/0/0
    [r1-Tunnel0/0/0]ip address 192.168.5.1 24
    [r1-Tunnel0/0/0]tunnel-protocol gre p2mp ----修改接口封装协议为GRE,且为点到多点模式
    [r1-Tunnel0/0/0]source 15.0.0.1
    Spoke节点配置
    [r2]interface Tunnel 0/0/0
    [r2-Tunnel0/0/0]ip address 192.168.5.2 24
    [r2-Tunnel0/0/0]tunnel-protocol gre p2mp
    [r2-Tunnel0/0/0]source GigabitEthernet 0/0/0
    [r2-Tunnel0/0/0]nhrp entry 192.168.5.1 15.0.0.1 register
                            hub的虚拟接口IP hub的物理接口IP 注册
    [r1]display nhrp peer all ----查看nhrp映射表
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    DSVPN—动态智能VPN

    传统的MGRE技术存在的问题。-----分部之间无法直接通讯(源分支无法获取目的分支的公网地址,也
    就无法建立VPN隧道),导致所有的分支之间的通讯数据只能通过总部HUB设备进行中转

    NHRP映射表

    • 静态表项
      由网络管理员手工配置
      spoke与hub建立静态的mgre隧道
    • 动态表项
      是由NHRP协议动态生成
      hub节点被动获取到spoke节点发送来的注册信息。
      各个spoke节点通过NHRP协议获取到对端的spoke节点的映射关系。
      7200S

    NHRP映射表的建立过程
    建立spoke到hub之间的mgre隧道

    1. spoke向hub注册请求
    2. hub向spoke注册应答
    • 分支间路由学习
      DSVPN支持两种分支间路由学习方式:
      分支间互相学习路由----非shortcut方式(每个分支需要学习到所有对端的路由数据,且下一跳为分支本身)
      分支路由汇聚到总部----shortcut方式(下一跳为hub设备)

    建立spoke与spoke之间的mgre隧道

    • 在shortcut方式下需要添加的配置
    中心:
    [r1-Tunnel0/0/0]nhrp redirect ----开启重定向功能。默认情况为未启动
    分支:
    [r4-Tunnel0/0/0]nhrp shortcut ----使能shortcut功能
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    MGRE环境下的RIP网络搭建—非shortcut

    在这里插入图片描述

    分支没有获取到中心的路由信息
    因为RIP是以组播的方式在发送报文,而MGRE环境下是点到点通讯,不支持组播行为。
    解决思路:开启伪广播功能。

    [r1-Tunnel0/0/0]nhrp entry multicast dynamic ----在中心节点配置
    
    
    • 1
    • 2

    分支之间无法获取对方路由信息
    主要因为华为设备默认开启水平分割机制,导致中心无法从接口将分支的路由发送出去。

    [r1-Tunnel0/0/0]undo rip split-horizon ----关闭水平分割机制
    
    • 1
  • 相关阅读:
    main函数中两个参数的作用
    C++智能指针简介
    MATLAB算法实战应用案例精讲-【图像处理】图像识别分类
    【Socket】解决TCP粘包问题
    常见的Android编译优化问题
    网络流相关(拓扑)CodeForces 269C:Flawed Flow
    LruCache源码解析
    FFmpeg入门----编译环境配置
    java如何使用流式编程实现post请求呢?
    mybatisPlus笔记
  • 原文地址:https://blog.csdn.net/m0_61802503/article/details/133972890