虚拟专用网络即服务 (VPNaaS) 场景

启用 VPNaaS

本节描述参考实现的设置。 供应商插件或驱动程序可能有不同的设置过程,并且可能提供他们自己版本的文档。

  1. 通过在 /etc/neutron/neutron.conf 文件中将 vpnaas 附加到 service_plugins[DEFAULT] 部分,来启用 VPNaaS 插件

    [DEFAULT]
    # ...
    service_plugins = vpnaas
    

    注意

    vpnaas 只是参考实现的示例。 它取决于您将要使用的插件。 请考虑为您的部署设置合适的插件。

  2. 通过创建以下 /etc/neutron/neutron_vpnaas.conf 文件来配置 VPNaaS 服务提供程序,Ubuntu 发行版中使用 strongswan

    [service_providers]
    service_provider = VPN:strongswan:neutron_vpnaas.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default
    

    注意

    有几种类型的服务驱动程序。 根据 Linux 发行版,您可能需要覆盖此值。 选择 libreswan 用于 RHEL/CentOS,配置如下:service_provider = VPN:openswan:neutron_vpnaas.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default。 请考虑为您的部署使用合适的驱动程序。

  3. 通过将以下部分添加到 /etc/neutron/l3_agent.ini 来配置 L3 代理的 VPNaaS 插件,Ubuntu 发行版中使用 StrongSwanDriver

    [AGENT]
    extensions = vpnaas
    
    [vpnagent]
    vpn_device_driver = neutron_vpnaas.services.vpn.device_drivers.strongswan_ipsec.StrongSwanDriver
    

    注意

    有几种类型的设备驱动程序。 根据 Linux 发行版,您可能需要覆盖此值。 选择 LibreSwanDriver 用于 RHEL/CentOS,配置如下:vpn_device_driver = neutron_vpnaas.services.vpn.device_drivers.libreswan_ipsec.LibreSwanDriver。 请考虑为您的部署使用合适的驱动程序。

  4. 在数据库中创建所需的表

    # neutron-db-manage --subproject neutron-vpnaas upgrade head
    

    注意

    为了运行上述命令,您需要在控制器节点上安装 neutron-vpnaas 包。

  5. 重新启动控制器节点上的 neutron-server 以应用设置。

  6. 重新启动网络节点上的 neutron-l3-agent 以应用设置。

不使用端点组配置 VPNaaS (传统方式)

创建 IKE 策略、IPsec 策略、VPN 服务。 然后,创建一个应用上述策略和服务的 ipsec 站点连接。

  1. 创建 IKE 策略

    $ openstack vpn ike policy create ikepolicy1
      +-------------------------------+----------------------------------------+
      | Field                         | Value                                  |
      +-------------------------------+----------------------------------------+
      | Authentication Algorithm      | sha1                                   |
      | Description                   |                                        |
      | Encryption Algorithm          | aes-128                                |
      | ID                            | 99e4345d-8674-4d73-acb4-0e2524425e34   |
      | IKE Version                   | v1                                     |
      | Lifetime                      | {u'units': u'seconds', u'value': 3600} |
      | Name                          | ikepolicy1                             |
      | Perfect Forward Secrecy (PFS) | group5                                 |
      | Phase1 Negotiation Mode       | main                                   |
      | Project                       | 095247cb2e22455b9850c6efff407584       |
      | project_id                    | 095247cb2e22455b9850c6efff407584       |
      +-------------------------------+----------------------------------------+
    
  2. 创建 IPsec 策略

    $ openstack vpn ipsec policy create ipsecpolicy1
      +-------------------------------+----------------------------------------+
      | Field                         | Value                                  |
      +-------------------------------+----------------------------------------+
      | Authentication Algorithm      | sha1                                   |
      | Description                   |                                        |
      | Encapsulation Mode            | tunnel                                 |
      | Encryption Algorithm          | aes-128                                |
      | ID                            | e6f547af-4a1d-4c28-b40b-b97cce746459   |
      | Lifetime                      | {u'units': u'seconds', u'value': 3600} |
      | Name                          | ipsecpolicy1                           |
      | Perfect Forward Secrecy (PFS) | group5                                 |
      | Project                       | 095247cb2e22455b9850c6efff407584       |
      | Transform Protocol            | esp                                    |
      | project_id                    | 095247cb2e22455b9850c6efff407584       |
      +-------------------------------+----------------------------------------+
    
  3. 创建 VPN 服务

    $ openstack vpn service create vpn \
      --router 66ca673a-cbbd-48b7-9fb6-bfa7ee3ef724 \
      --subnet cdfb411e-e818-466a-837c-7f96fc41a6d9
      +----------------+--------------------------------------+
      | Field          | Value                                |
      +----------------+--------------------------------------+
      | Description    |                                      |
      | Flavor         | None                                 |
      | ID             | 79ef6250-ddc3-428f-88c2-0ec8084f4e9a |
      | Name           | vpn                                  |
      | Project        | 095247cb2e22455b9850c6efff407584     |
      | Router         | 66ca673a-cbbd-48b7-9fb6-bfa7ee3ef724 |
      | State          | True                                 |
      | Status         | PENDING_CREATE                       |
      | Subnet         | cdfb411e-e818-466a-837c-7f96fc41a6d9 |
      | external_v4_ip | 192.168.20.2                         |
      | external_v6_ip | 2001:db8::d                          |
      | project_id     | 095247cb2e22455b9850c6efff407584     |
      +----------------+--------------------------------------+
    

    注意

    在这种情况下,需要 --subnet 选项。

  4. 创建 ipsec 站点连接

    $ openstack vpn ipsec site connection create conn \
      --vpnservice vpn \
      --ikepolicy ikepolicy1 \
      --ipsecpolicy ipsecpolicy1 \
      --peer-address 192.168.20.11 \
      --peer-id 192.168.20.11 \
      --peer-cidr 192.168.1.0/24 \
      --psk secret
      +--------------------------+--------------------------------------------------------+
      | Field                    | Value                                                  |
      +--------------------------+--------------------------------------------------------+
      | Authentication Algorithm | psk                                                    |
      | Description              |                                                        |
      | ID                       | 5b2935e6-b2f0-423a-8156-07ed48703d13                   |
      | IKE Policy               | 99e4345d-8674-4d73-acb4-0e2524425e34                   |
      | IPSec Policy             | e6f547af-4a1d-4c28-b40b-b97cce746459                   |
      | Initiator                | bi-directional                                         |
      | Local Endpoint Group ID  | None                                                   |
      | Local ID                 |                                                        |
      | MTU                      | 1500                                                   |
      | Name                     | conn                                                   |
      | Peer Address             | 192.168.20.11                                          |
      | Peer CIDRs               | 192.168.1.0/24                                         |
      | Peer Endpoint Group ID   | None                                                   |
      | Peer ID                  | 192.168.20.11                                          |
      | Pre-shared Key           | secret                                                 |
      | Project                  | 095247cb2e22455b9850c6efff407584                       |
      | Route Mode               | static                                                 |
      | State                    | True                                                   |
      | Status                   | PENDING_CREATE                                         |
      | VPN Service              | 79ef6250-ddc3-428f-88c2-0ec8084f4e9a                   |
      | dpd                      | {u'action': u'hold', u'interval': 30, u'timeout': 120} |
      | project_id               | 095247cb2e22455b9850c6efff407584                       |
      +--------------------------+--------------------------------------------------------+
    

    注意

    在这种情况下,请不要指定 --local-endpoint-group--peer-endpoint-group 选项。