【Cilium / eBPF】透明加密:WireGuard / IPsec 的路径税与失败模式

💡 原文中文,约6700字,阅读约需16分钟。
📝

内容提要

Cilium透明加密通过WireGuard或IPsec实现,与身份发现耦合,存在明文传播窗口。严格模式将明文窗口转为失败,但增加脆弱性。加密带来CPU、MTU和排障成本,不替代策略或TLS。选择需基于威胁模型,注意节点覆盖、密钥轮换和升级兼容性。

🔎

延伸解读

加密与身份发现的耦合

Cilium 透明加密并非对所有流量无条件加密,而是依赖与策略类似的身份发现机制:只有目的 IP 已映射到远端 Cilium 端点或节点身份时,流量才会进入 WireGuard 或 IPsec 隧道。这意味着在新节点或新 Pod 信息尚未传播的窗口期,首批包可能以明文离开节点。理解这一耦合关系,是排查“加密未生效”或“偶发明文”问题的关键。

Strict mode 的权衡

Strict mode 将明文传播窗口转换为显式失败:egress strict 强制对指定 CIDR 加密,ingress strict 丢弃非隧道入站。这提高了机密性,但代价是可用性——新 Pod 在信息传播完成前可能短暂不通。此外,ingress strict 仅支持 WireGuard,且要求 Cilium 管理所有承载 Pod 流量的接口,CNI chaining 场景下不可用。启用前需评估对业务的影响。

加密税的路径差异

透明加密的代价集中在跨节点路径:CPU 用于加解密,MTU 因封装开销而减小,排障时中间盒看不到明文五元组。同节点流量通常不经跨节点 WG,因此加密税不均衡。容量规划若按集群平均 CPU 估算,可能掩盖跨 AZ 节点对的热点。建议按路径类型记账,并注意双重封装(如 VXLAN 叠加 WG)会叠加 MTU 与 CPU 税。

升级与配置漂移风险

升级到 v1.20 时,部分旧选项(如 strict/overlay 弃用项)已被移除。若 GitOps 仓库仍保留无效键,可能静默导致加密行为改变,看似开启实则未生效。配置漂移比内核 bug 更常见,升级前应核对 CHANGELOG 和官方文档,避免沿用旧版本博客中的旗标。

Q&A

Cilium透明加密的两种实现方式是什么?

Cilium透明加密支持WireGuard和IPsec两种实现方式。WireGuard通过CiliumNode公钥注解自动分发密钥,IPsec则使用独立的密钥/Secret管理路径。

Cilium透明加密存在哪些已知的明文传播窗口?如何缓解?

在Cilium中,加密决策依赖于目的IP是否已映射到远端Cilium端点或节点身份。在新节点或新Pod信息未扩散前,首批包可能明文出站。缓解措施包括:收紧到reserved:world的出站策略,使用encryption.strictMode.egress强制加密出站(仅IPv4),以及启用encryption.strictMode.ingress丢弃非隧道入站(仅WireGuard)。

Cilium透明加密的strict mode有什么优缺点?

Strict mode将明文窗口转换为失败,即如果加密条件未满足则直接丢弃或拒绝流量,从而避免明文泄露。优点是提高了机密性,缺点是增加了脆弱性,可能导致新Pod短期内不通,且ingress strict仅支持WireGuard,不支持IPsec。

Cilium透明加密会带来哪些性能或运维成本?

主要成本包括:CPU开销(每包加解密)、MTU降低(封装开销导致有效载荷减小)、连接建立延迟(密钥和注解传播)、排障困难(中间盒看不到明文五元组,Hubble需声明观测点)。

Cilium透明加密与TLS或mTLS有什么区别?

Cilium透明加密保护的是节点间链路上的窃听和篡改,不提供应用层身份验证。TLS或mTLS提供服务身份和HTTP级鉴权。两者不能互相替代,可以叠加使用,但会叠加性能开销。

Cilium透明加密的密钥是如何分发和轮换的?

WireGuard模式下,每个节点生成密钥对,公钥写入CiliumNode注解,agent与其他节点建立peer。节点滚动时公钥注解更新,peer列表随之变化。IPsec使用独立的密钥/Secret管理路径。轮换窗口与strict mode叠加时,短时不通优先检查peer是否收敛。

Cilium透明加密在升级到v1.20时需要注意什么?

升级到v1.20时,需要对照CHANGELOG检查被删除的弃用旗标,避免旧GitOps仓库静默带上无效键,导致配置漂移。例如部分strict/overlay弃用项已移除,需按v1.20文档核对配置。

Cilium透明加密是否适用于所有流量?

不适用。默认仅加密节点间Pod→Pod流量,node encryption(Beta)可扩展到node↔node等,但控制面节点默认opt-out。同节点东西向流量通常不经跨节点WG。此外,IPv6不受egress strict保护。

🏷️

标签

➡️

继续阅读