客户在总部使用一台UR路由器作为IPsecVPN总部节点,其余各地多台UR路由器作为分支节点,利用公网建立IPsec总部-分支结构。在正常使用过程中,经常出现1-2例分支突然断开IPsec隧道,并且无法自行重协商构建IPsec的故障。
手动触发分支节点IPsec协商,并在总部、分支两台UR的WAN口同时进行抓包。
可见IPsec第一阶段协商已完成,分支 UR已从本机 WAN 口发出 NAT-T/UDP 4500 的一阶段收尾和 Quick Mode 报文,但没有收到任何 UDP 4500 的有效响应;
总部UR由于没有收到分支发送的NAT-T/UDP 4500协商报文,仍选择反复重传UDP 500 的 Aggressive 响应。最终导致两端协商不一致,IPsec建立失败。
IPsec协商第二阶段如果分支发现中间链路存在NAT(分支节点如果没用公网地址,则一定会经过NAT),协议会自动切换成UDP 4500(NAT-T、NAT穿越)模式进行二阶段协商,此时如果中间链路设备拦截NAT-T或者不支持NAT穿越,会出现分支发送的NAT-T/UDP 4500协商报文无法抵达总部,且总部依然使用IPsec缺省的UDP500(不使用NAT-T)协商重传,最终造成无法建立IPSec的问题。
本质造成此问题的原因,可以简单理解为分支发送了请求,但总部没有收到,最终造成建立失败。属于中间设备拦截,而非UR直接故障。
解决此问题需要上级链路设备开启NAT-T支持,关闭对IPsec UDP 4500端口的拦截。