ネットワークオプション 2 を選択した場合、仮想プロジェクトネットワークも作成でき、このネットワークはレイヤー 3 (ルーティング) と NAT 経由で物理ネットワークインフラに接続されます。このネットワークには、インスタンスに IP アドレスを提供する DHCP サーバーがあります。このネットワークにあるインスタンスは、インターネットなどの外部ネットワークに自動的にアクセスできます。ただし、インターネットなどの外部ネットワークからこのネットワークにあるインスタンスにアクセスする場合、Floating IP アドレス が必要です。
demo ユーザーや他の非特権ユーザーはこのネットワークを作成できます。なぜなら、このネットワークは demo プロジェクト内のインスタンスに対する接続性のみを提供するからです。
警告
プライベートプロジェクトネットワークの前に パブリックプロバイダーネットワークを作成する 必要があります。
注釈
以下の説明と図は、サンプルの IP アドレス範囲を使用します。お使いの環境に合わせて調整する必要があります。
ネットワークオプション 2: セルフサービスネットワーク - 概要
ネットワークオプション 2: セルフサービスネットワーク - 接続
コントローラーノードにおいて、demo クレデンシャルを読み込み、利用者用の CLI コマンドへのアクセス権を取得します。
$ source demo-openrc.sh
ネットワークを作成します。
$ neutron net-create private
Created a new network:
+-----------------------+--------------------------------------+
| Field | Value |
+-----------------------+--------------------------------------+
| admin_state_up | True |
| id | 7c6f9b37-76b4-463e-98d8-27e5686ed083 |
| mtu | 0 |
| name | private |
| port_security_enabled | True |
| router:external | False |
| shared | False |
| status | ACTIVE |
| subnets | |
| tenant_id | f5b2ccaa75ac413591f12fcaa096aa5c |
+-----------------------+--------------------------------------+
非特権ユーザーは、一般的にこのコマンドに追加パラメーターを指定できません。サービスは、以下のファイルの情報を使用して、自動的にパラメーターを選択します。
ml2_conf.ini:
[ml2]
tenant_network_types = vxlan
[ml2_type_vxlan]
vni_ranges = 1:1000
ネットワークにサブネットを作成します。
$ neutron subnet-create private PRIVATE_NETWORK_CIDR --name private \
--dns-nameserver DNS_RESOLVER --gateway PRIVATE_NETWORK_GATEWAY
PRIVATE_NETWORK_CIDR をプライベートネットワークに使用したいサブネットに置き換えます。RFC 1918 にあるネットワークを使用することを推奨しますが、任意の値を使用できます。
DNS_RESOLVER は DNS リソルバーの IP アドレスで置き換えます。ほとんどの場合、ホストの /etc/resolv.conf に書かれているアドレスのいずれかが使用できるでしょう。
PRIVATE_NETWORK_GATEWAY をプライベートネットワークにおいて使用したいゲートウェイに置き換えます。通常は「.1」の IP アドレスです。
例
プライベートネットワークは 172.16.1.0/24 を使用し、ゲートウェイは 172.16.1.1 です。 DHCP サーバーは、各インスタンスに 172.16.1.2 から 172.16.1.254 までの範囲の IP アドレスを割り当てます。すべてのインスタンスは DNS リゾルバーとして 8.8.4.4 を使用します。
$ neutron subnet-create private 172.16.1.0/24 --name private \
--dns-nameserver 8.8.4.4 --gateway 172.16.1.1
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 | private |
| network_id | 7c6f9b37-76b4-463e-98d8-27e5686ed083 |
| subnetpool_id | |
| tenant_id | f5b2ccaa75ac413591f12fcaa096aa5c |
+-------------------+------------------------------------------------+
プライベートプロジェクトネットワークは、仮想ルーターを使用して、パブリックプロバイダーネットワークに接続します。各ルーターは、少なくとも 1 つのプライベートプロジェクトネットワークに接続されるインターフェースと、パブリックプロバイダーネットワークに接続されるゲートウェイを持ちます。
パブリックプロバイダーネットワークには router: external オプションを指定しておく必要があります。これにより、プロジェクトルーターが、インターネットなどの外部ネットワークへ接続するために、このネットワークを使用できるようになります。admin や他の非特権ユーザーは、このオプションをネットワークの作成中に含めるか、後から追加する必要があります。このガイドの場合、このオプションを既存の public プロバイダーネットワークに追加できます。
コントローラーノードにおいて、admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。
$ source admin-openrc.sh
router: external オプションをプロバイダーネットワーク public に追加します。
$ neutron net-update public --router:external
Updated network: public
demo クレデンシャルを読み込み、利用者用 CLI コマンドへのアクセス権を取得します。
$ source demo-openrc.sh
ルーターを作成します。
$ 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 |
+-----------------------+--------------------------------------+
ルーターのインターフェースとして、プライベートネットワークのサブネットを追加します。
$ neutron router-interface-add router private
Added interface bff6605d-824c-41f9-b744-21d128fc86e1 to router router.
ルーターにおいて、ゲートウェイをパブリックネットワークに設定します。
$ neutron router-gateway-set router public
Set gateway for router router
この先に進む前に、動作を検証して、問題をすべて解決しておくことを推奨します。以下の手順は、ネットワークとサブネットの作成例にある IP アドレス範囲を使用しています。
コントローラーノードにおいて、admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。
$ source admin-openrc.sh
ネットワーク名前空間を一覧表示します。1 つの qrouter 名前空間と 2 つの qdhcp 名前空間があるでしょう。
$ ip netns
qrouter-89dd2083-a160-4d75-ab3a-14239f01ea0b
qdhcp-7c6f9b37-76b4-463e-98d8-27e5686ed083
qdhcp-0e62efcd-8cee-46c7-b163-d8df05c3c5ad
ルーターのポートを一覧表示して、パブリックプロバイダーネットワークのゲートウェイ 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"} |
+--------------------------------------+------+-------------------+------------------------------------------+
コントローラーノードまたはパブリックな物理ネットワークにあるホストから、この 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
インスタンスの起動 - 仮想ネットワークの作成 に戻ります。
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.