一.环境说明

此次在测试环境中模拟部署fortigate VM的HA架构,这里选择镜像版本为v7.2.0,因为该版本及之前的版本均使用旧的trial license,有效期15天,之后的版本使用新的license方式,需要有一个fortinet care (forticloud )账号,目前这2个账号的服务已经all in one了,新的方式会有一个永久的trial license,但是一个account只能注册一个试用许可,所以多台设备还是建议使用7.2.0及之前版本,除非你有多个forticloud account。

trial license说明如下:

https://docs.fortinet.com/document/fortigate-private-cloud/7.2.0/kvm-administration-guide/504166/fortigate-vm-evaluation-license

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA


二.部署拓扑图

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_02

拓扑说明:

三. 部署过程

3.1 Active-Active

console方式给FW接口配置一个管理IP后,通过web登录,配置HA(本文中配置双活模式)

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_03

第二台设备以同样的方式进行配置,配置后可以在第二泰设备看到,2台设备在进行同步了(可以通过设备序列号区分)

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_fortigate_04

几分钟后2台设备同步完成后,之前的2台设备各自的web管理IP就不再有效,此时需要通过新的IP登录,本文中前期的接口IP是通过dhcp获取的,所以HA配置完成后也会通过dhcp获取一个新的IP(可以在任意一台的console中查看),然后通过HA IP登录Web页面.

登录后可以看到2台设备的已完成同步状态,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_05

此时2台物理设备已经成为了一台逻辑上的单台设备,接下来对HW 的上游设备进行基本配置,上游的2台交换机为运营商线路接入二层冗余设备,每台设备都接入全部的运营商线路,都接入到下游的防火墙,以vlan来隔离不同运营商,无其它配置。

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_06


飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_07

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_08


此时防火墙同ISP的线路就已经打通,接下来配置防火墙下游设备,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_09

防火墙同下游设备互联采用svi三层方式,通常连接设备为核心或者区域边界设备,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_10

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_11

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_12

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_防火墙_13

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_14

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_fortigate_15

防火墙下联接口配置:

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_16

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_防火墙_17

核心交换机和接入交换机之间同样使用hsrp联通,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_18

测试win10中配置测试IP,测试外网联通正常。

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_19

3.1.1 全链路HA数据走向检测

接入层到网关为vrrp 网关冗余,配置是Core1 hsrp优先级160高于Core2 150,故接入层数据优先发往Core1,这里网关冗余切换track还未配置,所以网关故障切换待后续逐步调整。

