① 配置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 //允许UDP,ICMP无状态协议会话同步
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地址进行会话同步了,提高会话同步的性能。
在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 //配置VRRP组ID
set vrip IPAddr //配置VRRP虚拟地址,与实际地址在同一个网段
set priority Value //配置VRRP优先级
next
end
end
透明模式切换时,依靠的是上下游的设备的路由功能进行的切换。但是当其中一台设备FGTA重启时,FGTA设备在启动到press any key…阶段时,其接口会UP/DOWN,如下图(探测的对端是900D)
这样当接口UP,路由就会切换,将数据包转发到未启动完成的设备,从而导致丢包及TCP业务中断等。
因此需要在上下游的设备进行路由探测,如BFD或者OSPF等动态路由,从而避免此问题。
使用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:0,recv:
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
① 形成FGSP的设备需要相同的型号和版本。
② 在FGSP模式下,FortiGate是独立的设备,异步流量发送日志的时候,同一条会话,两台设备都会发送日志;同步流量发送日志的时候,只有主设备发送日志。
③ FortiGate的接口名,包括VLAN接口,聚合接口等必须一致。
④ 考虑到FGSP故障切换的场景,任一一台设备必须能够处理两台设备的总共的负载。
⑤ FGSP流量异步的情况下不能使用UTM功能
⑥ FGSP对异步流量,是否需要开启asymroute 模式根据现场需求。