1. 程式人生 > >openswan在NAT環境且開啟DPD時雙方SA生存週期不同可能存在問題

openswan在NAT環境且開啟DPD時雙方SA生存週期不同可能存在問題

  • ipsec SA存在第1階段SAISAKMP SA生存週期和第2階段IPsec SA生存週期

    ISAKMP SA生存週期以兩端中配置時間最小為準
    IPsec SA生存週期兩端各自以本端配置時間為準

  • ipsec DPD是一種探測對端是否存活的機制

    每一個IPsec SA對應一個DPD,即每一條隧道對應一個DPD
    如果ISAKMP SA不存,DPD將無法工作,因為DPD發包時需使用ISAKMP SA進行加解密

  • ipsec NAT穿越是ipsec兩端之間存在NAT裝置時對隧道報文進行封裝的機制

    一般使用4500 UDP埠進行封包

如果上面描述同時使用,且ipsec兩端生存週期配置不同,則可能引起問題

例如:

雙端鏈路之間存在NAT裝置
client端ISAKMP SA生存週期配置為3600sIPsec SA生存週期配置為28800s
server端ISAKMP SA生存週期配置為28800sIPsec SA生存週期配置為3600s

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