Instalación y configuración de OpenStack (Kilo) en Oracle® Solaris

Salir de la Vista de impresión

Actualización: Junio de 2016
 
 

Creación de red externa

Después de crear el enrutador, debe configurar la red externa. Mediante el gateway de la red externa, los usuarios en las redes internas de la nube pueden conectarse a Internet.

En la siguiente figura, se muestra cómo se usa un único enrutador para las comunicaciones de red de los proyectos de la nube.

Figura 3  Enrutador de proveedor con modelo de redes privadas

image:Dos proyectos, cada uno con dos redes internas y dos instancias de VM

La figura muestra lo siguiente:

  • Dos proyectos (Tenant A y Tenant B)

  • Cuatro VM (VM1, VM2, VM3 y VM4)

  • Cuatro subredes (HR, ENG, IT y ACCT)

  • Enrutador

  • Red externa

Cuando permite que una red interna tenga acceso a la red externa, la dirección IP de la VM se asigna a una de las direcciones flotantes que se asignan a la red externa.

Cómo crear la red externa

En este procedimiento, se muestra cómo crear una red virtual que representa una red externa. Esta red virtual no usa DHCP. En cambio, se crean y asignan direcciones IP flotantes a los proyectos, y las usan las instancias de VM de Nova de esos proyectos. Estos pasos crean un tipo de red VLAN, pero el procedimiento se aplica para crear otros tipos de red, como una red plana.

Puede crear la red externa de forma independiente a la creación de redes internas.

Antes de empezar

Complete la configuración del conmutador virtual elástico. Para obtener más información, consulte Cómo instalar y configurar Neutron, particularmente los pasos para configurar EVS.

  1. Establezca las variables de shell global para Neutron.
    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
  2. (Opcional) Obtenga el rango de VLAN.
    controller# evsadm show-controlprop -p vlan-range
  3. Cree una red externa.
    controller# neutron net-create --provider:network_type=vlan \
    --provider:segmentation_id=VLAN-nbr \
    --router:external network-name
    

    En este paso, se supone que ya se creó una red VLAN como se describe en Cómo instalar y configurar Neutron. El valor de segmentation_id es el ID de la red VLAN, cuyo rango definió cuando configuró el EVS.


    Notas -  Si está creando una red plana, no es necesario que especifique un ID de segmentación.
  4. Cree una subred de la red externa.

    La agrupación de asignaciones consta de un rango de direcciones IP flotantes que está asignado a la subred.

    controller# neutron subnet-create --name subnet-name --disable-dhcp \
       --allocation-pool start=start-IP,end=end-IP \
       network-name subnet-IP
  5. Agregue la red externa al enrutador.
    controller# neutron router-gateway-set router-name ext-network-ID

    Notas -  Por defecto, SNAT se activa cuando ejecuta este comando. Con SNAT activado, las VM de la red privada pueden acceder a la red externa. No obstante, no es posible acceder a las instancias en sí desde el exterior de la nube. Para desactivar SNAT, especifique la opción –--disable-snat con el subcomando neutron router-gateway-set.
  6. (Opcional) Muestra la información sobre el enrutador.
    controller# neutron router-show router-name
Ejemplo 2  Creación de red externa

En este ejemplo, se muestra cómo crear la red externa para prepararla para que las redes internas de la nube la usen.

Para crear una red plana, consulte también el ejemplo proporcionado en la sección 2 de https://blogs.oracle.com/openstack/tags/juno.

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                      |
+-----------------------+-------------------------------------------------------+

Véase también

Cómo proporcionar conectividad externa a las redes internas

Use este procedimiento para activar una red interna para acceder a la red pública más amplia. Este procedimiento supone que ya existen redes internas para proyectos específicos. Para crear una red interna de proyecto utilizando el panel de control, consulte Creación de redes internas para proyectos.

Antes de empezar

Antes de continuar, debe obtener el nombre de subred que necesita acceso público.

  1. Establezca las variables de shell global para Neutron.
    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
  2. Identifique el ID de la subred que requiere acceso externo.
    controller# neutron subnet-list | grep subnet-name
  3. (Opcional) Obtenga el nombre del enrutador.
    controller# neutron router-list
  4. Agregue el ID de la subred como interfaz al enrutador.
    controller# neutron router-interface-add router-name subnetID
Ejemplo 3  Conexión de una red interna a una red externa

Este ejemplo usa la red interna HR creada en Cómo configurar una red para un proyecto. La red HR, cuya subred es HR_Subnet, requiere acceso a la red pública.

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.

Cómo observar la configuración de agente L3

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.

  1. Muestre las VNIC creadas por neutron-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
    
  2. Muestre las direcciones IP creadas por neutron-l3-agent.
    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
  3. Muestre las reglas de filtro IP.
    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; };
  4. Muestre las reglas de IP NAT.
    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]