[dev][ipsec][distributed] strongswan如何作熱遷移/高可用/High Availability

 

問題描述:

原生的基於kernel 的 strongswan 如何作高可用,HA,High Availabilitylinux

 

問題分析:

基於咱們已知的,ipsec,strongswan的知識。問題分解以下:spa

1.  IKE SA的同步,CHILD SA的同步。code

2.  ESP包是有序列號的,序列號的同步問題。blog

3.  隧道不能斷,業務也不能斷。因此還有一個隧道IP的同步問題。ip

 

解決方案:

strongswan是這樣解決的。get

1. 問題1)與strongswan軟件進行解決,能夠經過配置,配置一個高可用的組,組內彼此會進行IKE SA和CHILD SA的同步。同步

    首先啓用HA Plugin。 而後,作一個大概這樣的配置,以下:hash

 ha { # ... pools { sales = 10.0.1.0/24 finance = 10.0.2.0/24 } }

 

2. 問題2)和問題3)由linux iptables的 cluster IP功能解決。it

    cluster IP的作法是,在高可用組內,對交換機進行ARP欺騙,讓交換機將tunnel IP的包組播給高可用組內的全部機器。table

    每個機器會使用源IP算一個hash,命中本身的包會留下,其餘包會丟棄。這樣就把全部的鏈接均分到了不一樣的節點上面。

 

    ipsec使用一個定製過的cluster IP module。它與原版cluster IP的區別是:

        1,使用源IP加SPI作hash。

        2.  不命中hash的包,在被丟棄前,會被用來維護standby child SA的ESP sequence number。 這樣seq是實時同步,用來解決問題2)

 

   節點之間經過HA plugin交互各類消息,包括heartbeat等。從而完成,同步,主備,failover等。

 

參考資料:

https://wiki.strongswan.org/projects/strongswan/wiki/HighAvailability

除了前邊我整理的,篇首的兩端對應通常問題描述,也值得閱讀。

相關文章
相關標籤/搜索