1. 应用场景

FortiOS 5.0支持FortiGate Session Life Support Protocol (FGSP),在异步流量负载分担的场景中实现单机配置同步,会话同步。

2. 网络拓扑

3. 设备版本

FortiGateFortiGate-900D v6.0.x

4. 配置步骤

4.1.  设备配置

     配置FGSP

FGT_A

config system ha

    set group-name "fgsp_demo"

    set password fortinet

    set hbdev "port15" 0 //配置同步通过心跳口

    set standalone-config-sync enable //开启配置同步

    set priority 200

end

FGT_B

config system ha

    set group-name "fgsp_demo"

    set password fortinet

    set hbdev "port15" 0 //配置同步通过心跳口

    set standalone-config-sync enable //开启配置同步

    set priority 100

end

注意:FGSP模式如果流量真实走的异步的情况不能使用UTM功能。如果仅仅使用FGSP做HA,但是流量并没有异步而是全部在一台FGT的情况下,可以支持UTM。

     使用dia sys ha status 查看同步状态

FG900D3915800574 # diagnose sys ha status

HA information

Statistics

        traffic.local = s:0 p:0 b:0

        traffic.total = s:0 p:0 b:0

        activity.fdb  = c:0 q:0

 

Model=900, Mode=0 Group=0 Debug=0

nvcluster=1, ses_pickup=0, delay=0

 

[Debug_Zone HA information]

HA group member information: is_manage_master=1.

FG900D3915800574: Master, serialno_prio=1, usr_priority=200, hostname=

FG900D3915800615:  Slave, serialno_prio=0, usr_priority=100, hostname=

[Kernel HA information]

vcluster 1, state=work, master_ip=169.254.0.2, master_id=0:

FG900D3915800574: Master, ha_prio/o_ha_prio=0/0

FG900D3915800615:  Slave, ha_prio/o_ha_prio=1/1

     分别在两台设备上配置接口IP地址,静态路由。

     在主设备上配置防火墙策略,备设备会自动同步。

     在主设备上配置会话交接及同步接口,备设备会自动同步。

config system ha

      set session-pickup enable       //开启会话同步

      set session-pickup-connectionless enable      //允许UDPICMP无状态协议会话同步

set session-pickup-nat enable                      //允许NAT会话同步

      set session-pickup-expectation enable           //允许异步流量会话同步

end

注意:如果开启NAT会话同步,考虑到故障切换,则配置NAT策略的时候应该使用NAT地址池,不应该使用接口IP,因为两台设备接口IP地址不一样。

     配置会话同步

使用二层方式进行会话同步,这种方式在内核中执行,效果高,同步会话更快。同步使用以太网协议0x8892

FGTA

config sys ha

set session-sync-dev "port16" //单独的会话同步接口或者是HA接口,如果写多个端口则进行负载

end

config system cluster-sync

    edit 1

       set peerip 10.0.0.1  // FGT_B port16接口的IP地址

             set peervd root       //配置同步会话的vdom

set down-intfs-before-sess-sync "port9" "port10" //设备重启后,在会话同步之前,将接口down,会话同步完成后,才将接口up

    next

end


FGT_B

config sys ha

set session-sync-dev "port16" //单独的会话同步接口或者是HA接口,如果写多个端口则进行负载

end

config system cluster-sync

    edit 1

       set peerip 10.0.0.2 // FGT_A port16接口的IP地址

             set peervd root              //配置同步会话的vdom

set down-intfs-before-sess-sync "port9" "port10" //设备重启后,在会话同步之前,将接口down,会话同步完成后,才将接口up

    next

end

注意:如果是v5.2的版本,配置会话同步的命令是config system session-sync

 

设备无论是透明模式还是路由模式,FGSP配置方式都同上。会话同步可以支持多组IP地址进行会话同步,config system cluster-sync 下面还可以编辑edit 2、edit3 这样就支持多组IP地址进行会话同步了,提高会话同步的性能。

4.2.  路由模式配置故障切换

FGSP模式中,可以操纵FortiGate上下游设备来达到故障切换的目的。也可以在FortiGate上配置VRRP实现故障切换,如果配置VRRP,那么FortiGate上下游设备指定的路由下一条就是VRRP虚拟地址。

      config system interface

    edit "portX"   //编辑需要开启VRRP的接口

        set vrrp-virtual-mac enable

        config vrrp

            edit 1

                set vrgrp ID //配置VRRPID

                set vrip IPAddr //配置VRRP虚拟地址,与实际地址在同一个网段

                set priority Value //配置VRRP优先级

            next

        end

      end

4.3.  透明模式或者透明接口对故障切换

