创建路由器后,接下来配置外部网络。通过外部网络的网关,云的内部网络中的用户可以连接到 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]