第 12 章 带有 IPv6 的租户网络
本章介绍了在一个租户网络中使用 IPv6 子网的信息。
Red Hat Enterprise Linux OpenStack Platform 6 增加了在租户网络中使用 IPv6 的功能。IPv6 子网可以在存在的租户网络中创建,并支持以下地址分配模式:SLAAC(Stateless Address Autoconfiguration)、Stateful DHCPv6 和 Stateless DHCPv6。本章介绍了 IPv6 子网创建选项,并提供了一个创建示例。
12.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)获得其它可选信息。 |
12.1.1. 使用 Stateful DHCPv6 创建一个 IPv6 子网
这个过程使用以上介绍的设置在一个租户网络中创建一个 IPv6 子网。它的初始步骤是收集所需的租户和网络信息,然后使用这些信息来生成一个子网创建命令。
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-id(25837c567ed5458fbb441d39862e1399
)生成网络命令。另外,还需要包括 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::50/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 | +--------------------------------------+------------+--------+------------+-------------+-------------------------------------+