透明模式切换时,依靠的是上下游的设备的路由功能进行的切换。但是当其中一台设备FGTA重启时,FGTA设备在启动到press any key…阶段时,其接口会UP/DOWN,如下图(探测的对端是900D

这样当接口UP,路由就会切换,将数据包转发到未启动完成的设备,从而导致丢包及TCP业务中断等。

因此需要在上下游的设备进行路由探测,如BFD或者OSPF等动态路由,从而避免此问题。

5. 状态检查

使用diagnose sys ha checksum show 比较配置同步详情,如果校验和一致表示配置完全同步。

FG900D3915800574 # diagnose sys ha checksum show

is_manage_master()=1, is_root_master()=1

debugzone

global: e1 a0 01 e9 e0 20 46 4b 8e 3f e5 ce b1 ab ca 27

root: 09 1e 9f 82 8c 94 0f 44 9b 2c 36 fb b1 b9 ef d3

all: ff d0 d2 bf 83 45 ba 79 16 db c3 c0 2a 96 48 22

 

checksum

global: e1 a0 01 e9 e0 20 46 4b 8e 3f e5 ce b1 ab ca 27

root: 09 1e 9f 82 8c 94 0f 44 9b 2c 36 fb b1 b9 ef d3

all: ff d0 d2 bf 83 45 ba 79 16 db c3 c0 2a 96 48 22

 

FG900D3915800615 # diagnose sys ha checksum show

is_manage_master()=0, is_root_master()=1

debugzone

global: e1 a0 01 e9 e0 20 46 4b 8e 3f e5 ce b1 ab ca 27

root: 09 1e 9f 82 8c 94 0f 44 9b 2c 36 fb b1 b9 ef d3

all: ff d0 d2 bf 83 45 ba 79 16 db c3 c0 2a 96 48 22

 

checksum

global: e1 a0 01 e9 e0 20 46 4b 8e 3f e5 ce b1 ab ca 27

root: 09 1e 9f 82 8c 94 0f 44 9b 2c 36 fb b1 b9 ef d3

all: ff d0 d2 bf 83 45 ba 79 16 db c3 c0 2a 96 48 22

 

使用diagnose sys session sync查看同步状态

sync_started=1表示能够进行会话同步,如果为0表示不能够进行会话同步。

sync_tcp=1, sync_others=1, sync_expectation=1, and sync_nat=1表示FGSP已经能够同步TCP, connectionless, asymmetric, and NAT会话。

sync: create=135:0recv: create=2662:0表示FortiGate同步135条会话给对端,同时收到对端通过过来的会话2662条。

FG900D3915800615 # diagnose sys session sync

sync_ctx: sync_started=1, sync_tcp=1, sync_others=1,

sync_expectation=1, sync_redir=0,sync_nat=1, stdalone_sesync=1.

sync: create=135:0, update=2991, delete=0:0, query=578

recv: create=2662:0, update=3315, delete=0:0, query=536

ses pkts: send=10079, alloc_fail=0, recv=12802, recv_err=0 sz_err=0

udp pkts: send=0, recv=0

nCfg_sess_sync_num=5, mtu=1500

sync_filter:

        1: vd=-1, szone=0, dzone=0, saddr=0.0.0.0:0.0.0.0, daddr=0.0.0.0:0.0.0.0, sport=0-65535, dport=0:65535

 

使用diagnose sys session list查看会话信息,如果会话中带有synced表示是这台FortiGate创建了这条会话并同步给对端。

FG900D3915800574 # diagnose sys session list

session info: proto=6 proto_state=01 duration=19 expire=3580 timeout=3600 flags=00000000 sockflag=00000000 sockport=0 av_idx=0 use=3

origin-shaper=

reply-shaper=

per_ip_shaper=

ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255

state=may_dirty ndr npu synced

statistic(bytes/packets/allow_err): org=92/2/1 reply=0/0/0 tuples=2

tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0

orgin->sink: org pre->post, reply pre->post dev=37->36/36->37 gwy=200.0.3.1/0.0.0.0

hook=pre dir=org act=noop 172.16.50.3:61319->192.168.90.98:23(0.0.0.0:0)

hook=post dir=reply act=noop 192.168.90.98:23->172.16.50.3:61319(0.0.0.0:0)

pos/(before,after) 0/(0,0), 0/(0,0)

misc=0 policy_id=1 auth_info=0 chk_client_info=0 vd=0

serial=000eeb2d tos=ff/ff app_list=0 app=0 url_cat=0

dd_type=0 dd_mode=0

npu_state=0x003494 ips_offload

npu info: flag=0x81/0x00, offload=8/0, ips_offload=1/0, epid=8/0, ipid=160/0, vlan=0x0000/0x0000

vlifid=160/0, vtag_in=0x0000/0x0000 in_npu=2/0, out_npu=2/0, fwd_en=0/0, qid=3/0

no_ofld_reason:

total session 1

6. 注意事项

     形成FGSP的设备需要相同的型号和版本。

     FGSP模式下,FortiGate是独立的设备,异步流量发送日志的时候,同一条会话,两台设备都会发送日志;同步流量发送日志的时候,只有主设备发送日志。

     FortiGate的接口名,包括VLAN接口,聚合接口等必须一致。

     考虑到FGSP故障切换的场景,任一一台设备必须能够处理两台设备的总共的负载。

   FGSP流量异步的情况下不能使用UTM功能

     FGSP对异步流量,是否需要开启asymroute 模式根据现场需求。


img_4015.jpg 2019-02-14_164911.png 2019-02-14_164959.png 2019-02-14_165444.png 2019-02-14_165653.png 2019-02-14_170229.png 2019-02-14_170555.png 2019-02-14_170813.png