strongswan--ipsec.conf配置文件分析
ipsec.conf是stroke插件使用的配置文件,可以配置ike proposal、ike peer、ipsec proposal等属性。现对其中部分属性进行翻译/分析。
对conn的分析,来源:https://wiki.strongswan.org/projects/strongswan/wiki/ConnSection
(1)ike的生存时间(经过该时间后,ike sa会进行重协商)
ikelifetime = 3h | <time>
(2)特定连接(conn)的持续时间(从成功协商到超时),可以认为是ipsec sa对用户报文加密/认证的密钥存活时间
lifetime = 1h | <time>
注:通常在超时之前的margintime时,已经通过加密通道进行重协商了
(3)dpdaction = none | clear | hold | restart
(4) 定义两种消息发送的周期时间间隔,包括R_U_THERE消息/ INFORMATIONAL交换消息。仅在未收到其他流量时才会发送。在IKEv2中,0表示不发送任何其他INFORMATIONAL消息,仅使用标准消息(例如rekey消息)来检测失效对等体。
dpddelay = 30s | <time>
(5)定义超时间隔,超时后删除到对等体的所有不活跃连接。仅适用于IKEv1,在IKEv2中应用默认重传超时,因为每个交换用于检测失效对等体。
dpdtimeout = 150s | <time>
IKE SA到期之前有三种替换方式:
rekeying
ikev1不支持rekeying(只支持reauthentication)。IKEv2通过使用CREATE_CHILD_SA交互提供对IKE SA的正确内联重新加密,可以建立新密钥而不会中断现有的IKE和IPsec SA。
swanctl.conf/vici的IKEv2配置默认使用rekeying方式
reauthentication
这种更新IKE密钥的方法从头开始创建一个完整的IKE SA,其中包括完整的IKE_SA_INIT和IKE_AUTH交换以及所有相关IPsec SA的重新创建。
ipsec.conf默认使用reauthentication
重新认证IKE通过两种方式完成
1)Break-before-make
这是重新验证IKEv2 SA时IKE守护程序的默认行为。这意味着在重新创建它们之前,所有IKE和IPsec SA都会被拆除。这将导致一些中断,在此期间不安装任何IPsec SA。如果使用陷阱策略,它还可能触发不必要的获取,从而在该停机时间内重复IPsec SA。为了防止明文流量离开主机,可以使用适当的防火墙规则或丢弃策略。
2)Make-before-break
此方法首先创建现有IKE和IPsec SA的副本,然后删除旧的。这避免了中断,但要求两个对等体都可以处理重叠的SA(例如,关于虚拟IP,重复策略或更新脚本)。strongswan 5.3.0之后的版本在IKEv2中支持,但默认情况下处于禁用状态,可以通过设置strongswan.conf配置文件中的属性charon.make_before_break启用。
IKEv1 SA也使用先接后断方案重新加密/重新认证,但只有IKE SA受到影响。 IPsec SA由新的IKE SA采用,不会重新创建。
IKEv2 Responder Behavior
配置了重新认证的响应者将使用RFC 4478定义的AUTH_LIFETIME通知来要求客户端在特定时间之前重新进行身份验证。如果响应者本身无法启动重新认证(例如由于EAP之类的非对称认证),如果客户端未能及时重新认证SA,它将关闭IKE_SA。响应者将计算所得的/随机化的重新认证时间发送给客户端(而不是SA的硬生命周期)。
注:strongSwan作为客户端,即使在配置中禁用了重新认证(或配置不同),也将遵守AUTH_LIFETIME通知。它从接收的生命周期中减去本地配置的over_time(或margintime)并安排重新认证。