Self-service Netzwerk

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:

    $ neutron net-create selfservice
    Created a new network:
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | True                                 |
    | id                    | 7c6f9b37-76b4-463e-98d8-27e5686ed083 |
    | mtu                   | 0                                    |
    | name                  | selfservice                          |
    | port_security_enabled | True                                 |
    | router:external       | False                                |
    | shared                | False                                |
    | status                | ACTIVE                               |
    | subnets               |                                      |
    | tenant_id             | f5b2ccaa75ac413591f12fcaa096aa5c     |
    +-----------------------+--------------------------------------+
    

    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:

    $ neutron subnet-create --name selfservice \
      --dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY \
      selfservice SELFSERVICE_NETWORK_CIDR
    

    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.

    $ neutron subnet-create --name selfservice \
      --dns-nameserver 8.8.4.4 --gateway 172.16.1.1 \
      selfservice 172.16.1.0/24
    Created a new subnet:
    +-------------------+------------------------------------------------+
    | Field             | Value                                          |
    +-------------------+------------------------------------------------+
    | allocation_pools  | {"start": "172.16.1.2", "end": "172.16.1.254"} |
    | cidr              | 172.16.1.0/24                                  |
    | dns_nameservers   | 8.8.4.4                                        |
    | enable_dhcp       | True                                           |
    | gateway_ip        | 172.16.1.1                                     |
    | host_routes       |                                                |
    | id                | 3482f524-8bff-4871-80d4-5774c2730728           |
    | ip_version        | 4                                              |
    | ipv6_address_mode |                                                |
    | ipv6_ra_mode      |                                                |
    | name              | selfservice                                    |
    | network_id        | 7c6f9b37-76b4-463e-98d8-27e5686ed083           |
    | subnetpool_id     |                                                |
    | tenant_id         | f5b2ccaa75ac413591f12fcaa096aa5c               |
    +-------------------+------------------------------------------------+
    

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 router:external Option beinhalten, 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 bei der Netzwerkerstellung oder später hinzufügen. In diesem Fall können wir das vorhandene provider Anbieternetzwerk hinzufügen.

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

    $ . admin-openrc
    
  2. Fügen Sie die router: external Option zum provider Netzwerk hinzu:

    $ neutron net-update provider --router:external
    Updated network: provider
    
  3. Sourcen Sie die demo Anmeldeinformationen um Zugriff auf Benutzer-CLI Kommandos zu bekommen:

    $ . demo-openrc
    
  4. Den Router erstellen:

    $ neutron router-create router
    Created a new router:
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | True                                 |
    | external_gateway_info |                                      |
    | id                    | 89dd2083-a160-4d75-ab3a-14239f01ea0b |
    | name                  | router                               |
    | routes                |                                      |
    | status                | ACTIVE                               |
    | tenant_id             | f5b2ccaa75ac413591f12fcaa096aa5c     |
    +-----------------------+--------------------------------------+
    
  5. Fügen Sie das self-service Netzwerk Subnetz als Interface auf dem Router hinzu:

    $ neutron router-interface-add router selfservice
    Added interface bff6605d-824c-41f9-b744-21d128fc86e1 to router router.
    
  6. Setzen Sie ein Gateway für das Anbieternetzwerk auf dem Router:

    $ neutron router-gateway-set router provider
    Set gateway for router router
    

Überprüfen Sie den Betrieb

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:

    $ neutron router-port-list router
    +--------------------------------------+------+-------------------+------------------------------------------+
    | id                                   | name | mac_address       | fixed_ips                                |
    +--------------------------------------+------+-------------------+------------------------------------------+
    | bff6605d-824c-41f9-b744-21d128fc86e1 |      | fa:16:3e:2f:34:9b | {"subnet_id":                            |
    |                                      |      |                   | "3482f524-8bff-4871-80d4-5774c2730728",  |
    |                                      |      |                   | "ip_address": "172.16.1.1"}              |
    | d6fe98db-ae01-42b0-a860-37b1661f5950 |      | fa:16:3e:e8:c1:41 | {"subnet_id":                            |
    |                                      |      |                   | "5cc70da8-4ee7-4565-be53-b9c011fca011",  |
    |                                      |      |                   | "ip_address": "203.0.113.102"}           |
    +--------------------------------------+------+-------------------+------------------------------------------+
    
  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
    

Zurück zu Launch an instance - Create virtual networks.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.