第 15 章 带有 IPv6 的租户网络

本章介绍了如何在一个租户网络中实现 IPv6 子网的信息。除了租户网络,director 7.3 还可以为 overcloud 节点配置原生 IPv6 的部署。

Red Hat OpenStack Platform 6 增加了在租户网络中使用 IPv6 的功能。IPv6 子网可以在存在的租户网络中创建,并支持以下地址分配模式:SLAAC(Stateless Address Autoconfiguration)、Stateful DHCPv6Stateless DHCPv6。本章介绍了 IPv6 子网创建选项,并提供了一个创建示例。

15.1. IPv6 子网选项

IPv6 子网使用 neutron subnet-create 命令创建。另外,您还可以指定地址模式和 RA(Router Advertisement)模式。下面介绍了这些选项的组合:

RA 模式地址模式结果

ipv6_ra_mode=not set

ipv6-address-mode=slaac

这个实例使用 SLAAC 从外部路由(没有被 OpenStack Networking 管理的路由)接收 IPv6 地址。

ipv6_ra_mode=not set

ipv6-address-mode=dhcpv6-stateful

这个实例使用 DHCPv6 stateful 从 OpenStack Networking(dnsmasq)接收 IPv6 地址和可选的信息。

ipv6_ra_mode=not set

ipv6-address-mode=dhcpv6-stateless

这个实例使用 SLAAC 从外部路由接收一个 IPv6 地址,并使用 DHCPv6 stateless 从 OpenStack Networking(dnsmasq)接收可选的信息。

ipv6_ra_mode=slaac

ipv6-address-mode=not-set

实例使用 SLAAC 从 OpenStack Networking(radvd)接收一个 IPv6 地址。

ipv6_ra_mode=dhcpv6-stateful

ipv6-address-mode=not-set

这个实例使用 DHCPv6 stateful 从外部 DHCPv6 服务器接收一个 IPv6 地址和可选的信息。

ipv6_ra_mode=dhcpv6-stateless

ipv6-address-mode=not-set

这个实例使用 SLAAC 从 OpenStack Networking(radvd)接收一个 IPv6 地址,并使用 DHCPv6 stateless 从外部 DHCPv6 服务器接收可选的信息。

ipv6_ra_mode=slaac

ipv6-address-mode=slaac

实例通过 SLAAC 从 OpenStack Networking(radvd)接收一个 IPv6 地址。

ipv6_ra_mode=dhcpv6-stateful

ipv6-address-mode=dhcpv6-stateful

实例通过 DHCPv6 stateful 从 OpenStack Networking(dnsmasq)接收一个 IPv6 地址,使用 DHCPv6 stateful 从 OpenStack Networking(dnsmasq)获得其它可选信息。

ipv6_ra_mode=dhcpv6-stateless

ipv6-address-mode=dhcpv6-stateless

实例通过 DHCPv6 stateful 从 OpenStack Networking(radvd)接收一个 IPv6 地址,使用 DHCPv6 stateless 从 OpenStack Networking(dnsmasq)获得其它可选信息。

15.1.1. 使用 Stateful DHCPv6 创建一个 IPv6 子网

这个过程使用以上介绍的设置在一个租户网络中创建一个 IPv6 子网。它的初始步骤是收集所需的租户和网络信息,然后使用这些信息来生成一个子网创建命令。

注意

OpenStack Networking 只支持对 SLAAC 的 EUI-64 IPv6 地址分配。因为主机将可以基于基本的 64 位再加上 MAC 地址来自分配地址,所以这将可以简化 IPv6 网络。使用不同的网络掩码和 SLAAC 的 address_assign_type 创建子网将会失败。

1. 获得需要创建 IPv6 子网的项目的租户 id。(这个值在不同 OpenStack 环境中是不同的,因此您的值可能会和这里使用的值不同)。在这个例子中,QA 的租户将会接收一个 IPv6 子网。

# keystone tenant-list
+----------------------------------+----------+---------+
|                id                |   name   | enabled |
+----------------------------------+----------+---------+
| 25837c567ed5458fbb441d39862e1399 |    QA    |   True  |
| f59f631a77264a8eb0defc898cb836af |  admin   |   True  |
| 4e2e1951e70643b5af7ed52f3ff36539 |   demo   |   True  |
| 8561dff8310e4cd8be4b6fd03dc8acf5 | services |   True  |
+----------------------------------+----------+---------+

