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生存週期大

相關文章
相關標籤/搜索