我读到 IPSec 是 IPv6 实现的必需配置。这是否意味着它应该由操作系统处理,并且 IPSec 配置对于 IPv6 工作来说应该是必需的?如果是这样,为什么不是这样?我在两台 Ubuntu 机器之间设置了一个有效的 6-in-4 隧道,并且 IPv6 似乎在没有配置/工作 IPSec 的情况下运行得很好。
另外,我读到,对于 Ubuntu,可以使用外部软件(racoon?)配置 IPv6 的 IPSec。为什么 IPSec 不是 Ubuntu IPv6 实现的强制要求?
答案1
实施必须支持IPSec 用于 IPv6,但不是强制性的使能够甚至连强制要求(IETF 语言中的“必须”)在最新的 RFC 更新中也被改为非常强烈建议(IETF 语言中的“应该”,即除非有非常好的理由不这样做,否则就执行)。
安全性的最大问题是无法完全自动化。如果可以,那么任何人都可以自动加入 ;-) 建立用于管理公钥/私钥、证书等的系统(PKI:公钥基础设施)始终是实现此类安全性的挑战。
PS:IPSec 是必需的,但并未说明它在哪里实现。IPSec 在单独的包中实现仍然意味着整体符合标准。
答案2
IPSec支持在协议层面是强制性的。但实现和使用却不是。
答案3
为什么我需要一个外部守护进程?
Linux 内核支持 IPsec,因为它可以在给定加密密钥时自动透明地加密/解密 ESP 数据包,或添加/验证 AD 标头。
然而,你仍然需要能够管理这些加密密钥——这就是 Racoon 或 StrongSwan 的作用所在。它们负责身份验证和密钥交换(IKE、IKEv2、Kerberos);它们维护密钥分配(主机 X 的静态密钥、主机 Y 的 X.509 证书);它们将新的和已删除的安全关联告知内核。在用户空间中执行所有这些操作可提高安全性和可靠性,并允许使用新的身份验证或密钥交换协议,而无需重建内核。此外,许多此类协议已经在用户空间中拥有经过充分测试的实现;在内核中执行所有操作需要复制大量代码。