セルフサービスネットワーク

セルフサービスネットワーク

ネットワークオプション 2 を選択した場合、セルフサービス (プライベート) ネットワークも作成でき、このネットワークは NAT 経由で物理ネットワークインフラに接続されます。このネットワークには、インスタンスに IP アドレスを提供する DHCP サーバーがあります。このネットワークにあるインスタンスは、インターネットなどの外部ネットワークに自動的にアクセスできます。ただし、インターネットなどの外部ネットワークからこのネットワークにあるインスタンスにアクセスする場合、Floating IP アドレス が必要です。

demo ユーザーや他の非特権ユーザーはこのネットワークを作成できます。なぜなら、このネットワークは demo プロジェクト内のインスタンスに対する接続性のみを提供するからです。

警告

セルフサービスネットワークの前に プロバイダーネットワークを作成する 必要があります。

注釈

以下の説明と図は、サンプルの IP アドレス範囲を使用します。お使いの環境に合わせて調整する必要があります。

Networking Option 2: Self-service networks - Overview

ネットワークオプション 2: セルフサービスネットワーク - 概要

Networking Option 2: Self-service networks - Connectivity

ネットワークオプション 2: セルフサービスネットワーク - 接続

セルフサービスネットワークの作成

  1. コントローラーノードにおいて、demo クレデンシャルを読み込み、利用者用の CLI コマンドへのアクセス権を取得します。

    $ . demo-openrc
    
  2. ネットワークを作成します。

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

    非特権ユーザーは、一般的にこのコマンドに追加パラメーターを指定できません。サービスは、以下のファイルの情報を使用して、自動的にパラメーターを選択します。

    ml2_conf.ini:

    [ml2]
    tenant_network_types = vxlan
    
    [ml2_type_vxlan]
    vni_ranges = 1:1000
    
  3. ネットワークにサブネットを作成します。

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

    DNS_RESOLVER は DNS リソルバーの IP アドレスで置き換えます。ほとんどの場合、ホストの /etc/resolv.conf に書かれているアドレスのいずれかが使用できるでしょう。

    SELFSERVICE_NETWORK_GATEWAY をセルフサービスネットワークにおいて使用したいゲートウェイに置き換えます。通常は「.1」の IP アドレスです。

    SELFSERVICE_NETWORK_CIDR をセルフサービスネットワークに使用したいサブネットに置き換えます。RFC 1918 にあるネットワークを使用することを推奨しますが、任意の値を使用できます。

    セルフサービスネットワークは 172.16.1.0/24 を使用し、ゲートウェイは 172.16.1.1 です。 DHCP サーバーは、各インスタンスに 172.16.1.2 から 172.16.1.254 までの範囲の IP アドレスを割り当てます。すべてのインスタンスは DNS リゾルバーとして 8.8.4.4 を使用します。

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

ルーターの作成

セルフサービスネットワークは、仮想ルーターを使ってプロバイダーネットワークと接続され、通常仮想ルーターでは双方向 NAT が行われます。各ルーターは、少なくとも 1 つのセルフサービスネットワークに接続されるインターフェースと、プロバイダーネットワークに接続されるゲートウェイを持ちます。

The provider network must include the router:external option to enable self-service routers to use it for connectivity to external networks such as the Internet. The admin or other privileged user must include this option during network creation or add it later. In this case, the router:external option was set by using the --external parameter when creating the provider network.

  1. コントローラーノードにおいて、admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。

    $ . admin-openrc
    
  2. demo クレデンシャルを読み込み、利用者用 CLI コマンドへのアクセス権を取得します。

    $ . demo-openrc
    
  3. ルーターを作成します。

    $ 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                 |
    +-------------------------+--------------------------------------+
    
  4. ルーターのインターフェースとして、セルフサービスネットワークのサブネットを追加します。

    $ neutron router-interface-add router selfservice
    
    Added interface bff6605d-824c-41f9-b744-21d128fc86e1 to router router.
    
  5. ルーターにおいて、ゲートウェイをプロバイダーネットワークに設定します。

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

動作検証

この先に進む前に、動作を検証して、問題をすべて解決しておくことを推奨します。以下の手順は、ネットワークとサブネットの作成例にある IP アドレス範囲を使用しています。

  1. コントローラーノードにおいて、admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。

    $ . admin-openrc
    
  2. ネットワーク名前空間を一覧表示します。1 つの qrouter 名前空間と 2 つの qdhcp 名前空間があるでしょう。

    $ ip netns
    
    qrouter-89dd2083-a160-4d75-ab3a-14239f01ea0b
    qdhcp-7c6f9b37-76b4-463e-98d8-27e5686ed083
    qdhcp-0e62efcd-8cee-46c7-b163-d8df05c3c5ad
    
  3. ルーターのポートを一覧表示して、プロバイダーネットワークのゲートウェイ IP アドレスを確認します。

    $ 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. コントローラーノードまたは物理プロバイダーネットワークにあるホストから、この IP アドレスに ping します。

    $ 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
    

インスタンスの起動 - 仮想ネットワークの作成 に戻ります。

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.