Esta sección muestra cómo crear una red virtual que representa una red externa. En esta red virtual, DHCP no se usa. En su lugar, se crean direcciones IP flotantes. Estas direcciones IP flotantes se asignan a un cliente particular y se pueden asignar a instancias de VM de Nova para uso por usuarios con ese cliente. El agente Neutron L3 crea automáticamente asignaciones NAT de uno a uno entre las direcciones asignadas a instancias de Nova y las direcciones IP flotantes.
La implementación de Oracle Solaris 11.2 de OpenStack Neutron admite un enrutador de proveedor con un modelo de implementación de redes privadas. En este modelo de implementación, cada cliente tendrá una o más redes privadas y todas las redes cliente compartirán el mismo enrutador. El administrador de datos crea, posee y gestiona el enrutador. El enrutador no está visible en la vista de topología de red del cliente. Dado que hay solamente un único enrutador, las redes cliente no pueden usar direcciones IP superpuestas. El administrador crea las redes privadas en nombre de los inquilinos.
De manera predeterminada, el enrutador de este modelo evita el enrutamiento entre las redes privadas que son parte del mismo cliente: las instancias de VM dentro de una red privada no se pueden comunicar con las instancias de VM de otra red privada, aunque sean todas parte del mismo cliente. Para cambiar este comportamiento, defina allow_forwarding_between_networks en Trueen el archivo de configuración /etc/neutron/l3_agent.ini y reinicie el servicio SMF neutron-l3-agent.
El enrutador de este modelo proporciona conectividad al exterior para las instancias de VM del cliente. El enrutador realiza NAT bidireccional en la interface que conecta el enrutador a la red externa. Los clientes crean tantas IP flotantes (IP públicas) como necesitan o como permite la cuota de IP flotante y, a continuación, asocian estas IP flotantes con las instancias de VM que requieren conectividad externa.
La siguiente figura ilustra el modelo de implementación de Oracle Solaris 11.2. Debajo de la figura se muestra una descripción.
Figura 9 Enrutador de proveedor con modelo de redes privadas
En el modelo que se muestra en la figura anterior, cada cliente tiene dos redes internas y dos instancias de VM.
Red HR con subred 192.168.100.0/24 y puerta de enlace 192.168.100.1
Red ENG con subred 192.168.101.0/24 y puerta de enlace 192.168.101.1
VM1 conectado a HR con una dirección IP fija 192.168.100.3
VM2 conectado a ENG con una dirección IP fija 192.168.101.3
Red IT con subred 192.168.102.0/24 y puerta de enlace 192.168.102.1
Red ACCT con subred 192.168.103.0/24 y puerta de enlace 192.168.103.1
VM3 conectado a IT con una dirección IP fija 192.168.102.3
VM4 conectado a ACCT con una dirección IP fija 192.168.103.3
La tabla NAT bidireccional se configura como se muestra en la siguiente tabla.
|
Todas las instancias de las interfaces de puerta de enlace se crean en el nodo que se ejecuta en el servicio SMF de neutron-l3-agent. Aunque una nube puede tener varias instancias de Neutron, necesita solamente un neutron-l3-agent por nube.
La red externa es una red de proveedor asociada con la subred 10.134.13.0/24, a la que se puede acceder desde el exterior. Los clientes crearán direcciones IP flotantes desde esta red y las asociarán a sus instancias de VM. VM1 y VM2 tienen las IP flotantes 10.134.13.40 y 10.134.13.9 asociadas, respectivamente. Se puede acceder a VM1 y VM2 desde el exterior mediante estas direcciones IP.
El siguiente diagrama muestra cómo se configuran estos recursos de cliente en un nodo de red y dos nodos de cálculo. Debajo de la figura, se muestran descripciones de algunas de las funciones de la figura.
Figura 10 Configuración del agente Neutron L3
Interfaz de red virtual.
El agente L3 agent creó una VNIC en la red externa (“e”), donde se produce la NAT bidireccional.
El agente L3 creó una VNIC en la red interna (“i”) que tiene la dirección IP de puerta de enlace predeterminada.
La siguiente lista muestra cómo se usarán las direcciones IP en esta configuración de ejemplo.
Puerta de enlace predeterminada
Direcciones IP reservadas para mostrar API de OpenStack (como Nova, Cinder, Glance) a los clientes
Direcciones IP flotantes para las instancias de VM de cliente
Este procedimiento muestra cómo usar el cliente service para crear un enrutador, una red externa o una subred externa que será usada por todos los clientes del centro de datos.
El administrador del centro de datos lleva a cabo este procedimiento. Debe usar la línea de comandos para configurar el enrutador único compartido y asociar redes y subredes de distintos inquilinos porque el panel de control de OpenStack le permite gestionar los recursos solamente un inquilino uno por vez.
Consulte Figura 10 para realizar los siguientes pasos.
Antes de empezar
Debe realizar la configuración de las redes internas antes de realizar este procedimiento.
network# svcadm enable ipfilter
network# ipadm set-prop -p forwarding=on ipv4 network# ipadm set-prop -p forwarding=on ipv6
En el siguiente ejemplo, el ID de VLAN y los valores de rango se basan en la configuración de EVS definida en Step 9.
network# evsadm show-controlprop -p vlan-range,l2-type PROPERTY PERM VALUE DEFAULT HOST l2-type rw vlan vlan -- vlan-range rw 13,1000-2000 -- --
network# keystone tenant-list
El enrutador de proveedor se crea como usuario neutron de OpenStack en el cliente service.
Observe el UUID (id) del nuevo enrutador. Lo usará en el próximo paso.
network# export OS_USERNAME=neutron network# export OS_PASSWORD=neutron-password network# export OS_TENANT_NAME=service network# export OS_AUTH_URL=http://controller-name:5000/v2.0 network# neutron router-create provider_router Created a new router: +-----------------------+--------------------------------------+ | Field | Value | +-----------------------+--------------------------------------+ | admin_state_up | True | | external_gateway_info | | | id | 181543df-40d1-4514-ea77-fddd78c389ff | | name | provider_router | | status | ACTIVE | | tenant_id | f164220cb02465db929ce520869895fa | +-----------------------+--------------------------------------+
Actualice el valor de router_id en el archivo /etc/neutron/l3_agent.ini, con el UUID (id) del enrutador del paso anterior.
router_id = 181543df-40d1-4514-ea77-fddd78c389ff
network# svcadm enable neutron-l3-agent
La red virtual se crea como usuario neutron de OpenStack en el cliente service.
network# neutron net-create --provider:network_type=vlan \ --provider:segmentation_id=13 --router:external=true external_network Created a new network: +--------------------------+--------------------------------------+ | Field | Value | +--------------------------+--------------------------------------+ | admin_state_up | True | | id | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f | | name | external_network | | provider:network_type | vlan | | provider:segmentation_id | 13 | | router:external | True | | shared | False | | status | ACTIVE | | subnets | | | tenant_id | f164220cb02465db929ce520869895fa | +--------------------------+--------------------------------------+
Cree una subred asociada para la red externa, especifique que DHCP está desactivado y que la subred se usará para enrutamiento externo. Especifique una subred IP enrutable desde donde se asignarán las direcciones IP flotantes. En este ejemplo, la subred está asociada con el ID VLAN 13.
network# neutron subnet-create --enable-dhcp=False \ --allocation-pool start=10.134.13.8,end=10.134.13.254 \ --name external_subnet external_network 10.134.13.0/24 Created a new subnet: +------------------+--------------------------------------------------+ | Field | Value | +------------------+--------------------------------------------------+ | allocation_pools | {"start": "10.134.13.8", "end": "10.134.13.254"} | | cidr | 10.134.13.0/24 | | dns_nameservers | | | enable_dhcp | False | | gateway_ip | 10.134.13.1 | | host_routes | | | id | 5d9c8958-0de0-11e4-9d96-e1f29f417e2f | | ip_version | 4 | | name | external_subnet | | network_id | f67f0d72-0ddf-11e4-9d95-e1f29f417e2f | | tenant_id | f164220cb02465db929ce520869895fa | +------------------+--------------------------------------------------+
En el siguiente comando, el primer UUID es el UUID provider_router y el segundo UUID es el UUID external_network.
network# neutron router-gateway-set \ 181543df-40d1-4514-ea77-fddd78c389ff \ f67f0d72-0ddf-11e4-9d95-e1f29f417e2f Set gateway for router 181543df-40d1-4514-ea77-fddd78c389ff network# neutron router-list -c name -c external_gateway_info +-----------------+--------------------------------------------------------+ | name | external_gateway_info | +-----------------+--------------------------------------------------------+ | provider_router | {"network_id": "f67f0d72-0ddf-11e4-9d95-e1f29f417e2f"} | +-----------------+--------------------------------------------------------+
Las redes que muestra el comando neutron net-list se configuraron anteriormente.
network# keystone tenant-list +----------------------------------+---------+---------+ | id | name | enabled | +----------------------------------+---------+---------+ | 511d4cb9ef6c40beadc3a664c20dc354 | demo | True | | f164220cb02465db929ce520869895fa | service | True | +----------------------------------+---------+---------+ network# neutron net-list --tenant-id=511d4cb9ef6c40beadc3a664c20dc354 +-------------------------------+------+------------------------------+ | id | name | subnets | +-------------------------------+------+------------------------------+ | c0c15e0a-0def-11e4-9d9f- | HR | c0c53066-0def-11e4-9da0- | | e1f29f417e2f | | e1f29f417e2f 192.168.100.0/24| | ce64b430-0def-11e4-9da2- | ENG | ce693ac8-0def-11e4-9da3- | | e1f29f417e2f | | e1f29f417e2f 192.168.101.0/24| +-------------------------------+------+------------------------------+
En el siguiente comando, el primer UUID es el UUID provider_router y el segundo UUID es el UUID de la subred HR.
network# neutron router-interface-add \ 181543df-40d1-4514-ea77-fddd78c389ff \ c0c53066-0def-11e4-9da0-e1f29f417e2f (HR subnet UUID) Added interface 7843841e-0e08-11e4-9da5-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.
En el siguiente comando, el primer UUID es el UUID provider_router y el segundo UUID es el UUID de la subred ENG.
network# neutron router-interface-add \ 181543df-40d1-4514-ea77-fddd78c389ff \ ce693ac8-0def-11e4-9da3-e1f29f417e2f Added interface 89289b8e-0e08-11e4-9da6-e1f29f417e2f to router 181543df-40d1-4514-ea77-fddd78c389ff.
Véase también
Un usuario cliente realiza esta procedimiento mediante el panel de control de OpenStack Horizon.
Inicie sesión tal como se describe en Cómo acceder al panel de control de OpenStack, con las credenciales del usuario cliente.
El separador IP flotantes muestra que la dirección IP flotante 10.134.13.9 está asignada.
La ventana Proyecto -> Instancias muestra que la dirección IP flotante está asociada con la instancia de VM.
Si seleccionó un par de claves (clave pública SSH) cuando inició una instancia de VM, entonces esa clave SSH se agregará al archivo authorized_keys para el usuario root en la instancia de VM.
global# ssh root@10.134.13.9 Last login: Fri Jul 18 00:37:39 2014 from 10.132.146.13 Oracle Corporation SunOS 5.11 11.2 June 2014 root@host-192-168-101-3:~# uname -a SunOS host-192-168-101-3 5.11 11.2 i86pc i386 i86pc root@host-192-168-101-3:~# zoneadm list -cv ID NAME STATUS PATH BRAND IP 2 instance-00000001 running / solaris excl root@host-192-168-101-3:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok -- -- net0/dhcp inherited ok -- 192.168.101.3/24
Puede usar comandos de filtro IP, como ipf, ippool y ipnat, y comandos de redes, como dladm y ipadm, para observar y resolver el problema de la configuración realizada por 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.13.8/24 l3ed527f842_0_0/v4a static ok -- 10.134.13.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]