Resume IPS scanning of ICCP traffic after HA failover
After HA failover occurs, the IPS engine will resume processing ICCP sessions and keep the traffic going on the new primary unit. session-pickup
must be enabled in an active-passive cluster to pick up the ICCP sessions.
Example
The following example uses an active-passive cluster. See HA active-passive cluster setup for more information.
To configure HA:
config system ha set group-name "HA-APP" set mode a-p set password ************ set hbdev "port3" 100 set session-pickup enable set override enable end
Session states before failover
When HA is working, the ICCP session information is stored in the HA session cache on the secondary FortiGate.
To verify the HA session cache on the secondary FortiGate:
# diagnose ips share list HA Session Cache client=10.1.100.178:57218 server=172.16.200.177:102 service=39, ignore_app_after=0, last_app=76919, buffer_len=32 stock tags: nr=981, hash=e68dc8120970448 custom tags: nr=0, hash=1a49b996b6a42aa2 tags [count=2]: s-737, s-828,
The ICCP session information can be found in the IPS session list and the session table on the primary FortiGate.
To verify the IPS session information on the primary FortiGate:
# diagnose ips session list SESSION id:1 serial:35487 proto:6 group:6 age:134 idle:1 flag:0x800012a6 feature:0x4 encap:0 ignore:0,0 ignore_after:204800,0 tunnel:0 children:0 flag:..s.-....-.... C-10.1.100.178:57218, S-172.16.200.177:102 state: C-ESTABLISHED/13749/0/0/0/0, S-ESTABLISHED/48951/0/0/0/0 pause:0, paws:0 expire: 3599 app: unknown:0 last:44684 unknown-size:0 cnfm: cotp set: cotp asm: cotp
To verify the system information on the primary FortiGate:
# diagnose sys session list session info: proto=6 proto_state=11 duration=209 expire=3585 timeout=3600 flags=00000000 socktype=0 sockport=0 av_idx=0 use=5 origin-shaper= reply-shaper= per_ip_shaper= class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255 state=log may_dirty ndr npu syn_ses app_valid statistic(bytes/packets/allow_err): org=11980/104/1 reply=57028/164/1 tuples=3 tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0 orgin->sink: org pre->post, reply pre->post dev=10->9/9->10 gwy=172.16.200.177/10.1.100.178 hook=post dir=org act=snat 10.1.100.178:57218->172.16.200.177:102(172.16.200.4:57218) hook=pre dir=reply act=dnat 172.16.200.177:102->172.16.200.4:57218(10.1.100.178:57218) hook=post dir=reply act=noop 172.16.200.177:102->10.1.100.178:57218(0.0.0.0:0) pos/(before,after) 0/(0,0), 0/(0,0) misc=0 policy_id=2 auth_info=0 chk_client_info=0 vd=1 serial=00008a9f tos=ff/ff app_list=2003 app=44684 url_cat=0 sdwan_mbr_seq=0 sdwan_service_id=0 rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a npu_state=0x003c94 ips_offload npu info: flag=0x81/0x81, offload=8/8, ips_offload=1/1, epid=71/71, ipid=134/132, vlan=0x0000/0x0000 vlifid=134/132, vtag_in=0x0000/0x0000 in_npu=1/1, out_npu=1/1, fwd_en=0/0, qid=10/10
Sample log on current primary FortiGate:
# execute log display 304 logs found. 10 logs returned. 28.8% of logs has been searched. 1: date=2021-06-04 time=16:54:40 eventtime=1622850881110547135 tz="-0700" logid="1059028704" type="utm" subtype="app-ctrl" eventtype="signature" level="information" vd="vd1" appid=44684 srcip=10.1.100.178 dstip=172.16.200.177 srcport=57218 dstport=102 srcintf="port2" srcintfrole="undefined" dstintf="port1" dstintfrole="undefined" proto=6 service="tcp/102" direction="incoming" policyid=2 sessionid=35487 applist="test" action="pass" appcat="Industrial" app="ICCP_Transfer.Reporting" incidentserialno=61868187 msg="Industrial: ICCP_Transfer.Reporting," apprisk="elevated"
Session states after failover
After HA failover, the IPS engine on the new primary picks up the related ICCP sessions and continues passing the traffic. The HA session cache disappears on the new primary. The ICCP session now appears on the IPS session list and session table on the new primary.
To verify the IPS session information on the new primary FortiGate:
# diagnose ips session list SESSION id:1 serial:35487 proto:6 group:6 age:90 idle:2 flag:0x820012a3 feature:0x4 encap:0 ignore:1,0 ignore_after:204800,0 tunnel:0 children:0 flag:....-....-..i. C-10.1.100.178:57218, S-172.16.200.177:102 state: C-ESTABLISHED/9114/0/0/0/0, S-ESTABLISHED/0/0/0/0/0 pause:0, paws:0 expire: 28 app: unknown:0 last:44684 unknown-size:0
The server and client IPs, ports, and protocols remain the same.
To verify the system information on the primary FortiGate:
# diagnose sys session list session info: proto=6 proto_state=11 duration=569 expire=3577 timeout=3600 flags=00000000 socktype=0 sockport=0 av_idx=0 use=5 origin-shaper= reply-shaper= per_ip_shaper= class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255 state=log may_dirty ndr npu syn_ses app_valid statistic(bytes/packets/allow_err): org=38629/308/1 reply=160484/483/1 tuples=3 tx speed(Bps/kbps): 158/1 rx speed(Bps/kbps): 1139/9 orgin->sink: org pre->post, reply pre->post dev=10->9/9->10 gwy=172.16.200.177/10.1.100.178 hook=post dir=org act=snat 10.1.100.178:57218->172.16.200.177:102(172.16.200.4:57218) hook=pre dir=reply act=dnat 172.16.200.177:102->172.16.200.4:57218(10.1.100.178:57218) hook=post dir=reply act=noop 172.16.200.177:102->10.1.100.178:57218(0.0.0.0:0) pos/(before,after) 0/(0,0), 0/(0,0) misc=0 policy_id=2 auth_info=0 chk_client_info=0 vd=1 serial=00008a9f tos=ff/ff app_list=2003 app=44684 url_cat=0 sdwan_mbr_seq=0 sdwan_service_id=0 rpdb_link_id=00000000 rpdb_svc_id=0 ngfwid=n/a npu_state=0x003c94 ips_offload npu info: flag=0x81/0x81, offload=8/8, ips_offload=1/1, epid=71/71, ipid=134/132, vlan=0x0000/0x0000 vlifid=134/132, vtag_in=0x0000/0x0000 in_npu=1/1, out_npu=1/1, fwd_en=0/0, qid=10/10
The server and client IPs, ports, and NPU state remain the same.
Sample log on new primary FortiGate:
# execute log display 653 logs found. 10 logs returned. 65.8% of logs has been searched. 1: date=2021-06-04 time=17:05:20 eventtime=1622851521364635480 tz="-0700" logid="1059028704" type="utm" subtype="app-ctrl" eventtype="signature" level="information" vd="vd1" appid=44684 srcip=10.1.100.178 dstip=172.16.200.177 srcport=57218 dstport=102 srcintf="port2" srcintfrole="undefined" dstintf="port1" dstintfrole="undefined" proto=6 service="tcp/102" direction="incoming" policyid=2 sessionid=35487 applist="test" action="pass" appcat="Industrial" app="ICCP_Transfer.Reporting" incidentserialno=198181218 msg="Industrial: ICCP_Transfer.Reporting," apprisk="elevated"