防火墙HA采用FGCP模式(详细说明参加官文http://docs.fortinet.com/document/fortigate/7.2.0/administration-guide/62403/fgcp),2台设备优先级都为默认128,该节部署的HA模式AA双主要,这里虽然优先级相同,但是2台设备角色还是有primary和secondary的区别,具体看数据的收发情况,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_20

从核心1上查看10.10.100.1的arp和mac表,关联到了连接FW1的上联口,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_21

从核心2上查看10.10.100.1的arp和mac表,也关联到了FW1的上连口,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_22

这里核心往上的流量是转发给了当前为primary角色的FW1。

再看看从防火墙向上的流量转发路径,这里ISP1接口的IP地址为192.168.207.178 mac 为00:09:0f:09:00:00

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_23

在运营商接入交换机中查看想信息,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_24

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_25

ISP1虚拟IP只在ISP-SW-1中存在。

ISP2 的虚拟接口信息如下,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_26

同样查看相关信息,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_防火墙_27

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_28

同样ISP2的mac表项信息只和FW1互联接口关联。

这里看出FW向外转发的流量同样是从FW1向上分别向2个ISP线路转发。

3.2 Active-Passive

防火墙其它配置不调整,修改HA部分参数,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_fortigate_29

1分钟左右可以看到2台设备状态完成同步,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_30

3.2.1 数据链路查看

防火墙FW1(secondary)和FW2(primary)中的arp表项分别为,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_31


飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_32

核心交换机Core还是主网关,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_33

2台核心arp和mac表项信息,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_34

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_35

上图可以看出核心去往防火墙10.10.100.1的出接口是Core1 连接 FW2(primary)的Eth3口。

ISP接入交换机的相关信息为,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_防火墙_36

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_37

从图中也可以看出2台交换机最终去往ISP1 防火墙地址192.168.207.128,最后是通过ISP-SW-2连接FW2的eth0回包。

四. 防火墙主备切换验证

4.1 防火墙主备切换

在FGCP的HA模式下,HA的failover 主要有如下4种场景,

https://docs.fortinet.com/document/fortigate/7.2.0/administration-guide/489324/failover-protection

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_38

测试机预先长ping外网IP,先通过调整FW优先级来触发,切换过程中只有一个异常数据包,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_防火墙_39

现在FW1为主,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_40

再通过触发设备down验证切换,关闭FW1 后,FW2切换为主,中间丢包3-5。

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_防火墙_41

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_42

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_43

五. 核心上联冗余架构优化

5.1 二层接口配置优化

前文中防火墙下联冗余接口 port 3 和port4 使用防护墙的software switch 来bond, 但是这里有一个问题就是,被software switch bond后的逻辑接口以及物理接口均不能添加为HA monirot 的接口,所以在防火墙下游设备故障后,防火墙无法检测感知,这里将防火墙port 3和port4口修改为 lacp aggregate接口进行捆绑,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_44

2台核心交换机对于互联接口也配置为lacp port-channel 口,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_45

配置完成后,2台核心交换机对于的etherchannel 状态(Core1先配置),

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_fortigate_46

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_飞塔_47

在经过多此配置实验后发现,先配置的交换机会优先和互联的FW之间建立正常的port channel,且这里的接口只能配置为 active mode,passive 和on 均不能正常协商建立,只有在已经建立port-channe的接口或者是所在设备down掉大约1分钟以后,另一台设备的port-channel才会建立正常。

这种互联架构满足了FW下游接口的冗余和探测要求,以及核心故障切换上游冗余。且无论是单个防火墙或者是单个核心交换机故障都能快速自动恢复(最长2mins以内),这里的恢复时间主要是lacp port-channel 切换触发时间。防火墙故障后,核心流量无缝衔接转发上游,核心故障后vrrp会迅速切换,上游流量切换同样几乎无感。

5.2 二层互联架构优化

原本架构是核心和防火墙之间为完全互联"X"架构,现在修改为“#”型架构,防火墙下联接口不做调整,

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_fortigate_48

将互联FW接口绑一个port-channel ,2台核心同时可以和对的协商成功,


飞塔防火墙FortiGate VM环境HA部署(7.2.0)_HA_49

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_fortigate_50

此时的,FW1是主 核心1到10.10.100.1直达,Core2经过Core1到达。

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_架构冗余_51

飞塔防火墙FortiGate VM环境HA部署(7.2.0)_防火墙_52

之后再配置hsrp  track ,联动FW状态实现FW和Core Switch主设备的同步切换,这里核心之前走的是二层流量,非严格情况下其实也没有必要非的上下主设备保持一致。

六. 后续

另外在防火墙上下游中如果有负载均衡设备需要对流经防火墙的流量将进行loadbalance,则可以在FSCP的基础上启用FGSP(会话同步支持),减少防火墙HA切换时对现有流量session的影响。

对于防火墙HA架构中上下游设备的互联互通,除了上述softswitch和lacp aggregate外,同意也可以使用vrrp来实现。根据以往的经验来看,设备的HA中常用的堆叠技术,虽然配置简单,同样也简化了网络拓扑,在实现冗余的情况下也扩展了设备硬件容量,但是确实不太推荐使用堆叠(仅限路由转发角色的设备),堆叠脑裂的问题是该技术致命的缺陷,无法探测无法避免。

具体采用哪种方式取决于实际的网络架构和业务流量sla要求,没有最好的架构只有最合适的架构。