Linux 内核中的 IPsec

Cat*_*ile 7 ipsec linux-kernel iproute2

我有一些与 IPsec 的 Linux 内核实现及其用户空间接口相关的问题(问题)。

  1. 最大的问题是哪个是 Linux 内核 IPsec 实现的实际官方项目?据我了解,实现是Kame项目的一个fork,但有朋友说这不是真的。他们的官方网站和 repo 是哪个?
  2. 我在内核文档源中的何处可以找到一些相关的注释?
  3. 它主要使用哪个用户空间前端?ip-tools 还是 iproute2 包?这两个方法是否相同,或者其中一个的开销更大?
  4. 据我所知,iproute2 IPsec 传输模式的教程与用于加载配置文件的“setkey”实用程序有关。“setkey”实际上用于 iproute2 包,还是我被误导了?“setkey”是从 ip-tools 粘到“racoon”上的,还是它是配置加载的一般应用程序?“setkey”实际上是做什么的(我对此很困惑)?

ecd*_*dsa 15

  1. 从 2.6 开始集成在 Linux 内核中的 IPsec 堆栈(NETKEY)最初基于 KAME 堆栈(至少在 API 方面)。源代码是内核存储库的一部分,主要组件位于该net/xfrm文件夹中,包括 Netlink/XFRM 配置接口的实现。替代和标准化(但有些扩展)的 PF_KEYv2 接口实现位于net/key文件夹中。
  2. 没有太多的文档。但是检查Documentation/networking文件夹。
  3. 如果您手动配置 IPsec SA 和策略(手动键控),我会推荐iproute2。它使用更强大的 Netlink/XFRM 接口,并且默认情况下大多数发行版都安装了该包。但通常您会使用由用户空间IKE守护程序提供的自动密钥,例如 strongSwan、Open/libreswan 或 racoon(ipsec-tools),这样您就不必手动安装 SA 和策略,并且您可以获得临时加密/完整性密钥在 IKE 期间通过 Diffie-Hellman 建立。新密钥的定期自动协商(称为重新生成密钥)也是可能的。
  4. setkey由ipsec-tools包提供用于手动键控,与iproute2包没有关系。使用iproute2,您将使用该ip xfrm命令手动配置 SA 和策略。这两个命令都直接与内核中的 SAD 和 SPD(请参阅RFC 4301)交互,以手动管理 IPsec SA 和策略。setkey一样,racoon和其他基于BSD-工具,使用使用PF_KEYv2接口,因此它比不那么强大ip xfrm命令。例如,在 Linux 上不能使用 PF_KEYv2 配置扩展序列号或标记。