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 期间的笔记;如果将其保留在批准的规范中,请用于总结讨论内容并记录任何被拒绝的选项。