Linux ip xfrm:tmpl 的目的是什么?

SRo*_*mes 6 ipsec linux-networking

如果我们以 Linux 命令为例ip xfrm

 ip xfrm policy add src $LOCAL dst $REMOTE dir out tmpl src $SRC dst $DST proto esp reqid $ID mode tunnel
Run Code Online (Sandbox Code Playgroud)

其作用是什么tmpl


更新:当然,我知道我们需要指定$SRC$DST。但是,既然这些已经在 SA 中通过ip xfrm state命令指定了,为什么我们需要在 中重复它们呢tmpl?称其为“模板”是什么意思?对我来说,它似乎只是一个指向预先存在的 SA ( state) 的指针。

ecd*_*dsa 4

它告诉内核如何处理数据包(对于out策略),或者当流量与此策略匹配时数据包必须来自哪里(对于in策略)(fwd策略有点特殊,因为它们可能根据选择器在两个方向上应用,请参阅此答案) 。在您的示例中,策略将通过 ESP 隧道模式 SA 使用端点 IP 地址$SRC$DST以及 reqid发送流量$ID

为什么我们需要在 tmpl 中重复它们?

实际找到 SA/州。这些存储在哈希表中,并且地址(特别是目标地址)是哈希值的一部分。对于隧道模式 SA,与出站策略匹配的数据包地址不一定与 SA 的地址匹配(对于传输模式,您可能不必将地址添加到模板中)。

称其为“模板”是什么意思?

不确定,但可能与获取相关,也就是说,如果尚未建立匹配的 SA,则在创建新 SA 时,该信息将用作密钥守护进程的模板。