セルフサービスネットワーク¶
ネットワークオプション 2 を選択した場合、セルフサービス (プライベート) ネットワークも作成でき、このネットワークは NAT 経由で物理ネットワークインフラに接続されます。このネットワークには、インスタンスに IP アドレスを提供する DHCP サーバーがあります。このネットワークにあるインスタンスは、インターネットなどの外部ネットワークに自動的にアクセスできます。ただし、インターネットなどの外部ネットワークからこのネットワークにあるインスタンスにアクセスする場合、Floating IP アドレス が必要です。
demo
ユーザーや他の非特権ユーザーはこのネットワークを作成できます。なぜなら、このネットワークは demo
プロジェクト内のインスタンスに対する接続性のみを提供するからです。
警告
セルフサービスネットワークの前に プロバイダーネットワークを作成する 必要があります。
注釈
以下の説明と図は、サンプルの IP アドレス範囲を使用します。お使いの環境に合わせて調整する必要があります。
セルフサービスネットワークの作成¶
コントローラーノードにおいて、
demo
クレデンシャルを読み込み、利用者用の CLI コマンドへのアクセス権を取得します。$ . demo-openrc
ネットワークを作成します。
$ 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
ネットワークにサブネットを作成します。
$ 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.
コントローラーノードにおいて、
demo
クレデンシャルを読み込み、利用者用の CLI コマンドへのアクセス権を取得します。$ . demo-openrc
ルーターを作成します。
$ 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 | +-------------------------+--------------------------------------+
ルーターのインターフェースとして、セルフサービスネットワークのサブネットを追加します。
$ openstack router add subnet router selfservice
ルーターにおいて、ゲートウェイをプロバイダーネットワークに設定します。
$ openstack router set router --external-gateway provider
動作検証¶
この先に進む前に、動作を検証して、問題をすべて解決しておくことを推奨します。以下の手順は、ネットワークとサブネットの作成例にある IP アドレス範囲を使用しています。
コントローラーノードにおいて、
admin
クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。$ . admin-openrc
ネットワーク名前空間を一覧表示します。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 アドレスを確認します。
$ 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 | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------+--------+
コントローラーノードまたは物理プロバイダーネットワークにあるホストから、この 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
インスタンスの起動 - 仮想ネットワークの作成 に戻ります。