Linux 内核中的 IPsec

Linux 内核中的 IPsec

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

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

答案1

  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. setkeyipsec 工具手动键入包,与iproute2封装。使用iproute2您可以使用ip xfrm命令手动配置 SA 和策略。这两个命令都直接与 SAD 和 SPD 交互(请参阅RFC 4301) 在内核中手动管理 IPsec SA 和策略。与其他基于 BSD 的工具setkey一样racoon,它使用 PF_KEYv2 接口,因此功能不如命令强大ip xfrm。例如,在 Linux 上,无法使用 PF_KEYv2 配置扩展序列号或标记。

相关内容