Self-service Netzwerk

Wenn Sie Netzwerk Option 2 wählen, können Sie auch ein privates self-service Netzwerk erstellen, dass eine Verbindung zur physikalischen Netzwerkinfrastruktur via NAT herstellt. Dieses Netzwerk enthält einen DHCP Server, der IP-Adressen an Instanzen verteilt. Eine Instanz in diesem Netzwerk kann automatisch auf externe Netzwerke, wie das Internet, zugreifen. Aber Zugriff auf eine Instanz in diesem Netzwerk, z.B. aus dem Internet, erfordert eine :term: ‚Floating IP-Adresse‘.

Der demo Benutzer oder andere unprivilegierte Benutzer können dieses Netzwerk erstellen, denn es erlaubt nur Verbindung zu Instanzen im demo Projekt.

Warnung

Sie müssen erst das Anbieternetzwerk erstellen und dann das self-service Netzwerk.

Bemerkung

Die folgenden Instruktionen und Diagramme verwenden beispielhafte IP-Adressbereiche. Sie müssen sie entsprechend Ihrer Umgebung anpassen.

Networking Option 2: Self-service networks - Overview

Netzwerk Option 2: Self-service Netzwerke - Übersicht

Networking Option 2: Self-service networks - Connectivity

Network Option 2: Self-service Netzwerke - Konnektivität

Erstellen des self-service Netzwerks

  1. Sourcen Sie die demo-Anmeldeinformationen um Zugriff auf Benutzer-CLI Kommandos zu bekommen:

    $ . demo-openrc
    
  2. Erzeuge das Netzwerk:

    $ openstack network create selfservice
    
    Created a new network:
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | UP                                   |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | created_at              | 2016-11-04T18:20:59Z                 |
    | description             |                                      |
    | headers                 |                                      |
    | id                      | 7c6f9b37-76b4-463e-98d8-27e5686ed083 |
    | ipv4_address_scope      | None                                 |
    | ipv6_address_scope      | None                                 |
    | mtu                     | 1450                                 |
    | name                    | selfservice                          |
    | port_security_enabled   | True                                 |
    | project_id              | 3828e7c22c5546e585f27b9eb5453788     |
    | project_id              | 3828e7c22c5546e585f27b9eb5453788     |
    | revision_number         | 3                                    |
    | router:external         | Internal                             |
    | shared                  | False                                |
    | status                  | ACTIVE                               |
    | subnets                 |                                      |
    | tags                    | []                                   |
    | updated_at              | 2016-11-04T18:20:59Z                 |
    +-------------------------+--------------------------------------+
    

    Nicht-privilegierte Benutzer können diesem Kommando üblicherweise keine zusätzlichen Parameter hinzufügen. Der Dienst wählt automatisch Parameter mittels Informationen aus den folgenden Dateien:

    ml2_conf.ini:

    [ml2]
    tenant_network_types = vxlan
    
    [ml2_type_vxlan]
    vni_ranges = 1:1000
    
  3. Erstellen Sie ein Subnetz für das Netzwerk:

    $ openstack subnet create --network selfservice \
      --dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY \
      --subnet-range SELFSERVICE_NETWORK_CIDR selfservice
    

    Ersetzen Sie DNS_RESOLVER durch die IP-Adresse eines DNS-Auflösungsdienstes. In den meisten Fällen können Sie einen aus der Datei /etc/resolv.conf verwenden.

    Ersetzen Sie SELFSERVICE_NETWORK_GATEWAY mit dem Gateway, dass Sie für das self-service Netzwerk verwenden wollen, typischerweise die „.1“ IP Adresse.

    Ersetzen Sie SELFSERVICE_NETWORK_CIDR mit dem Subnetz, dass Sie für das self-service Netzwerk verwenden wollen. Sie können beliebige Werte verwenden, allerdings empfehlen wir ein Netzwerk aus RFC 1918.

    Beispiel

    Das self-service Netzwerk verwendet 172.16.1.0/24 mit einem Gateway auf 172.16.1.1. Ein DHCP-Server weist jeder Instanz eine IP-Adresse aus dem Bereich 172.16.1.2 bis 172.16.1.254 zu. Alle <Instanzen verwenden 8.8.4.4 zur DNS Namensauflösung.

    $ openstack subnet create --network selfservice \
      --dns-nameserver 8.8.4.4 --gateway 172.16.1.1 \
      --subnet-range 172.16.1.0/24 selfservice
    
    Created a new subnet:
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 172.16.1.2-172.16.1.254              |
    | cidr              | 172.16.1.0/24                        |
    | created_at        | 2016-11-04T18:30:54Z                 |
    | description       |                                      |
    | dns_nameservers   | 8.8.4.4                              |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 172.16.1.1                           |
    | headers           |                                      |
    | host_routes       |                                      |
    | id                | 5c37348e-e7da-439b-8c23-2af47d93aee5 |
    | ip_version        | 4                                    |
    | ipv6_address_mode | None                                 |
    | ipv6_ra_mode      | None                                 |
    | name              | selfservice                          |
    | network_id        | b9273876-5946-4f02-a4da-838224a144e7 |
    | project_id        | 3828e7c22c5546e585f27b9eb5453788     |
    | project_id        | 3828e7c22c5546e585f27b9eb5453788     |
    | revision_number   | 2                                    |
    | service_types     | []                                   |
    | subnetpool_id     | None                                 |
    | updated_at        | 2016-11-04T18:30:54Z                 |
    +-------------------+--------------------------------------+
    

