问题描述:
Apple设备(MacOS、iOS)在进行IKE/ISAKMP协商时,会无故中断。
在Cisco路由器上进行debug,会显示ISAKMP Phase 1完成,但因为DPD超时而被踢掉。(这个实验结论出自14年前,也就是西历2010年,具体的debug输出已经找不到了。)
在H3C路由器上进行debug,会输出如下信息:
IKE SA state changed from IKE_P1_STATE_SEND4 to IKE_P1_STATE_ESTABLISHED.
...
Received retransmitted packet.
...
Retransmit in response to retransmitted packet.
可以看见,IKE Phase 1完成后,却发生了多次重传,直到Apple设备提示无法连接。
重传的报文都显示【next payload: ID 】。
问题的原因及解决方法:
如果路由器将IKE/ISAKMP的identity设置为非IP地址格式(如FQDN格式),则会导致该问题的发生。
距笔者在2010年首次发现该问题(那是还是iPhone 4),已经过去14年之久。现在的iOS版本已经升级到17.4了,没想到这个问题居然还在……
解决方法是,在路由器的配置中,将路由器本身的identity设置为IP地址格式。