华为防火墙笔记-GRE

GRE(General Routing Encapsulation)即通用路由封装协议。

但凡一种网络封装技术,其基本的构成要素都可以分为三个部分:乘客协议封装

协议运输协议,GRE也不例外。为了便于理解封装技术,我们用邮政系统打个比方。

  • 乘客协议 乘客协议就是我们写的信,信的语言可以是汉语、英语、法语等,具体的内容由写信人、读信人自己负责。
  • 封装协议 封装协议可以理解为信封,可以是平信、挂号或者是EMS。不同的信封就对应于多种封装协议。
  • 运输协议 运输协议就是信的运输方式,可以是陆运、海运或者空运。不同的运输方式就对应于多种运输协议。

华为防火墙笔记-GRE_第1张图片

GRE的封装过程可以细分成两步,第一步是在私网的原始报文前面添加GRE头,第二步是在GRE头前面再加上新的IP头,新IP头中的IP地址为公网地址。加上新的IP头以后,就意味着这个私有网络的报文经过层层封装以后就可以在Internet上传输了。

在防火墙上,封装操作是通过一个逻辑接口来实现的,这个逻辑接口就是鼎鼎有名的Tunnel接口。Tunnel即隧道,从名字就可以看出来这个逻辑接口就是为隧道而生。

Tunnel接口上带有新IP头的源地址目的地址信息,报文进入Tunnel接口后,防火墙就会为报文封装GRE头和新的IP头

华为防火墙笔记-GRE_第2张图片

那么防火墙是如何把报文送到Tunnel接口的呢?这就要通过路由来实现了,防火墙支持如下两种方式。

  • 静态路由:在GRE隧道两端的防火墙上配置去往对端私网网段的静态路由,下一跳设置为本端Tunnel接口的IP地址出接口本端Tunnel接口
  • 动态路由:在GRE隧道两端的防火墙上配置动态路由如OSPF,将私网网段和Tunnel接口的地址发布出去,两端防火墙都会学习到去往对端私网网段的路由,下一跳对端Tunnel接口的IP地址出接口本端Tunnel接口

华为防火墙笔记-GRE_第3张图片

配置GRE基本参数

华为防火墙笔记-GRE_第4张图片

1.配置Tunnel接口

在FWA上配置Tunnel接口的封装参数。

[FW_A] interface Tunnel 1

[FW_A-Tunnel1] ip address 10.1.1.1 24

[FW_A-Tunnel1] tunnel-protocol gre

[FW_A-Tunnel1] source 1.1.1.1

[FW_A-Tunnel1] destination 2.2.2.2

在FW-A上将Tunnel接口加入安全区域。Tunnel接口可以加入到任意一个安全区域中,这里我们把Tunnel接口加入到了DMZ区域。

[FW_A] firewall zone dmz

[FW_A-zone-dmz] add interface Tunnel 1

在FWB上配置Tunnel接口的封装参数。

[FW B] interface Tunnel 1

[FW B-Tunnel1] ip address 10.1.1.2 24

[FW B-Tunnel1] tunnel-protocol gre

[FW B-Tunnel1] source 2.2.2.2

[FW B-Tunnel1] destination 1.1.1.1

[FW B] firewall zone dmz

[FW-B-zone-dmz] add interface Tunnel 1

Tunnel接口的IP地址必须配置,如果不配置IP地址,Tunnel接口就无法为UP状态。其次,从GRE的封装过程来看,Tunnel接口的IP地址并没有参与报文封装,所以隧道两端防火墙上Tunnel接口的IP地址没有任何关联,可以各配各的。最后,既然Tunnel接口不参与封装,所以也就没有必要用公网地址了,配置成私网IP地址就可以了

2.配置路由,把需要进行GRE封装的报文引导至Tunnel接口

(1)静态路由

[FW A] ip route-static 192.168.2.0 24 Tunnel 1

[FW B] ip route-static 192.168.1.0 24 Tunnel 1

(2)动态路由

在OSPF中将接口地址的私网和Tunnel接口所在的网段发布出去。

[FWA] ospf 1

[FWA-ospf-1] area 0

