启用 Neutron VPN 服务

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/openstack-chef/+spec/neutron-vpnaas-enablement

问题描述

VPN 服务是 Neutron 提供的一个关键特性,用于启用到 OpenStack 云的安全私有连接。目前 Neutron 中的参考 VPN 实现是 [IPSec] VPN,IPSec 驱动程序是 [OPENSWAN]

目前,没有 Chef cookbook 支持来配置和启动 Neutron VPN 服务。

提议的变更

为 cookbook-openstack-network 添加一个 recipe,以及相关的属性/单元测试,以安装、配置和启动 VPN 服务。

需要安装的软件包是

  • Ubuntu: neutron-plugin-vpn-agent

  • RedHat: openstack-neutron

  • Suse: openstack-neutron-vpn-agent

需要添加的属性包括

  • 一个新的属性,用于决定是否启动 VPN agent 或 L3 agent

    ['openstack']['network']['enable_vpn']
    
  • 新的属性,用于在 /etc/neutron/vpn_agent.ini 中的 VPN 配置

    ['openstack']['network']['vpn']['vpn_device_driver']
    ['openstack']['network']['vpn']['ipsec_status_check_interval']
    

该 recipe 将检查是否应该安装、配置和启动 VPN 服务,然后使用属性值来配置 VPN agent 配置文件并启动 VPN 服务。

备选方案

目前没有替代方案。

数据模型影响

没有数据模型影响

REST API 影响

没有 API 变更

安全影响

目前,为了简单起见,Neutron VPNaaS 中仅实现了使用“PSK”(预共享密钥)身份验证模式的 IKE。psk 是 IPsec 站点连接建立过程的输入。

例如,可以在新的 IPsec 站点连接中使用“secret” psk

neutron ipsec-site-connection-create --name vpnconnection1 --vpnservice-id myvpn
--ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy1 --peer-address 172.24.4.233
--peer-id 172.24.4.233 --peer-cidr 10.2.0.0/24 --psk secret

由于身份验证和密钥交换不在启动和配置 VPN 服务的范围内,因此此 Spec 不会对安全性产生影响。

通知影响

没有通知影响

其他最终用户影响

性能影响

其他部署者影响

开发者影响

实现

负责人

主要负责人

工作项

  • 添加一个新的属性值,用于决定是否启动 VPN agent 或 L3 agent,因为这两个服务不能同时启动。

  • 为 /etc/neutron/vpn_agent.ini 中的 VPN 配置添加新的属性,并添加一个新的 vpn 模板。

  • 添加一个新的 recipe 来安装 VPN 软件包,配置 [VPN_TEMPLATE] 并启动 VPN 服务

  • 在 Horizon 中启用 VPN 支持 [VPN_HORIZON] 配置 /opt/stack/horizon/openstack_dashboard/local/local_settings.py

    OPENSTACK_NEUTRON_NETWORK = {
         'enable_vpn': True,
    }
    
  • 添加验证,以确保 VPN 服务正常启动和运行。

  • 添加单元测试

  • 关于此主题的 openstack 提问参考 [HOW_TO_SETUP_VPN]

依赖项

测试

  • 为新的 recipe 添加单元测试。

  • 对于功能测试和 CI 集成测试,建议至少有一个具有三个 NIC 的节点。一个 NIC 用于外部网络连接,一个 NIC 用于数据网络,另一个用于管理网络。

文档影响

  • 配置属性 [‘openstack’][‘network’][‘enable_vpn’] = ‘True’ 以启用 VPN 服务。

  • 配置 VPN 相关属性,例如

    ['openstack']['network']['vpn']['vpn_device_driver'] =
    neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver
    ['openstack']['network']['vpn']['ipsec_status_check_interval'] = 60