跳转到: 导航, 搜索

ProjectVpn

  • Launchpad 入口: NovaSpec:project-vpn
  • 创建: 11/01/10
  • 贡献者: Vish Ishaya

总结

在 VLAN 网络模式下,用户需要一种访问其实例的私有网络的方式。 这以前由每个项目的 VPN(代号 cloudpipe)支持,但不幸的是,它没有得到妥善维护。 此外,旧的实现方式存在一些安全问题。

发布说明

Nova 在 VLAN 网络模式下支持每个项目的 VPN,代号为 cloudpipes。 这些允许用户无限制地访问其项目内的实例。 VPN 可以通过网络主机的端口转发访问,也可以通过自动为 VPN 分配公共 IP 地址来访问。 关于如何设置 cloudpipes 的说明可以在 <这里> 找到。

原理

Nova 支持一种安全的网络配置,其中每个项目都分配有自己的 VLAN 和私有 IP 范围。 这是一种相当安全的隔离项目的方式。 由于这种隔离,我们可以让用户在项目中自由访问网络上的其他机器,而不是仔细设置防火墙规则并将所有实例暴露在公共互联网上。 为了使该方案有效工作,用户需要一种访问其项目私有网络的方式。 Cloudpipe(每个项目的 VPN 实例)提供了这种方式。

用户故事

前提条件

VLAN 隔离比使用自定义 ebtables 和 iptables 规则更容易在主机级别进行管理。 它要求连接网络的交换机支持主机管理的 VLAN 标记。 如果没有可用的此类主机,则需要另一种网络模式。

设计

Cloudpipe 是代表用户运行的定制实例,作为 VPN。 虽然用户可以设置自己的 VPN,但需要对网络进行一些控制,因此由 nova 本身(至少部分地)管理 VPN 更有意义。

实现

Cloudpipe 需要支持

  • VPN 的自动创建
  • VPN 的管理
  • 分配和撤销证书

UI 变更

目前 UI 只是 nova-manage 命令,因此不需要进行设计更改。

代码变更

代码库中已经存在一个较旧的(无法正常工作)版本的 cloudpipe。 这需要更新以包含新功能。 这些包括

  • 与安全组的集成
  • 使用新的数据库
  • 证书的撤销
  • 更好的管理命令
  • 删除通过 HTTP 进行签名的 cloudpipe API(这非常不安全)

迁移

将在数据库中添加一个新表来表示证书。 由于 CA 和证书结构的更改,需要生成新的凭据并发送给用户。 如果不需要 cloudpipe 功能,则提供一个标志来禁用新的证书结构并保留现有功能。

文档变更

需要更新文档,解释如何正确使用 cloudpipe。 它们必须包括管理命令以及如何创建 cloudpipe 镜像。

测试/演示计划

这不必在规范接近 Beta 之前添加或完成。

未解决的问题

项目 cloudpipes 会影响配额。 当前的实现方式使用完整的实例来运行 openvpn,但这可以替换为运行某种 busybox linux(如 OpenWRT)的非常小的实例。 标记 VPN 实例也可能很有用,以便:a) 向用户隐藏它们和/或 b) 更改调度程序的计算(例如,在计算服务器负载时,将一个小的 cloudpipe 算作 1/10 个核心);

BoF 议程和讨论

使用本节记录 BoF 期间的笔记;如果将其保留在批准的规范中,请用于总结讨论内容并记录任何被拒绝的选项。