• 二、GRE(Generic Routing Encapsulation,通用路由封装协议)


    2 GRE

    2.1 概念

    GRE(Generic Routing Encapsulation,通用路由封装协议),是一种传统的隧道协议技术。GRE对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在IPv4网络中传输。

    2.2 GRE的封装/解封装

    GRE的封装可以细分为两步:
    (1)在私网原始报文的前面添加GRE头;
    (2)在GRE头前面添加新的IP头。
    在防火墙上,封装操作通过一个Tunnel(隧道)接口实现。报文进入Tunnel接口后,防火墙就会为报文封装GRE头和新IP头。防火墙对私网报文进行封装、解封及转发的全过程如图1所示。
    在这里插入图片描述
    图1 GRE报文转发过程
    PC_A通过GRE隧道访问PC_B时,FW_A和FW_B上的报文转发过程为:
    (1)PC_A访问PC_B的原始报文进行FW_A后,首先匹配路由表,根据匹配结果FW_A送到Tunnel接口进行GRE封装,增加GRE头、外层新IP头;
    (2)FW_A根据封装后报文的新IP头的目的地址再次查找路由表,假设FW_A查找到去往FW_B的下一跳地址为1.1.1.2。
    (3)FW_B接收报文后,首先判断报文是不是GRE报文(报文新IP头中的Protocol字段的值为47,即是GRE报文,否则不是),若是GRE报文,则报文送到Tunnel接口解封装,去掉IP头、GRE头,恢复为原始报文。
    (4)FW_B根据原始报文的目的地址再次查找路由表,根据匹配结果将报文发送至PC_B。

    2.3 GRE的安全机制

    恶意用户伪装成FW_A向FW_B发送GRE报文,则伪装者可访问FW_B的资源,为了避免这种情况的发生,GRE配置了以下安全机制。

    2.3.1 关键字验证

    防火墙只处理与自身建立连接GRE隧道的对端设备发送的GRE报文,GRE头中的“Key”字段用来保证这一功能的实现。只有两端设置的Key字段完全一直才能建立隧道。

    2.3.2校验和验证

    虽然GRE隧道两端防火墙实现了通信,但是报文在Internet传输途中可能被篡改,为保证报文传输的完整性,防火墙在封装GRE头时,将GRE头中的Checksum位的值置1,然后根据报文信息计算校验和,并将校验和填到Checksum字段中。当对端收到报文也会计算校验和并与报文中携带的校验和进行比较,一致则接受,否则丢弃。

    2.3.3 Keepalive

    当一端防火墙出现问题时,另一端发送的探测报文无法检测到对端状态,则会关闭隧道,这样避免了对端不可达而造成的数据黑洞。

    2.4 GRE的缺陷

    没有加密功能,通常配合IPSec使用,即GRE over IPSec技术

  • 相关阅读:
    使用 @FastNative 和 @CriticalNative 的区别
    rhcsa-8
    C# Onnx DirectMHP 全范围角度2D多人头部姿势估计
    最全面的Spring教程(四)——Controller 与 RestFul
    Redis Stack功能介绍及redis-om-dotnet使用示例
    Vuex有几种属性以及它们的意义
    Java面向对象详解(上)
    Virtio-user使用简介
    HTML中的<br>、<hr>和<pre>标签使用指南
    早上空腹喝水,比不吃早餐更伤胃?起床后先做2件事
  • 原文地址:https://blog.csdn.net/qq_42488216/article/details/126304949