Cómo solucionar la caída de tráfico por el error ‘Anti-Replay Check Fails, Drop’ al cambiar la configuración de la política del Firewall en Fortinet

Este artículo aborda un problema que ocurre en algunos modelos de FortiGate, donde el dispositivo elimina tráfico con el error ‘Anti-Replay Check Fails, Drop’ al modificar una política de firewall. Este problema puede afectar la conectividad y el rendimiento de las redes, por lo que es crucial entender su diagnóstico y solución. A continuación, se presentan detalles sobre el problema, su ámbito, y cómo resolverlo de manera efectiva.

Descripción del problema

Este artículo describe un problema donde el FortiGate elimina tráfico con el error ‘Anti-Replay Check Fails, Drop’ cuando se modifica una política de firewall. Este problema (con ID de problema 1015616) afecta específicamente a modelos de FortiGate basados en NP7/NP7lite, como el FortiGate-3501F y el FortiGate-90G.

Alcance

La situación afecta las versiones de FortiGate v7.0.15, v7.2.9, v7.2.10, v7.4.3 y v7.4.4.

Diagnóstico paso a paso

Cuando se modifica una política de firewall, todas las sesiones existentes son eliminadas por el FortiGate con el error mencionado anteriormente en la salida de depuración, y tales sesiones son marcadas como ‘sucias’. A continuación, se detallan los registros de la depuración en escenarios que funcionan y no funcionan.

Depuraciones de escenario que funcionan:

id=65308 trace_id=1629 func=print_pkt_detail line=5862 msg="vd-root:0 received a packet(proto=6, 172.16.192.130:1521->172.16.192.69:51286) tun_id=0.0.0.0 from 630_database. flag [.], seq 383407350, ack 579585442, win 505"
id=65308 trace_id=1629 func=resolve_ip_tuple_fast line=5950 msg="Find an existing session, id-23735c01, reply direction"
id=65308 trace_id=1629 func=npu_handle_session44 line=1333 msg="Trying to offloading session from 630_database to 601-psoft-app, skb.npu_flag=00000400 ses.state=00010204 ses.npu_state=0x00000400"
id=65308 trace_id=1629 func=ip_session_install_npu_session line=381 msg="npu session installation succeeded"
id=65308 trace_id=1629 func=fw_forward_dirty_handler line=439 msg="state=00010204, state2=00000001, npu_state=00000c00"

Lista de sesiones de escenario que funcionan:

session info: proto=6 proto_state=01 duration=17 expire=3596 timeout=3600 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
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 npu f00 log-start
statistic(bytes/packets/allow_err): org=28111/81/1 reply=58770/94/1 tuples=2
tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0
orgin->sink: org pre->post, reply pre->post dev=74->75/75->74 gwy=0.0.0.0/0.0.0.0
hook=pre dir=org act=noop 172.16.192.69:51286->172.16.192.130:1521(0.0.0.0:0)
hook=post dir=reply act=noop 172.16.192.130:1521->172.16.192.69:51286(0.0.0.0:0)
dst_mac=56:6c:42:5a:00:03
npu_state=0x000c00
npu info: flag=0x81/0x81, offload=9/9, ips_offload=0/0, epid=179/179, ipid=179/179, vlan=0x0259/0x0276

Depuraciones de escenario que no funcionan:

id=65308 trace_id=1895 func=print_pkt_detail line=5862 msg="vd-root:0 received a packet(proto=6, 172.16.192.69:51286->172.16.192.130:1521) tun_id=0.0.0.0 from 601-psoft-app. flag [.], seq 580634445, ack 385974823, win 6146"
id=65308 trace_id=1895 func=resolve_ip_tuple_fast line=5950 msg="Find an existing session, id-23735c01, original direction"
id=65308 trace_id=1895 func=tcp_anti_reply line=1042 msg="replay packet(seq_check), suspicious"
id=65308 trace_id=1895 func=ip_session_core_in line=6601 msg="anti-replay check fails, drop"

Lista de sesiones de escenario que no funcionan:

session info: proto=6 proto_state=01 duration=124 expire=3589 timeout=3600 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
state=log dirty may_dirty npu f00 log-start
statistic(bytes/packets/allow_err): org=1325445/5302/1 reply=2877945/5967/1 tuples=2
tx speed(Bps/kbps): 12773/102 rx speed(Bps/kbps): 29198/233
no_ofld_reason:

Solución recomendada

El problema #1015616 ha sido resuelto en las siguientes versiones de FortiOS:

Artículos relacionados  Sugerencia para la resolución de problemas: el clúster de problemas de sincronización de alta disponibilidad no está sincronizado

Solución alternativa:

  • Deshabilitar la función anti-replay a nivel global o en la política de firewall.

Deshabilitar la opción anti-replay a nivel global:

config system global
    set anti-replay disable
end

Deshabilitar la opción anti-replay en la política de firewall:

config firewall policy
    edit <id>
        set anti-replay disable
    next
end

Notas adicionales

Cuando la opción global anti-replay está deshabilitada, el FortiGate no verifica las banderas TCP en los paquetes.

Registros requeridos por TAC de FortiGate para una mayor investigación:

  1. Depuraciones:
diagnose sys session list
diagnose debug flow filter addr <IP>
diagnose debug console timestamp enable
diagnose debug flow show function-name enable
diagnose debug flow show iprope enable
diagnose debug flow trace start 1000000000
diagnose debug enable
<reproduce el problema modificando la política de firewall>
diagnose debug reset
diagnose sys session list
  1. Informe TAC:
execute tac report
  1. Archivo de configuración del FortiGate.

¿Te ha resultado útil??

0 / 0

Deja una respuesta 0

Your email address will not be published. Required fields are marked *