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