openswan在NAT环境且开启DPD时双方SA生存周期不一样可能存在问题

  • ipsec SA存在第1阶段SAISAKMP SA生存周期和第2阶段IPsec SA生存周期网络

    ISAKMP SA生存周期以两端中配置时间最小为准
    IPsec SA生存周期两端各自以本端配置时间为准code

  • ipsec DPD是一种探测对端是否存活的机制server

    每个IPsec SA对应一个DPD,即每一条隧道对应一个DPD
    若是ISAKMP SA不存,DPD将没法工做,由于DPD发包时需使用ISAKMP SA进行加解密ip

  • ipsec NAT穿越是ipsec两端之间存在NAT设备时对隧道报文进行封装的机制cli

    通常使用4500 UDP端口进行封包配置

若是上面描述同时使用,且ipsec两端生存周期配置不一样,则可能引发问题端口

例如:时间

双端链路之间存在NAT设备
client端ISAKMP SA生存周期配置为3600sIPsec SA生存周期配置为28800s
server端ISAKMP SA生存周期配置为28800sIPsec SA生存周期配置为3600sco

当server端ISAKMP SA到期时,server将删除本身的ISAKMP SA和通知client端删除ISAKMP SA,同时server端进行重协商,但因为client端在NAT内部,且server发出起的第一个协商报文端口为500,因此重协商报文没法到达client端。此时双方ISAKMP SA都不存在,意味着DPD已不工做了,双方IPsec SA还存在,隧道还能互通解密

当server端IPsec SA到期时,server将删除本身的IPsec SA和通知client端删除IPsec SA但正巧这个通知报文在网络中被丢弃,那么client端没有删除IPsec SA,还认为隧道是可用的,同时DPD也不工做了,这就出现了两端状态不一致问题。此时server端隧道状态为断开,而client端隧道状态为链接,但实际上双端之间隧道已不能互通了。DPD又不能工做,只能等client端IPsec SA生存周期到期才能重协商恢复隧道正常

虽然这种状况出现机率至关小,但仍是有可能出现的,因此在配置ISAKMP SA生存周期和IPsec SA生存周期仍是保持两端相同为好

若是两端生存周期相同,那么即便出现了上面的状况,因为两端IPsec SA生存周期同样,当server端到期时,client端基本上也快到期了,因此即便client端没有收到server端删除IPsec SA报文,client端IPsec SA也很快到期再进行重协商,恢复隧道正常

另,通常都把ISAKMP SA生存周期时间设置得比IPsec SA生存周期大

相关文章
相关标签/搜索