4

“ip xfrm state add”命令中的选择器(参数sel)有什么作用?

源地址和目标地址(以及端口和协议等附加参数)在 ID 部分中设置,但选择器包含这些的补充集。例子:

   ip xfrm state add src 10.0.0.1 dst 10.0.0.2 proto esp spi 123456 sel src 10.0.0.3 dst 10.0.0.4 enc blowfish  0xaabbccddee

这导致以下结果:

    src 10.0.0.1 dst 10.0.0.2
proto esp spi 0x0001e240 reqid 0 mode transport
replay-window 0 
enc cbc(blowfish) 0xaabbccddee
sel src 10.0.0.3/32 dst 10.0.0.4/32 

Setkey 貌似没有机会添加这样的选择器值。它也不会在输出中显示选择器。上面的 xfrm 命令产生以下“setkey -D”输出:

   10.0.0.1 10.0.0.2 
esp mode=transport spi=123456(0x0001e240) reqid=0(0x00000000)
E: blowfish-cbc  aabbccdd ee
seq=0x00000000 replay=0 flags=0x00000000 state=mature 
created: Nov 26 01:25:39 2013   current: Nov 26 01:26:07 2013
diff: 28(s) hard: 0(s)  soft: 0(s)
last:                       hard: 0(s)  soft: 0(s)
current: 0(bytes)   hard: 0(bytes)  soft: 0(bytes)
allocated: 0    hard: 0 soft: 0
sadb_seq=0 pid=6959 refcnt=0

那么 IPsec 子系统最终会用这个选择器做什么呢?

4

2 回答 2

0

选择器用于隧道模式。即通过隧道(相互)连接的网络。

于 2014-02-20T12:49:26.187 回答
0

可能直接来自 IPsec 标准(RFC 4301:Internet 协议的安全架构)。
可能是因为标准描述了“名义模型”,即实现不必与描述的完全相同。

第 4.4.2 节中。安全关联数据库(SAD)

对于第 4.4.1.1 节中定义的每个选择器,SAD 中入站 SA 的条目必须最初填充有创建 SA 时协商的一个或多个值。... 对于接收者,这些值用于检查入站数据包的标头字段(在 IPsec 处理之后)是否与为 SA 协商的选举者值匹配。因此,SAD 充当缓存,用于检查到达 SA 的入站流量的选择器。对于接收方,这是验证到达 SA 的数据包是否符合 SA 策略的一部分。

第 5.2 节中。处理入站 IP 流量(不受保护到受保护)

IPsec 必须执行以下步骤:
...
3a。如果数据包的地址是 IPsec 设备并且协议指定为 AH 或 ESP,则在 SAD 中查找数据包。...如果在 SAD 中找到数据包,则相应地对其进行处理(参见步骤 4)。
4. 使用上面步骤 3a 中选择的 SAD 条目,按照指定应用 AH 或 ESP 处理。然后将数据包与 SAD 条目标识的入站选择器进行匹配,以验证接收到的数据包是否适用于接收数据包的 SA。
5. 如果 IPsec 系统在 SA 上接收到一个入站数据包,并且数据包的头字段与 SA 的选择器不一致,它必须丢弃该数据包。

简而言之,您的示例

ip xfrm state add src 10.0.0.1 dst 10.0.0.2 proto esp spi 123456 sel src 10.0.0.3 dst 10.0.0.4 enc blowfish  0xaabbccddee

当 IPsec(在这种情况下为 ESP)数据包到达服务器时,可能会发生以下情况:

  1. 该部分src 10.0.0.1 dst 10.0.0.2 proto esp spi 123456用于查找对应的SA。
    SA 用于解密数据包的有效负载。
    传输模式 IPsec 中的有效负载是另一个 IP 数据包。
  2. 该部分sel src 10.0.0.3 dst 10.0.0.4是来自 SP 的选择器,用于创建我们的 SA。
    此选择器应用于内部 IP 数据包,以验证它是否与 SP 一致。
于 2020-09-04T04:05:29.630 回答