IKE 版本选择
IKE 版本选择
IKEv1 和 IKEv2 都可以建立用于保护 IPSec 协商的 IKE SA。新建 IPSec VPN 时,除非对端只支持 IKEv1,否则优先选择协商流程更简洁的 IKEv2,其他不支持 IKEv2 的 VPN 类型使用 IKEv1。
版本差异
IKEv2 最初由 RFC 4306 定义,当前规范为 RFC 7296。选择 IKEv2 时需要注意以下差异:
- 一阶段不再区分主模式(Main Mode)和野蛮模式(Aggressive Mode)。
- 不支持扩展认证(XAUTH)。
- 可以使用 EAP 认证。
重要
- FortiClient 从 7.4.4 开始不再支持 IKEv1。部署 FortiClient 7.4.4 及之后版本时,应选择 IKEv2。
- FortiClient 7.4.4 不支持 IPv6。需要使用 IPv6 时,应使用 FortiClient 7.4.6 或之后版本。
配置 IKE 版本
在 route-based VPN 的一阶段配置中通过
ike-version选择 IKE 版本。config vpn ipsec phase1-interface edit "to-branch" set ike-version [1 | 2] next end确认两端配置的 IKE 版本一致。IKEv1 与 IKEv2 不能直接协商,版本不一致时无法建立 IKE SA。
IKEv2 重复认证
IKEv2 可以控制本端是否要求对端重新认证,或只执行重新密钥协商(re-key)即可。该设置只决定本端对对端的要求,不控制本端自身是重新认证还是重新协商密钥。本端的行为由对端决定,默认执行 re-key。
RFC 4478 定义重复认证机制,用于限制攻击者控制 IPSec 对等体后可以继续使用现有 SA 的时间。
在一阶段配置中启用或禁用 IKE SA 重复认证:
config vpn ipsec phase1-interface
edit "ipsec"
set reauth [enable | disable]
next
endIKEv2 快速故障检测
IKEv2 快速故障检测(Quick Crash Detection,QCD)遵循 RFC 6290。当对端网关重启、崩溃或丢失 IKE 状态后,QCD 可以让另一端更快发现原有会话已经失效。
网关收到包含未知 IKE SPI 或 IPSec SPI 的 IKE、ESP 报文时,可以向对端发送包含 INVALID_IKE_SPI 或 INVALID_SPI 通知载荷的未保护 IKE 报文。QCD Token 根据 IKE SPI 和本地 QCD Secret 生成,并在受保护的 IKE_AUTH 交换中发送给对端。
通过全局配置启用或禁用 QCD:
config system settings
set ike-quick-crash-detect [enable | disable]
endIKEv1 快速故障检测
IKEv1 QCD 基于 IKEv2 QCD 机制实现,并通过 Fortinet Quick Crash Detection Vendor ID 通告能力,因此两端都必须是 FortiGate。
QCD Token 必须在加密的一阶段交换中发送。IKEv1 仅主模式支持 QCD;野蛮模式没有可用于携带 QCD Token 的加密认证报文,因此不支持 QCD。除这些限制外,IKEv1 QCD 的工作方式与 IKEv2 QCD 相同。
IKEv1 分片
较大的证书可能使 IKE UDP 报文超过路径 MTU。如果 ISP 或中间防火墙不能正确转发分片报文,IPSec 隧道可能无法建立。启用 IKE 分片后,FortiOS 仅在以下条件全部满足时对 IKEv1 报文进行分片:
- 一阶段配置了
set fragmentation enable。 - 报文超过最小 MTU,IPv4 为 576 Bytes,IPv6 为 1280 Bytes。
- 报文处于重传状态。
IKE 分片默认启用,可以在一阶段中修改:
config vpn ipsec phase1-interface
edit "to-branch"
set fragmentation [enable | disable]
next
endIKEv2 分片
RFC 7383 要求每个 IKEv2 分片分别进行加密和认证。双方协商支持 IKEv2 分片后,当 IKE Payload 超过 fragmentation-mtu 配置的阈值时,FortiOS 会预先对报文进行分片并分别加密。
config vpn ipsec phase1-interface
edit "to-branch"
set ike-version 2
set fragmentation [enable | disable]
set fragmentation-mtu [500-16000]
next
end相关信息
IKEv1 与 IKEv2 的分片条件、协商方式和抓包验证方法,请参考 VPN → IPSec VPN → IKE 分片章节。
全局 IKE 半开协商限制
大量隧道同时发起协商时,持续出现的新协商可能导致其他 IKEv2 SA 无法及时进入已建立状态。embryonic-limit 用于限制同时协商的 IPSec 隧道数量,取值范围为 50-20000,默认值为 1000。
配置全局 IKE 半开协商限制:
config system ike
set embryonic-limit <50-20000>
end例如,将同时协商的隧道数量限制为 50:
config system ike
set embryonic-limit 50
end