Fortigate疑难杂症之 - IPSec传输大文件中断/其他异常中断

故障描述:

两端防火墙IPSec配置完全正确(一边为Fortigate),隧道也能正常建立,但总会因为未知原因断开。说起来这个问题处理起来不复杂,但是原因极难发现,也不会在日志或抓包信息里体现

问题处理:

这是近期在实际生产环境中出现的问题,两端IPSec配置正确,隧道也正常启动,但一段时间后会自动断开,手动来回更改配置,尝试发起连接后隧道又能正常起来

由于是Fortiagte和第三方防火墙建立的IPSec,初步怀疑硬件兼容性问题,尝试更改加密方式,秘钥生存时间等配置后未能解决

后在测试中发现一个现象,在IPSec传输大文件时达到一定数据量一定会断开,经过多方资料查询发现了真相,先见下图:

在这里插入图片描述
Fortiagte的官方Cookbook中这句话揭示了真相,运营商有可能会阻挡或限制UDP500或UDP4500的连接

首先UDP500和4500都是IPSec协商的报文,以下摘抄一段说明:

UDP 500 是ISAKMP互联网安全关联和钥匙管理协议的服务端口
(UDP 500 是Internet Security Association and Key Management Protocol (ISAKMP)端口号)
UDP 4500是UDP-encapsulated ESP and IKE端口号
如果中间设备有nat的话使用到端口UDP4500

简单来讲,在当前的常规场景中,主动模式一般默认会使用UDP500,野蛮模式默认会使用UDP4500

找到问题后,先尝试修改IKE端口,由于Fortigate从7.0版本开始支持手动指定ike-port,当前环境无法进行升级,同时需要两端同时进行修改,所以该方法暂时弃用

最后将IPSec协商由主动模式改为野蛮模式后,IPSec稳定运行,问题解决

处理方法总结

  • 将IPSec两端的防火墙设备的IKE端口更改为非默认端口
  • 将IPSec两端的协商模式由主动模式改为野蛮模式
### FortiGate 设备上的 VXLAN、SD-WAN 和 IPSec 配置 #### 1. 创建 VXLAN 接口 为了创建 VXLAN 接口,在 FortiGate 上需进入网络界面并定义新的虚拟接口。 ```bash config system interface edit "vxlan-tunnel" set vdom root set type vxlan set remote-IP> set local-ip <Local-IP> set interface "port1" # 物理端口名称 next end ``` 此命令序列用于指定本地 IP 地址以及远程 IP 地址来构建 VXLAN 隧道[^1]。 #### 2. 设置 SD-WAN 成员和健康检测 接下来,配置 SD-WAN 并加入成员路径。这一步骤涉及设定优先级和服务质量 (QoS),以确保流量按预期分配给不同链路。 ```bash config router sdwan config members edit 1 set interface "pppoe-interface" set priority 50 set health-check "hc_pppoe" next edit 2 set interface "ipsec_tunnel_interface" set priority 70 set health-check "hc_ipsec" next end end ``` 上述脚本设置了两条不同的路径——PPPoE 连接与 IPSec 隧道,并分别为其指定了健康检查机制[^2]。 #### 3. 定义防火墙策略 对于访问控制列表(ACL),即防火墙规则,则应区分内外网请求: 针对外部互联网流量: ```bash config firewall policy edit 1 set srcintf "any" set dstintf "pppoe-interface" set action accept set schedule "always" set service "ALL" set utm-status enable next end ``` 而对公司内部资源的访问则通过 IPSec 隧道转发: ```bash edit 2 set srcintf "internal-network-interface" set dstintf "ipsec_tunnel_interface" set action accept set schedule "always" set service "ALL" set nat enable next ``` 这些设置允许来自特定源接口的数据包仅能经由指定的目的接口传输出去,从而实现了基于目的地址的选择性路由功能。 #### 4. 启用 NAT 转换 当数据流经过私有网络边界时,通常需要启用 Network Address Translation (NAT) 来隐藏真实的内部 IP 地址结构。 ```bash set ip.Pool "ippool-name" set outbound-dnat disable set inbound-snat enable ``` 以上参数调整可以保证从企业内网发出的数据报文能够顺利穿越公共 Internet,同时也保护了内部系统的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蛋黄酱拌饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值