[FWA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255

[FWA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255



[FWB] ospf 1

[FWB-ospf-1] area 0

[FWB-ospf-1-area-0.0.0.0] network 192.168.2.0 0.0.0.255

[FWB-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255

有一点需要注意,使用OSPF动态路由方式时,如果GRE隧道对应的公网接口也使用OSPF发布路由,那我们就需要用一个新的OSPF进程来发布私网网段和Tunnel接口所在网段了,以免私网报文直接通过公网接口转发,而不是通过GRE隧道转发

配置GRE安全机制

1.关键字验证

防火墙在为报文封装GRE头时,将GRE头中的Key位的值置1,并在GRE头中插入Key字段。两台防火墙在建立隧道时,通过Key字段的值来验证对端的身份,只有两端设置的Key字段的值完全一致时才能建立隧道

下图展示了GRE头中的信息,其中Key位为1表示启用了关键字验证功能。

华为防火墙笔记-GRE_第5张图片

配置关键字验证的步骤很简单,唯一需要注意的是,隧道两端防火墙上设置的关键字必须相同。

在FWA上设置关键字为12345:

[FW A-Tunnel1]gre key 12345

同时,在FWB上设置关键字为12345:

[FW B-Tunnel1]gre key 12345

2.校验和验证

防火墙在为报文封装GRE头时,将GRE头中的Checksum位的值置1,然后根据报文的信息计算校验和,并将校验和填到Checksum字段中。当隧道对端收到该报文时,也会根据报文信息计算校验和,并与报文中携带的校验和进行比较,如果校验结果一致,则接受此报文;如果不一致,则丢弃此报文。

校验和验证功能是单向的,对端防火墙是否开启不影响本端的校验和验证功能。实际环境中,建议在隧道两端防火墙上同时开启。

华为防火墙笔记-GRE_第6张图片

[FW A-Tunnel1] gre checksum

[FW B-Tunnel1] gre checksum

3. Keepalive

GRE隧道是一种无状态类型的隧道,所谓的无状态类型是指隧道本端并不维护与对端的状态。换句话说假如隧道对端出现故障,那隧道本端是感受不到的。为了解决这个问题,GRE隧道提供了Keepalive保活机制。

在FWA上开启Keepalive功能后,FWA会周期性的向FWB发送探测报文,以检测隧道对端状态。如果FWB可达,则FWA会收到FWB的回应报文,此时FWA会保持隧道的正常状态;如果FWA收不到FWB的回应报文,说明FWB不可达,则FWA会将隧道关闭。这样就避免了因隧道对端不可达而造成的数据黑洞。

华为防火墙笔记-GRE_第7张图片

Keepalive功能是单向的,对端是否开启Keepalive功能不影响本端的Keepalive功能。

实际环境中,建议在隧道两端防火墙上同时开启。

[FWA-Tunnel1] keepalive

[FWB-Tunnel1] keepalive

安全策略配置思路

华为防火墙笔记-GRE_第8张图片

(1)我们先配置一个最宽泛的域间安全策略,以便调测GRE

在FWA上将域间缺省包过滤的动作设置为permit

[FWA]firewall packet-filter default permit all

在FWB上将域间缺省包过滤的动作设置为permit

[FWB]firewall packet-filter default permit all

(2)配置好GRE后,在PC-A上ping PC-B,然后查看会话表,以FW_A为例。

华为防火墙笔记-GRE_第9张图片

(3)分析会话表得到精细化的安全策略的匹配条件。

华为防火墙笔记-GRE_第10张图片

华为防火墙笔记-GRE_第11张图片

华为防火墙笔记-GRE_第12张图片

在GRE场景中,FW-A和FW-B上的Tunnel接口必须加入安全区域,而且Tunnel接口所属的安全区域决定了报文在防火墙内部的走向。如果Tunnel接口属于Trust区域,那就不需要配置DMZ-->Trust的安全策略,但这样会带来安全风险。因此建议将Tunnel接口加入到单独的安全区域,然后配置带有精确匹配条件的安全策略。

(4)最后,将缺省包过滤的动作改为deny。

在FW-A上将域间缺省包过滤的动作设置为deny。

[FWA]firewall acket-filter default deny all

在FW-B上将域间缺省包过滤的动作设置为deny。

[FWB]firewall packet-filter default deny all

你可能感兴趣的:(网络技术,网络协议,华为,tcp/ip)