Erstellen eines Routers

Self-service Netzwerke verbinden mittels virtuellen Routern, die typischerweise ein bidirektionales NAT darstellen, zu Anbieternetzwerken. Jeder Router enthält ein Interface in mindestens einem self-service Netzwerk sowie ein Gateway zum Anbieternetzwerk.

Das Anbieternetzwerk muss die Option router:external enthalten, damit self-service-Router eine Verbindung zu externen Netzwerken wie z. B. dem Internet herstellen können. Der admin oder ein anderer privilegierter Benutzer muss diese Option entweder während der Netzwerkerstellung setzen oder zu einem späteren Zeitpunkt hinzufügen. In diesem Fall wurde die Option router:external durch den Parameter --external während des Erstellens des provider-Netzwerkes gesetzt.

  1. Sourcen Sie die demo-Anmeldeinformationen um Zugriff auf Benutzer-CLI Kommandos zu bekommen:

    $ . demo-openrc
    
  2. Den Router erstellen:

    $ openstack router create router
    
    Created a new router:
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | UP                                   |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | created_at              | 2016-11-04T18:32:56Z                 |
    | description             |                                      |
    | external_gateway_info   | null                                 |
    | flavor_id               | None                                 |
    | headers                 |                                      |
    | id                      | 67324374-396a-4db6-9443-c70be167a42b |
    | name                    | router                               |
    | project_id              | 3828e7c22c5546e585f27b9eb5453788     |
    | project_id              | 3828e7c22c5546e585f27b9eb5453788     |
    | revision_number         | 2                                    |
    | routes                  |                                      |
    | status                  | ACTIVE                               |
    | updated_at              | 2016-11-04T18:32:56Z                 |
    +-------------------------+--------------------------------------+
    
  3. Fügen Sie das self-service Netzwerk Subnetz als Interface auf dem Router hinzu:

    $ openstack router add subnet router selfservice
    
  4. Setzen Sie ein Gateway für das Anbieternetzwerk auf dem Router:

    $ openstack router set router --external-gateway provider
    

Überprüfung der Funktion

Bevor Sie fortfahren wird empfohlen, die Funkionalität zu prüfen und alle Probleme zu beseitigen. In den folgenden Schritten werden die IP-Adressbereiche aus den Beispielen zur Erzeugung von Netzen und Subnetzen verwendet.

  1. Sourcen Sie die admin Anmeldeinformationen auf dem Controller-Knoten, um Zugriff auf Admin-CLI-Befehle zu erhalten:

    $ . admin-openrc
    
  2. Lassen Sie die Netzwerk-Namensräume auflisten. Sie sollten einen Namensraum qrouter und zwei Namensräume qdhcp sehen.

    $ ip netns
    
    qrouter-89dd2083-a160-4d75-ab3a-14239f01ea0b
    qdhcp-7c6f9b37-76b4-463e-98d8-27e5686ed083
    qdhcp-0e62efcd-8cee-46c7-b163-d8df05c3c5ad
    
  3. Liste alle Ports auf dem Router auf, um die Gateway IP-Adresse im Anbieternetzwerk zu bestimmen:

    $ openstack port list --router router
    
    +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
    | ID                                   | Name | MAC Address       | Fixed IP Addresses                                                            | Status |
    +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
    | bff6605d-824c-41f9-b744-21d128fc86e1 |      | fa:16:3e:2f:34:9b | ip_address='172.16.1.1', subnet_id='3482f524-8bff-4871-80d4-5774c2730728'     | ACTIVE |
    | d6fe98db-ae01-42b0-a860-37b1661f5950 |      | fa:16:3e:e8:c1:41 | ip_address='203.0.113.102', subnet_id='5cc70da8-4ee7-4565-be53-b9c011fca011'  | ACTIVE |
    +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
    
  4. Pingen Sie die IP-Adresse vom Controller-Knoten oder einem anderen Host im physikalischen Anbieternetzwerk.

    $ ping -c 4 203.0.113.102
    
    PING 203.0.113.102 (203.0.113.102) 56(84) bytes of data.
    64 bytes from 203.0.113.102: icmp_req=1 ttl=64 time=0.619 ms
    64 bytes from 203.0.113.102: icmp_req=2 ttl=64 time=0.189 ms
    64 bytes from 203.0.113.102: icmp_req=3 ttl=64 time=0.165 ms
    64 bytes from 203.0.113.102: icmp_req=4 ttl=64 time=0.216 ms
    
    --- 203.0.113.102 ping statistics ---
    rtt min/avg/max/mdev = 0.165/0.297/0.619/0.187 ms
    

Kehren sie zurück zu Launch an instance - Create virtual networks.