答案1
XFRM_MSG_UPDSA
( )的主要用例ip xfrm state update
是更新入境仅通过 为其分配了 SPI 的 SA XFRM_MSG_ALLOCSPI
。后者可以通过以下方式复制ip xfrm state allocspi
:
Usage: ip xfrm state allocspi ID [ mode MODE ] [ mark MARK [ mask MASK ] ]
[ reqid REQID ] [ seq SEQ ] [ min SPI max SPI ]
使用 IKE 时,这是必要的,因为在与对等方协商算法和密钥之前需要 SPI。之后,可以使用所有丢失的信息(包括算法和密钥)更新此临时状态一次。
然而,对于添加了XFRM_MSG_NEWSA
( ip xfrm state add
) 的状态,例如,出境对于本地没有分配 SPI 的 SA,或者更新过一次的 SA,内核只允许更改非常具体的信息。截至撰写本文时(即内核版本 6.3/6.4),这包括:
- UDP 封装的端口(但不包括是否使用封装或 IP)
- MIPv6 转交地址(如果有)
- 一生
- XFRM 接口 ID
- SA 在已处理数据包上设置的标记
但无法更改此类 SA 的算法或密钥等基本信息。