[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

除了前边我整理的,篇首的两端对应通常问题描述,也值得阅读。

相关文章
相关标签/搜索