2. 获得 OpenStack Networking(neutron)中的所有网络的列表,并记录下包括 IPv6 子网的网络名称。在这个例子中,使用 database-servers

# neutron net-list
+--------------------------------------+------------------+-------------------------------------------------------------+
| id                                   | name             | subnets                                                     |
+--------------------------------------+------------------+-------------------------------------------------------------+
| 8357062a-0dc2-4146-8a7f-d2575165e363 | private          | c17f74c4-db41-4538-af40-48670069af70 10.0.0.0/24            |
| 31d61f7d-287e-4ada-ac29-ed7017a54542 | public           | 303ced03-6019-4e79-a21c-1942a460b920 172.24.4.224/28        |
| 6aff6826-4278-4a35-b74d-b0ca0cbba340 | database-servers |                                                             |
+--------------------------------------+------------------+-------------------------------------------------------------+

3. 使用从以上步骤中获得的 QA tenant-id25837c567ed5458fbb441d39862e1399)生成网络命令。另外,还需要包括 IPv6 子网的目标网络名称。在这个例子中,使用 database-servers 网络:

# neutron subnet-create --ip-version 6 --ipv6_address_mode=dhcpv6-stateful --tenant-id 25837c567ed5458fbb441d39862e1399 database-servers fdf8:f53b:82e4::53/125

Created a new subnet:
+-------------------+--------------------------------------------------------------+
| Field             | Value                                                        |
+-------------------+--------------------------------------------------------------+
| allocation_pools  | {"start": "fdf8:f53b:82e4::52", "end": "fdf8:f53b:82e4::56"} |
| cidr              | fdf8:f53b:82e4::53/125                                       |
| dns_nameservers   |                                                              |
| enable_dhcp       | True                                                         |
| gateway_ip        | fdf8:f53b:82e4::51                                           |
| host_routes       |                                                              |
| id                | cdfc3398-997b-46eb-9db1-ebbd88f7de05                         |
| ip_version        | 6                                                            |
| ipv6_address_mode | dhcpv6-stateful                                              |
| ipv6_ra_mode      |                                                              |
| name              |                                                              |
| network_id        | 6aff6826-4278-4a35-b74d-b0ca0cbba340                         |
| tenant_id         | 25837c567ed5458fbb441d39862e1399                             |
+-------------------+--------------------------------------------------------------+

4. 查看网络列表来验证这个配置。请注意,database-servers 项中的内容反映了新创建的 IPv6 子网:

# neutron net-list
+--------------------------------------+------------------+-------------------------------------------------------------+
| id                                   | name             | subnets                                                     |
+--------------------------------------+------------------+-------------------------------------------------------------+
| 6aff6826-4278-4a35-b74d-b0ca0cbba340 | database-servers | cdfc3398-997b-46eb-9db1-ebbd88f7de05 fdf8:f53b:82e4::50/125 |
| 8357062a-0dc2-4146-8a7f-d2575165e363 | private          | c17f74c4-db41-4538-af40-48670069af70 10.0.0.0/24            |
| 31d61f7d-287e-4ada-ac29-ed7017a54542 | public           | 303ced03-6019-4e79-a21c-1942a460b920 172.24.4.224/28        |
+--------------------------------------+------------------+-------------------------------------------------------------+

作为这个配置的结果,QA 租户创建的实例在加入到 database-servers 子网中时可以接收一个 DHCP IPv6 地址:

# nova list
+--------------------------------------+------------+--------+------------+-------------+-------------------------------------+
| ID                                   | Name       | Status | Task State | Power State | Networks                            |
+--------------------------------------+------------+--------+------------+-------------+-------------------------------------+
| fad04b7a-75b5-4f96-aed9-b40654b56e03 | corp-vm-01 | ACTIVE | -          | Running     | database-servers=fdf8:f53b:82e4::52 |
+--------------------------------------+------------+--------+------------+-------------+-------------------------------------+