创建路由器后,接下来配置外部网络。通过外部网络的网关,云的内部网络中的用户可以连接到 Internet。
下图显示了单个路由器如何支持云项目的网络通信。
图 3 使用专用网络模型的提供商路由器
该图显示了以下内容:
两个项目(租户 A 和 租户 B)
四个 VM(VM1、VM2、VM3 和 VM4)
四个子网(HR、ENG、IT 和 ACCT)
路由器
外部网络
向内部网络提供对外部网络的访问时,VM 的 IP 地址将映射到分配给外部网络的浮动地址中的一个。
此过程介绍了如何创建代表外部网络的虚拟网络。此虚拟网络不使用 DHCP。而是,创建浮动 IP 地址,并将其分配给项目,供这些项目下的 Nova VM 实例使用。这些步骤创建 VLAN 类型的网络,但是此过程适用于创建其他网络类型,例如平面网络。
外部网络的创建可以独立于内部网络的创建。
开始之前
完成弹性虚拟交换机的配置。有关更多信息,请参见如何安装并配置 Neutron,尤其注意配置 EVS 的步骤。
controller# export OS_USERNAME=neutron controller# export OS_PASSWORD=service-password controller# export OS_PROJECT_NAME=service controller# export OS_AUTH_URL=http://$CONTROLLER_ADMIN_NODE:5000/v2.0
controller# evsadm show-controlprop -p vlan-range
controller# neutron net-create --provider:network_type=vlan \ --provider:segmentation_id=VLAN-nbr \ --router:external network-name
此步骤假定根据如何安装并配置 Neutron创建 VLAN 网络。segmentation_id 是在配置 EVS 时定义其范围的 VLAN 网络的 VLAN ID。
分配池由分配给子网的某个范围的浮动 IP 地址组成。
controller# neutron subnet-create --name subnet-name --disable-dhcp \ --allocation-pool start=start-IP,end=end-IP \ network-name subnet-IP
controller# neutron router-gateway-set router-name ext-network-ID
controller# neutron router-show router-name
此示例说明如何创建外部网络,并将其准备就绪,以供云中的内部网络使用。
要创建平面网络,另请参见 https://blogs.oracle.com/openstack/tags/juno 的第 2 部分中提供的示例。
controller# export OS_USERNAME=neutron
controller# export OS_PASSWORD=service-password
controller# export OS_PROJECT_NAME=service
controller# export OS_AUTH_URL=http://$CONTROLLER_ADMIN_NODE:5000/v2.0
controller# evsadm show-controlprop -p vlan-range
PROPERTY PERM VALUE DEFAULT HOST
vlan-range rw 1,200-300 -- --
controller# neutron net-create --router:external \
--provider:network_type=vlan --provider:segmentation_id=1 ext_network
Created a new network:
+--------------------------+--------------------------------------+
| Field | Value |
+--------------------------+--------------------------------------+
| admin_state_up | True |
| id | 08cf49c8-f28f-49c1-933d-bdb1017e0294 |
| name | ext_network |
| provider:network_type | vlan |
| provider:segmentation_id | 1 |
| router:external | True |
| shared | False |
| status | ACTIVE |
| subnets | |
| project_id | 7d1caf0854b24becb28df5c5cabf72cc |
+--------------------------+--------------------------------------+
controller# neutron subnet-create --name ext_subnet --disable-dhcp \
--allocation-pool start=10.134.10.8,end=10.134.10.254 \
ext_network 10.134.10.0/24
Created a new subnet:
+-------------------+---------------------------------------------------+
| Field | Value |
+-------------------+---------------------------------------------------+
| allocation_pools | {"start": "10.134.10.8", "end": "10.134.10.254"} |
| cidr | 10.134.10.0/24 |
| dns_nameservers | |
| enable_dhcp | False |
| gateway_ip | 10.134.13.1 |
| host_routes | |
| id | fce503ff-f483-4024-b122-f2524e3edae1 |
| ip_version | 4 |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | ext_subnet |
| network_id | 08cf49c8-f28f-49c1-933d-bdb1017e0294 |
| project_id | 7d1caf0854b24becb28df5c5cabf72cc |
+-------------------+---------------------------------------------------+
controller# neutron router-gateway-set ext-router 08cf49c8-f28f-49c1-933d-bdb1017e0294
Set gateway for router ext-router
controller# neutron router-show ext-router
+-----------------------+-------------------------------------------------------+
| Field | Value |
+-----------------------+-------------------------------------------------------+
| admin_state_up | True |
| external_gateway_info | {"network_id": "08cf49c8-f28f-49c1-933d-bdb1017e0294",|
| | "enable_snat": true, |
| | "external_fixed_ips": |
| |[{"subnet_id": "fce503ff-f483-4024-b122-f2524e3edae1", |
| |"ip_address": "10.134.10.8"}]} | |
| id | f89b24ed-42dd-48b0-8f4b-fd41887a3370 |
| name | ext-router |
| status | ACTIVE |
| project_id | 7d1caf0854b24becb28df5c5cabf72cc |
+-----------------------+-------------------------------------------------------+
另请参见
使用此过程以允许内部网络访问更广泛的公共网络。此过程假定特定项目已存在内部网络。要使用系统信息显示板创建项目内部网络,请参见创建项目的内部网络。
开始之前
在继续操作之前,请获取需要公共访问权限的子网名称。
controller# export OS_USERNAME=neutron controller# export OS_PASSWORD=service-password controller# export OS_PROJECT_NAME=service controller# export OS_AUTH_URL=http://$CONTROLLER_ADMIN_NODE:5000/v2.0
controller# neutron subnet-list | grep subnet-name
controller# neutron router-list
controller# neutron router-interface-add router-name subnetID
此示例使用了在如何为项目配置网络中创建的 HR 内部网络。HR 网络(其子网为 HR_Subnet)需要公共网络访问权限。
controller# neutron subnet-list | grep HR_Subnet
| b6feff42-36aa-4235- | HR_Subnet | 10.132.30.0/24 | {"start": "10.132.30.2", |
| 9fe0-ac5de6b43af3 | | | "end": "10.132.30.254"} |
controller# neutron router-list
+--------------------- +------------+--------------------------------+
| id | name | external_gateway_info |
+--------------------- +------------+--------------------------------+
| f89b24ed-42dd-48b0- | ext-router | {"network_id": "6c4c1823-a203- |
| 8f4b-fd41887a3370 | | 43b1-9674-ddb5ff4185fc", |
| | | "enable_snat": true, |
| | | "external_fixed_ips": |
| | | [{"subnet_id": "83d9b40f-cc61- |
| | | 4696-b22e-b4cbc2aa3872", |
| | | "ip_address": "10.132.10.8"}]} |
+---------- -----------+------------+--------------------------------+
controller# neutron router-interface-add ext-router b6feff42-36aa-4235-9fe0-ac5de6b43af3
Added interface b6feff42-36aa-4235-9fe0-ac5de6b43af3 to router ext-router.
您可以使用诸如 ipf、ippool 和 ipnat 等 IP 过滤器命令以及诸如 dladm 和 ipadm 等网络命令观察 neturon-l3-agent 执行的配置并对其进行故障排除。
network# dladm show-vnic LINK OVER SPEED MACADDRESS MACADDRTYPE VIDS l3i7843841e_0_0 net1 1000 2:8:20:42:ed:22 fixed 200 l3i89289b8e_0_0 net1 1000 2:8:20:7d:87:12 fixed 201 l3ed527f842_0_0 net0 100 2:8:20:9:98:3e fixed 0
network# ipadm NAME CLASS/TYPE STATE UNDER ADDR l3ed527f842_0_0 ip ok -- -- l3ed527f842_0_0/v4 static ok -- 10.134.10.8/24 l3ed527f842_0_0/v4a static ok -- 10.134.10.9/32 l3i7843841e_0_0 ip ok -- -- l3i7843841e_0_0/v4 static ok -- 192.168.100.1/24 l3i89289b8e_0_0 ip ok -- -- l3i89289b8e_0_0/v4 static ok -- 192.168.101.1/24
network# ipfstat -io
empty list for ipfilter(out)
block in quick on l3i7843841e_0_0 from 192.168.100.0/24 to pool/4386082
block in quick on l3i89289b8e_0_0 from 192.168.101.0/24 to pool/8226578
network# ippool -l
table role = ipf type = tree number = 8226578
{ 192.168.100.0/24; };
table role = ipf type = tree number = 4386082
{ 192.168.101.0/24; };
network# ipnat -l List of active MAP/Redirect filters: bimap l3ed527f842_0_0 192.168.101.3/32 -> 10.134.13.9/32 List of active sessions: BIMAP 192.168.101.3 22 <- -> 10.134.13.9 22 [10.132.146.13 36405]