You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fortigate IPSEC隧道建立异常:Debug Flow结果解析求助

IPsec隧道建立问题:Fortigate debug flow结果解析

我正尝试在A、B两个站点间建立IPSEC隧道,A位于NAT之后作为发起端,B为响应端,两端均通过配置向导完成隧道配置。观察到A向B发送500/udp端口的数据包,但B无响应,于是在B上执行debug flow操作,输出结果如下:

1   2023/09/04 13:04:51 vd-root:0 received a packet(proto=17, A-IP-ADDRESS:46575->B-IP-ADDRESS:500) tun_id=0.0.0.0 from wan2.
2   2023/09/04 13:04:51 allocate a new session-24b1a8ef, tun_id=0.0.0.0
3   2023/09/04 13:04:51 in-[wan2], out-[]
4   2023/09/04 13:04:51 len=0
5   2023/09/04 13:04:51 result: skb_flags-02000000, vid-0, ret-no-match, act-accept, flag-00000000
6   2023/09/04 13:04:51 find a route: flag=84000000 gw-B-IP-ADDRESS via root
7   2023/09/04 13:04:51 in-[wan2], out-[], skb_flags-02000000, vid-0
8   2023/09/04 13:04:51 gnum-100017, check-ffffffbffc02b5d4
9   2023/09/04 13:04:51 after check: ret-no-match, act-accept, flag-00000000, flag2-00000000
10  2023/09/04 13:04:51 in-[wan2], out-[], skb_flags-02000000, vid-0
11  2023/09/04 13:04:51 gnum-100011, check-ffffffbffc02c540
12  2023/09/04 13:04:51 after check: ret-no-match, act-drop, flag-00000000, flag2-00000000
13  2023/09/04 13:04:51 gnum-100001, check-ffffffbffc02b5d4
14  2023/09/04 13:04:51 checked gnum-100001 policy-1, ret-no-match, act-accept
15  2023/09/04 13:04:51 checked gnum-100001 policy-2, ret-no-match, act-accept
16  2023/09/04 13:04:51 checked gnum-100001 policy-3, ret-no-match, act-accept
17  2023/09/04 13:04:51 checked gnum-100001 policy-4, ret-matched, act-accept
18  2023/09/04 13:04:51 ret-matched
19  2023/09/04 13:04:51 policy-4 is matched, act-drop
20  2023/09/04 13:04:51 gnum-100001 check result: ret-matched, act-drop, flag-08010001, flag2-00000000
21  2023/09/04 13:04:51 after check: ret-matched, act-drop, flag-08010001, flag2-00000000
22  2023/09/04 13:04:51 iprope_in_check() check failed on policy 4, drop

我能理解第14至18行的内容——Fortigate为该流量匹配了policy-4。第17行显示ret-matched且act-accept,按道理流量应被放行,但第19行却显示policy-4已匹配,但执行动作是丢弃。

这是怎么回事?我是否误解了输出结果?我期望IPSEC流量能匹配到正确的策略。


问题解析与解决建议

这是Fortigate debug flow输出的典型细节:第17行的act-accept是单条策略规则检查时的临时动作,最终执行的动作会结合IPsec模块的附加检查结果,并非最终动作。

从输出第22行的iprope_in_check() check failed on policy 4可以明确,问题出在IPsec预检查环节,而非策略规则本身:

  • 检查policy-4的配置方向:确认它是针对「A发起→B响应」的IPsec策略,还是「B发起→A响应」的反向策略。如果是后者,虽然源目IP匹配,但IPsec会话的发起方不匹配,会触发丢弃。
  • 验证策略的实际动作与附加配置:即使debug显示act-accept,若策略配置了隐藏的丢弃逻辑(比如IPsec策略的auto-negotiate选项不匹配,或者关联的VPN模板配置错误),也会导致预检查失败。
  • 开启NAT穿越功能:由于A位于NAT之后,B端必须开启IPsec网关的NAT traversal选项,否则无法正确识别来自A的NAT后IPsec初始化包。
  • 核对对等体配置:确认B端IPsec网关的对等体地址是A的NAT后公网IP,而非A的内网IP。

简言之,第17行的act-accept只是策略规则的匹配动作,而iprope_in_check是IPsec模块的专属检查,失败后会覆盖之前的动作,最终执行丢弃。


内容的提问来源于stack exchange,提问作者tjlds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:17:02