DNS 連携

DNS 連携

このページでは、 Networking サービスの DNS 関連の機能の使用方法を説明します。ここでは以下の 2 種類の DNS 関連機能を説明します。

  • Networking サービスが提供する内部 DNS 機能と Compute サービスとの連携

  • 外部 DNSaaS (DNS-as-a-Service) との Compute サービスと Networking サービスの連携

ユーザーは、ポート、ネットワーク、Floating IP に関連付けられた 2 つの属性を使って、 DNS に関する Networking サービスの動作を制御できます。下表に、これらのリソースのそれぞれでどの属性が利用可能かを示します。

リソース

dns_name dns_domain

ポート

はい

いいえ

ネットワーク

いいえ

はい

Floating IP

はい

はい

Networking サービス内部の DNS 解決

Networking サービスでは、内部 DNS によりポートに割り当てられる名前をユーザーが制御できます。この機能を有効にするには、以下のようにします。

  1. /etc/neutron/neutron.conf ファイルを編集し、 [default] セクションの dns_domain パラメーターに (デフォルト値の) openstacklocal 以外の値を割り当てます

    dns_domain = example.org.
    
  2. /etc/neutron/plugins/ml2/ml2_conf.ini[ml2] セクションの extension_driversdns を追加します。以下は例です。

    [ml2]
    extension_drivers = port_security,dns
    

neutron-server を再起動すると、ユーザーはポートの dns_name 属性を設定できるようになります。

注釈

この機能を有効にするには、 Networking サービスの外部 DNS サービスとの連携が有効になっている必要があります。詳細は OpenStack Networking の外部 DNS サービスとの連携の設定 で説明しています。

以下では、 dns_name 属性の値が my-port でポートを作成しています。

注釈

Networking サービスの内部 DNS によってこのポートに割り当てられる名前が、レスポンスの dns_assignment 属性に入っています。

$ neutron port-create my-net --dns_name my-port
Created a new port:
+-----------------------+-----------------------------------------------------------------------------------+
| Field                 | Value                                                                             |
+-----------------------+-----------------------------------------------------------------------------------+
| admin_state_up        | True                                                                              |
| allowed_address_pairs |                                                                                   |
| binding:vnic_type     | normal                                                                            |
| device_id             |                                                                                   |
| device_owner          |                                                                                   |
| dns_assignment        | {"hostname": "my-port", "ip_address": "10.0.1.3", "fqdn": "my-port.example.org."} |
| dns_name              | my-port                                                                           |
| fixed_ips             | {"subnet_id":"6141b474-56cd-430f-b731-71660bb79b79", "ip_address": "10.0.1.3"}    |
| id                    | fb3c10f4-017e-420c-9be1-8f8c557ae21f                                              |
| mac_address           | fa:16:3e:aa:9b:e1                                                                 |
| name                  |                                                                                   |
| network_id            | bf2802a0-99a0-4e8c-91e4-107d03f158ea                                              |
| port_security_enabled | True                                                                              |
| security_groups       | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635                                              |
| status                | DOWN                                                                              |
| tenant_id             | d5660cb1e6934612a01b4fb2fb630725                                                  |
+-----------------------+-----------------------------------------------------------------------------------+

この機能が有効になっている場合、 Compute サービスはインスタンス作成時にこの機能を活用します。起動中にインスタンスにポートを割り当てる際に、 Compute サービスはこれらのポートの dns_name 属性にそのインスタンスの hostname 属性を設定します。設定される値は、実際に見える値から DNS で使えない文字を除いたものになります。その結果、起動プロセスが終わった時には、割り当てられたポートは、それぞれのネットワークに対応する dnsmasq ではインスタンスの hostname で 参照できるようになっています。

以下は、インスタンスを作成し、割り当てられたポートの dns_name 属性に hostname がどのように設定されているかの例です。

$ nova boot --image cirros --flavor 42 \
  --nic net-id=37aaff3a-6047-45ac-bf4f-a825e56fd2b3 my_vm
+--------------------------------------+----------------------------------------------------------------+
| Property                             | Value                                                          |
+--------------------------------------+----------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                         |
| OS-EXT-AZ:availability_zone          |                                                                |
| OS-EXT-STS:power_state               | 0                                                              |
| OS-EXT-STS:task_state                | scheduling                                                     |
| OS-EXT-STS:vm_state                  | building                                                       |
| OS-SRV-USG:launched_at               | -                                                              |
| OS-SRV-USG:terminated_at             | -                                                              |
| accessIPv4                           |                                                                |
| accessIPv6                           |                                                                |
| adminPass                            | dB45Zvo8Jpfe                                                   |
| config_drive                         |                                                                |
| created                              | 2016-02-05T21:35:04Z                                           |
| flavor                               | m1.nano (42)                                                   |
| hostId                               |                                                                |
| id                                   | 66c13cb4-3002-4ab3-8400-7efc2659c363                           |
| image                                | cirros-0.3.4-x86_64-uec(b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f)  |
| key_name                             | -                                                              |
| locked                               | False                                                          |
| metadata                             | {}                                                             |
| name                                 | my_vm                                                          |
| os-extended-volumes:volumes_attached | []                                                             |
| progress                             | 0                                                              |
| security_groups                      | default                                                        |
| status                               | BUILD                                                          |
| tenant_id                            | d5660cb1e6934612a01b4fb2fb630725                               |
| updated                              | 2016-02-05T21:35:04Z                                           |
| user_id                              | 8bb6e578cba24e7db9d3810633124525                               |
+--------------------------------------+----------------------------------------------------------------+

$ neutron port-list --device_id 66c13cb4-3002-4ab3-8400-7efc2659c363
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+
| id                                   | name | mac_address       | fixed_ips                                                                             |
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+
| b3ecc464-1263-44a7-8c38-2d8a52751773 |      | fa:16:3e:a8:ce:b8 | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "172.24.5.8"}     |
|                                      |      |                   | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address":"2001:db8:10::8"}  |
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+

$ neutron port-show b3ecc464-1263-44a7-8c38-2d8a52751773
+-----------------------+---------------------------------------------------------------------------------------+
| Field                 | Value                                                                                 |
+-----------------------+---------------------------------------------------------------------------------------+
| admin_state_up        | True                                                                                  |
| allowed_address_pairs |                                                                                       |
| binding:vnic_type     | normal                                                                                |
| device_id             | 66c13cb4-3002-4ab3-8400-7efc2659c363                                                  |
| device_owner          | compute:None                                                                          |
| dns_assignment        | {"hostname": "my-vm", "ip_address": "172.24.5.8", "fqdn": "my-vm.example.org."}       |
|                       | {"hostname": "my-vm", "ip_address": "2001:db8:10::8", "fqdn": "my-vm.example.org."}   |
| dns_name              | my-vm                                                                                 |
| extra_dhcp_opts       |                                                                                       |
| fixed_ips             | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "172.24.5.8"}     |
|                       | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address": "2001:db8:10::8"} |
| id                    | b3ecc464-1263-44a7-8c38-2d8a52751773                                                  |
| mac_address           | fa:16:3e:a8:ce:b8                                                                     |
| name                  |                                                                                       |
| network_id            | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3                                                  |
| port_security_enabled | True                                                                                  |
| security_groups       | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635                                                  |
| status                | ACTIVE                                                                                |
| tenant_id             | d5660cb1e6934612a01b4fb2fb630725                                                      |
+-----------------------+---------------------------------------------------------------------------------------+

上記の例では、以下の点に注意してください。

  • ユーザーがインスタンスに渡した名前 my_vm は Compute サービスにより使用できない文字が取り除かれ、ポートの dns_name では my-vm になっています。

  • ポートの dns_assignment 属性では、 Networking サービスの内部 DNS での FQDN が my-vm.example.org であることが分かります。この FQDN は、ポートの dna_nameneutron.confdns_domain パラメーターに設定された値を結合したものです。

  • dns_assignment 属性を見ると、 Networking サービスの内部 DNS でのそのポートの hostnamemy-vm であることが分かります。

  • Compute サービスがインスタンス用のポートを作成する代わりに、ユーザーがポートを作成して dns_name 属性に値を割り当てることもできます。この場合、 dns_name 属性に割り当てられる値は、 Compute サービスがインスタンスの hostname に割り当て値、この例では my-vm と等しくなければいけません。さもなければ、インスタンスの起動は失敗します。

外部 DNS サービスとの連携

ユーザーは、Networking サービスと Compute サービスを外部 DNS と連携させることもできます。これを行うには、ユーザーは以下を行う必要があります。

  1. Networking サービス内部の DNS 解決 で説明されている機能を有効にします。

  2. 外部 DNS ドライバーを設定します。 Networking サービスには、 OpenStack DNS サービスを利用する参照実装のドライバーがあります。将来的には、 third party ベンダーが他の実装を提供することが期待されています。詳細な設定手順は OpenStack Networking の外部 DNS サービスとの連携の設定 を参照してください。

neutron-server の設定と再起動が終わると、ユーザーは以下の節で説明する 3 つのユースケースが実現できる機能を使えるようになります。各ユースケースに共通の事項として以下があります。

  • ここの例では外部 DNS として OpenStack DNS サービスを前提とします。

  • A レコード、AAAA レコード、PTR レコードが DNS サービスにより作成されます。

  • ユースケースを開始する前に、ユーザーは DNS サービスの自分のプロジェクト下に DNS ゾーンを作成しておかなければいけません。この DNS ゾーンに A レコードと AAAA レコードが作成されます。以下のユースケースの説明では、ゾーン example.org がすでに作成されているものとします。

  • PTR レコードは、管理者権限を持つプロジェクトが所有するゾーンに作成されます。詳細は OpenStack Networking の外部 DNS サービスとの連携の設定 を参照してください。

ユースケース 1: ポートを外部 DNS サービスで直接公開する

このユースケースでは、ユーザーは外部からアクセス可能なネットワーク上にポートを作成したりインスタンスを起動したりします。外部 DNS サービスにポートを公開する手順は以下の通りです。

  1. ネットワークの dns_domain 属性に有効なドメイン名を割り当てます。このドメイン名の末尾はピリオド (.) でなければいけません。

  2. 外部からアクセス可能なネットワークを指定してインスタンスを起動します。別の方法としては、 dns_name 属性に有効な値を指定して、外部からアクセス可能なネットワーク上にポートを作成します。このポートをインスタンス起動時に使用する場合には、 dns_name に割り当てる値は Compute サービスがインスタンスに割り当てる hostname と同じでなければいけません。さもないと、起動に失敗します。

これらの手順を実行すると、ポートの DNS データが外部 DNS サービスで公開されます。例を示します。

$ neutron net-list
+--------------------------------------+----------+----------------------------------------------------------+
| id                                   | name     | subnets                                                  |
+--------------------------------------+----------+----------------------------------------------------------+
| 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | public   | a67cfdf7-9d5d-406f-8a19-3f38e4fc3e74                     |
|                                      |          | cbd8c6dc-ca81-457e-9c5d-f8ece7ef67f8                     |
| 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | external | 277eca5d-9869-474b-960e-6da5951d09f7 172.24.5.0/24       |
|                                      |          | eab47748-3f0a-4775-a09f-b0c24bb64bc4 2001:db8:10::/64    |
| bf2802a0-99a0-4e8c-91e4-107d03f158ea | my-net   | 6141b474-56cd-430f-b731-71660bb79b79 10.0.1.0/24         |
| 38c5e950-b450-4c30-83d4-ee181c28aad3 | private  | 43414c53-62ae-49bc-aa6c-c9dd7705818a fda4:653e:71b0::/64 |
|                                      |          | 5b9282a1-0be1-4ade-b478-7868ad2a16ff 10.0.0.0/24         |
+--------------------------------------+----------+----------------------------------------------------------+

$ neutron net-update 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 --dns_domain example.org.
Updated network: 37aaff3a-6047-45ac-bf4f-a825e56fd2b3

$ neutron net-show 37aaff3a-6047-45ac-bf4f-a825e56fd2b3
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| availability_zone_hints   |                                      |
| availability_zones        | nova                                 |
| dns_domain                | example.org.                         |
| id                        | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 |
| mtu                       | 1450                                 |
| name                      | external                             |
| port_security_enabled     | True                                 |
| provider:network_type     | vlan                                 |
| provider:physical_network |                                      |
| provider:segmentation_id  | 2016                                 |
| router:external           | False                                |
| shared                    | True                                 |
| status                    | ACTIVE                               |
| subnets                   | eab47748-3f0a-4775-a09f-b0c24bb64bc4 |
|                           | 277eca5d-9869-474b-960e-6da5951d09f7 |
| tenant_id                 | 04fc2f83966245dba907efb783f8eab9     |
+---------------------------+--------------------------------------+

$ designate record-list example.org.
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+
| id                                   | type | name         | data                                                                  |
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+
| 10a36008-6ecf-47c3-b321-05652a929b04 | SOA  | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1454729414 3600 600 86400 3600 |
| 56ca0b88-e343-4c98-8faa-19746e169baf | NS   | example.org. | ns1.devstack.org.                                                     |
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+

$ neutron port-create 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 --dns_name my-vm
Created a new port:
+-----------------------+---------------------------------------------------------------------------------------+
| Field                 | Value                                                                                 |
+-----------------------+---------------------------------------------------------------------------------------+
| admin_state_up        | True                                                                                  |
| allowed_address_pairs |                                                                                       |
| binding:vnic_type     | normal                                                                                |
| device_id             |                                                                                       |
| device_owner          |                                                                                       |
| dns_assignment        | {"hostname": "my-vm", "ip_address": "172.24.5.9", "fqdn": "my-vm.example.org."}       |
|                       | {"hostname": "my-vm", "ip_address": "2001:db8:10::9", "fqdn": "my-vm.example.org."}   |
| dns_name              | my-vm                                                                                 |
| fixed_ips             | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "172.24.5.9"}     |
|                       | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address": "2001:db8:10::9"} |
| id                    | 04be331b-dc5e-410a-9103-9c8983aeb186                                                  |
| mac_address           | fa:16:3e:0f:4b:e4                                                                     |
| name                  |                                                                                       |
| network_id            | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3                                                  |
| port_security_enabled | True                                                                                  |
| security_groups       | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635                                                  |
| status                | DOWN                                                                                  |
| tenant_id             | d5660cb1e6934612a01b4fb2fb630725                                                      |
+-----------------------+---------------------------------------------------------------------------------------+

$ designate record-list example.org.
+--------------------------------------+------+--------------------+-----------------------------------------------------------------------+
| id                                   | type | name               | data                                                                  |
+--------------------------------------+------+--------------------+-----------------------------------------------------------------------+
| 10a36008-6ecf-47c3-b321-05652a929b04 | SOA  | example.org.       | ns1.devstack.org. malavall.us.ibm.com. 1455563035 3600 600 86400 3600 |
| 56ca0b88-e343-4c98-8faa-19746e169baf | NS   | example.org.       | ns1.devstack.org.                                                     |
| 3593591b-181f-4beb-9ab7-67fad7413b37 | A    | my-vm.example.org. | 172.24.5.9                                                            |
| 5649c68f-7a88-48f5-9f87-ccb1f6ae67ca | AAAA | my-vm.example.org. | 2001:db8:10::9                                                        |
+--------------------------------------+------+--------------------+-----------------------------------------------------------------------+

$ nova boot --image cirros --flavor 42 \
  --nic port-id=04be331b-dc5e-410a-9103-9c8983aeb186 my_vm
+--------------------------------------+----------------------------------------------------------------+
| Property                             | Value                                                          |
+--------------------------------------+----------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                         |
| OS-EXT-AZ:availability_zone          |                                                                |
| OS-EXT-STS:power_state               | 0                                                              |
| OS-EXT-STS:task_state                | scheduling                                                     |
| OS-EXT-STS:vm_state                  | building                                                       |
| OS-SRV-USG:launched_at               | -                                                              |
| OS-SRV-USG:terminated_at             | -                                                              |
| accessIPv4                           |                                                                |
| accessIPv6                           |                                                                |
| adminPass                            | TDc9EpBT3B9W                                                   |
| config_drive                         |                                                                |
| created                              | 2016-02-15T19:10:43Z                                           |
| flavor                               | m1.nano (42)                                                   |
| hostId                               |                                                                |
| id                                   | 62c19691-d1c7-4d7b-a88e-9cc4d95d4f41                           |
| image                                | cirros-0.3.4-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) |
| key_name                             | -                                                              |
| locked                               | False                                                          |
| metadata                             | {}                                                             |
| name                                 | my_vm                                                          |
| os-extended-volumes:volumes_attached | []                                                             |
| progress                             | 0                                                              |
| security_groups                      | default                                                        |
| status                               | BUILD                                                          |
| tenant_id                            | d5660cb1e6934612a01b4fb2fb630725                               |
| updated                              | 2016-02-15T19:10:43Z                                           |
| user_id                              | 8bb6e578cba24e7db9d3810633124525                               |
+--------------------------------------+----------------------------------------------------------------+

$ nova list
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                            |
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------+
| 62c19691-d1c7-4d7b-a88e-9cc4d95d4f41 | my_vm | ACTIVE | -          | Running     | external=172.24.5.9, 2001:db8:10::9 |
+--------------------------------------+-------+--------+------------+-------------+-------------------------------------+

この例では、ポートはユーザーが手動で作成し、インスタンス起動時に使用されています。以下の点に注意してください。

  • ポートが作成された直後から DNS サービスでポートのデータが見えています。

  • このユースケースでの潜在的な性能面への影響については 性能面の考慮事項 を参照してください。

以下は、この例で作成された PTR レコードです。 IPv4 の場合は ipv4_ptr_zone_prefix_size の値が 24 で、 IPv6 の場合は ipv6_ptr_zone_prefix_size の値が 116 です。詳細は OpenStack Networking の外部 DNS サービスとの連携の設定 を参照してください。

$ designate record-list 5.24.172.in-addr.arpa.
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+
| id                                   | type | name                     | data                                                                |
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+
| ab7ada72-7e64-4bed-913e-04718a80fafc | NS   | 5.24.172.in-addr.arpa.   | ns1.devstack.org.                                                   |
| 28346a94-790c-4ae1-9f7b-069d98d9efbd | SOA  | 5.24.172.in-addr.arpa.   | ns1.devstack.org. admin.example.org. 1455563035 3600 600 86400 3600 |
| cfcaf537-844a-4c1b-9b5f-464ff07dca33 | PTR  | 9.5.24.172.in-addr.arpa. | my-vm.example.org.                                                  |
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+

$ designate record-list 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
+--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+
| id                                   | type | name                                                                      | data                                                                |
+--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+
| d8923354-13eb-4bd9-914a-0a2ae5f95989 | SOA  | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa.       | ns1.devstack.org. admin.example.org. 1455563036 3600 600 86400 3600 |
| 72e60acd-098d-41ea-9771-5b6546c9c06f | NS   | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa.       | ns1.devstack.org.                                                   |
| 877e0215-2ddf-4d01-a7da-47f1092dfd56 | PTR  | 9.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | my-vm.example.org.                                                  |
+--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+

外部からアクセス可能なネットワークを作成する詳細な手順は OpenStack Networking の外部 DNS サービスとの連携の設定 を参照してください。

ユースケース 2: Floating IP を関連付けされたポートの DNS 属性で公開する

このユースケースでは、 Floating IP のアドレスが外部 DNS サービスで公開されます。名前は、関連付けられたポートの dns_name とポートのネットワークの dns_domain`` を組み合わせたものになります。この手順で実行する手順は以下の通りです。

  1. ネットワークの dns_domain 属性に有効なドメイン名を割り当てます。このドメイン名の末尾はピリオド (.) でなければいけません。

  2. インスタンスを起動するか、 dns_name 属性に有効な値を指定してポートを作成します。このポートをインスタンス起動時に使用する場合には、 dns_name に割り当てる値は Compute サービスがインスタンスに割り当てる hostname と同じでなければいけません。さもないと、起動に失敗します。

  3. Floating IP を作成し、ポートに関連付けします。

以下は実行例です。

$ neutron net-update 38c5e950-b450-4c30-83d4-ee181c28aad3 --dns_domain example.org.
Updated network: 38c5e950-b450-4c30-83d4-ee181c28aad3

$ neutron net-show 38c5e950-b450-4c30-83d4-ee181c28aad3
+-------------------------+--------------------------------------+
| Field                   | Value                                |
+-------------------------+--------------------------------------+
| admin_state_up          | True                                 |
| availability_zone_hints |                                      |
| availability_zones      | nova                                 |
| dns_domain              | example.org.                         |
| id                      | 38c5e950-b450-4c30-83d4-ee181c28aad3 |
| mtu                     | 1450                                 |
| name                    | private                              |
| port_security_enabled   | True                                 |
| router:external         | False                                |
| shared                  | False                                |
| status                  | ACTIVE                               |
| subnets                 | 43414c53-62ae-49bc-aa6c-c9dd7705818a |
|                         | 5b9282a1-0be1-4ade-b478-7868ad2a16ff |
| tenant_id               | d5660cb1e6934612a01b4fb2fb630725     |
+-------------------------+--------------------------------------+

$ nova boot --image cirros --flavor 42 \
  --nic net-id=38c5e950-b450-4c30-83d4-ee181c28aad3 my_vm
+--------------------------------------+----------------------------------------------------------------+
| Property                             | Value                                                          |
+--------------------------------------+----------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                         |
| OS-EXT-AZ:availability_zone          |                                                                |
| OS-EXT-STS:power_state               | 0                                                              |
| OS-EXT-STS:task_state                | scheduling                                                     |
| OS-EXT-STS:vm_state                  | building                                                       |
| OS-SRV-USG:launched_at               | -                                                              |
| OS-SRV-USG:terminated_at             | -                                                              |
| accessIPv4                           |                                                                |
| accessIPv6                           |                                                                |
| adminPass                            | oTLQLR3Kezmt                                                   |
| config_drive                         |                                                                |
| created                              | 2016-02-15T19:27:34Z                                           |
| flavor                               | m1.nano (42)                                                   |
| hostId                               |                                                                |
| id                                   | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1                           |
| image                                | cirros-0.3.4-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) |
| key_name                             | -                                                              |
| locked                               | False                                                          |
| metadata                             | {}                                                             |
| name                                 | my_vm                                                          |
| os-extended-volumes:volumes_attached | []                                                             |
| progress                             | 0                                                              |
| security_groups                      | default                                                        |
| status                               | BUILD                                                          |
| tenant_id                            | d5660cb1e6934612a01b4fb2fb630725                               |
| updated                              | 2016-02-15T19:27:34Z                                           |
| user_id                              | 8bb6e578cba24e7db9d3810633124525                               |
+--------------------------------------+----------------------------------------------------------------+

$ nova list
+--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                                                |
+--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+
| 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | my_vm | ACTIVE | -          | Running     | private=fda4:653e:71b0:0:f816:3eff:fe16:b5f2, 10.0.0.15 |
+--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+

$ neutron port-list --device_id 43f328bb-b2d1-4cf1-a36f-3b2593397cb1
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+
| id                                   | name | mac_address       | fixed_ips                                                                                                   |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+
| da0b1f75-c895-460f-9fc1-4d6ec84cf85f |      | fa:16:3e:16:b5:f2 | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "10.0.0.15"}                            |
|                                      |      |                   | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2"} |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+

$ neutron port-show da0b1f75-c895-460f-9fc1-4d6ec84cf85f
+-----------------------+-------------------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                                       |
+-----------------------+-------------------------------------------------------------------------------------------------------------+
| admin_state_up        | True                                                                                                        |
| allowed_address_pairs |                                                                                                             |
| binding:vnic_type     | normal                                                                                                      |
| device_id             | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1                                                                        |
| device_owner          | compute:None                                                                                                |
| dns_assignment        | {"hostname": "my-vm", "ip_address": "10.0.0.15", "fqdn": "my-vm.example.org."}                              |
|                       | {"hostname": "my-vm", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2", "fqdn": "my-vm.example.org."}   |
| dns_name              | my-vm                                                                                                       |
| extra_dhcp_opts       |                                                                                                             |
| fixed_ips             | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "10.0.0.15"}                            |
|                       | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2"} |
| id                    | da0b1f75-c895-460f-9fc1-4d6ec84cf85f                                                                        |
| mac_address           | fa:16:3e:16:b5:f2                                                                                           |
| name                  |                                                                                                             |
| network_id            | 38c5e950-b450-4c30-83d4-ee181c28aad3                                                                        |
| port_security_enabled | True                                                                                                        |
| security_groups       | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635                                                                        |
| status                | ACTIVE                                                                                                      |
| tenant_id             | d5660cb1e6934612a01b4fb2fb630725                                                                            |
+-----------------------+-------------------------------------------------------------------------------------------------------------+

$ designate record-list example.org.
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+
| id                                   | type | name         | data                                                                  |
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+
| 10a36008-6ecf-47c3-b321-05652a929b04 | SOA  | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455563783 3600 600 86400 3600 |
| 56ca0b88-e343-4c98-8faa-19746e169baf | NS   | example.org. | ns1.devstack.org.                                                     |
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+

$ neutron floatingip-create 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a \
  --port_id da0b1f75-c895-460f-9fc1-4d6ec84cf85f
Created a new floatingip:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| dns_domain          |                                      |
| dns_name            |                                      |
| fixed_ip_address    | 10.0.0.15                            |
| floating_ip_address | 172.24.4.4                           |
| floating_network_id | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a |
| id                  | e78f6eb1-a35f-4a90-941d-87c888d5fcc7 |
| port_id             | da0b1f75-c895-460f-9fc1-4d6ec84cf85f |
| router_id           | 970ebe83-c4a3-4642-810e-43ab7b0c2b5f |
| status              | DOWN                                 |
| tenant_id           | d5660cb1e6934612a01b4fb2fb630725     |
+---------------------+--------------------------------------+

$ designate record-list example.org.
+--------------------------------------+------+--------------------+-----------------------------------------------------------------------+
| id                                   | type | name               | data                                                                  |
+--------------------------------------+------+--------------------+-----------------------------------------------------------------------+
| 10a36008-6ecf-47c3-b321-05652a929b04 | SOA  | example.org.       | ns1.devstack.org. malavall.us.ibm.com. 1455564861 3600 600 86400 3600 |
| 56ca0b88-e343-4c98-8faa-19746e169baf | NS   | example.org.       | ns1.devstack.org.                                                     |
| 5ff53fd0-3746-48da-b9c9-77ed3004ec67 | A    | my-vm.example.org. | 172.24.4.4                                                            |
+--------------------------------------+------+--------------------+-----------------------------------------------------------------------+

この例では、 Floating IP がポートに関連付けられた際にデータが DNS サービスで公開されている点に注目してください。

以下は、この例で作成された PTR レコードです。 IPv4 の場合は ipv4_ptr_zone_prefix_size の値が 24 です。詳細は OpenStack Networking の外部 DNS サービスとの連携の設定 を参照してください。

$ designate record-list 4.24.172.in-addr.arpa.
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+
| id                                   | type | name                     | data                                                                |
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+
| 2dd0b894-25fa-4563-9d32-9f13bd67f329 | NS   | 4.24.172.in-addr.arpa.   | ns1.devstack.org.                                                   |
| 47b920f1-5eff-4dfa-9616-7cb5b7cb7ca6 | SOA  | 4.24.172.in-addr.arpa.   | ns1.devstack.org. admin.example.org. 1455564862 3600 600 86400 3600 |
| fb1edf42-abba-410c-8397-831f45fd0cd7 | PTR  | 4.4.24.172.in-addr.arpa. | my-vm.example.org.                                                  |
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+

ユースケース 3: Floating IP を外部 DNS サービスで公開する

このユースケースでは、ユーザーが Floating IP 作成時に Floating IP に dns_namedns_domain 属性を割り当てます。 Floating IP のデータは作成直後から外部 DNS サービスで参照可能になります。 Floating IP は作成時にポートと関連付けることも後で関連付けることもできます。以下の例では、ユーザーがインスタンスを起動し、それからインスタンスに割り当てられたポートを関連付けて Floating IP を作成しています。

$ neutron net-show 38c5e950-b450-4c30-83d4-ee181c28aad3
+-------------------------+--------------------------------------+
| Field                   | Value                                |
+-------------------------+--------------------------------------+
| admin_state_up          | True                                 |
| availability_zone_hints |                                      |
| availability_zones      | nova                                 |
| dns_domain              | example.org.                         |
| id                      | 38c5e950-b450-4c30-83d4-ee181c28aad3 |
| mtu                     | 1450                                 |
| name                    | private                              |
| port_security_enabled   | True                                 |
| router:external         | False                                |
| shared                  | False                                |
| status                  | ACTIVE                               |
| subnets                 | 43414c53-62ae-49bc-aa6c-c9dd7705818a |
|                         | 5b9282a1-0be1-4ade-b478-7868ad2a16ff |
| tenant_id               | d5660cb1e6934612a01b4fb2fb630725     |
+-------------------------+--------------------------------------+

$ nova boot --image cirros --flavor 42 \
  --nic net-id=38c5e950-b450-4c30-83d4-ee181c28aad3 my_vm
+--------------------------------------+----------------------------------------------------------------+
| Property                             | Value                                                          |
+--------------------------------------+----------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                         |
| OS-EXT-AZ:availability_zone          |                                                                |
| OS-EXT-STS:power_state               | 0                                                              |
| OS-EXT-STS:task_state                | scheduling                                                     |
| OS-EXT-STS:vm_state                  | building                                                       |
| OS-SRV-USG:launched_at               | -                                                              |
| OS-SRV-USG:terminated_at             | -                                                              |
| accessIPv4                           |                                                                |
| accessIPv6                           |                                                                |
| adminPass                            | HLXGznYqXM4J                                                   |
| config_drive                         |                                                                |
| created                              | 2016-02-15T19:42:44Z                                           |
| flavor                               | m1.nano (42)                                                   |
| hostId                               |                                                                |
| id                                   | 71fb4ac8-eed8-4644-8113-0641962bb125                           |
| image                                | cirros-0.3.4-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) |
| key_name                             | -                                                              |
| locked                               | False                                                          |
| metadata                             | {}                                                             |
| name                                 | my_vm                                                          |
| os-extended-volumes:volumes_attached | []                                                             |
| progress                             | 0                                                              |
| security_groups                      | default                                                        |
| status                               | BUILD                                                          |
| tenant_id                            | d5660cb1e6934612a01b4fb2fb630725                               |
| updated                              | 2016-02-15T19:42:44Z                                           |
| user_id                              | 8bb6e578cba24e7db9d3810633124525                               |
+--------------------------------------+----------------------------------------------------------------+

$ nova list
+--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+
| ID                                   | Name  | Status | Task State | Power State | Networks                                                |
+--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+
| 71fb4ac8-eed8-4644-8113-0641962bb125 | my_vm | ACTIVE | -          | Running     | private=fda4:653e:71b0:0:f816:3eff:fe24:8614, 10.0.0.16 |
+--------------------------------------+-------+--------+------------+-------------+---------------------------------------------------------+

$ neutron port-list --device_id 71fb4ac8-eed8-4644-8113-0641962bb125
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+
| id                                   | name | mac_address       | fixed_ips                                                                                                   |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+
| 1e7033fb-8e9d-458b-89ed-8312cafcfdcb |      | fa:16:3e:24:86:14 | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "10.0.0.16"}                            |
|                                      |      |                   | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614"} |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+

$ neutron port-show 1e7033fb-8e9d-458b-89ed-8312cafcfdcb
+-----------------------+-------------------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                                       |
+-----------------------+-------------------------------------------------------------------------------------------------------------+
| admin_state_up        | True                                                                                                        |
| allowed_address_pairs |                                                                                                             |
| binding:vnic_type     | normal                                                                                                      |
| device_id             | 71fb4ac8-eed8-4644-8113-0641962bb125                                                                        |
| device_owner          | compute:None                                                                                                |
| dns_assignment        | {"hostname": "my-vm", "ip_address": "10.0.0.16", "fqdn": "my-vm.example.org."}                              |
|                       | {"hostname": "my-vm", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614", "fqdn": "my-vm.example.org."}   |
| dns_name              | my-vm                                                                                                       |
| extra_dhcp_opts       |                                                                                                             |
| fixed_ips             | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "10.0.0.16"}                            |
|                       | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614"} |
| id                    | 1e7033fb-8e9d-458b-89ed-8312cafcfdcb                                                                        |
| mac_address           | fa:16:3e:24:86:14                                                                                           |
| name                  |                                                                                                             |
| network_id            | 38c5e950-b450-4c30-83d4-ee181c28aad3                                                                        |
| port_security_enabled | True                                                                                                        |
| security_groups       | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635                                                                        |
| status                | ACTIVE                                                                                                      |
| tenant_id             | d5660cb1e6934612a01b4fb2fb630725                                                                            |
+-----------------------+-------------------------------------------------------------------------------------------------------------+

$ designate record-list example.org.
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+
| id                                   | type | name         | data                                                                  |
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+
| 10a36008-6ecf-47c3-b321-05652a929b04 | SOA  | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455565110 3600 600 86400 3600 |
| 56ca0b88-e343-4c98-8faa-19746e169baf | NS   | example.org. | ns1.devstack.org.                                                     |
+--------------------------------------+------+--------------+-----------------------------------------------------------------------+

$ neutron floatingip-create 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a \
  --dns_domain example.org. --dns_name my-floatingip
Created a new floatingip:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| dns_domain          | example.org.                         |
| dns_name            | my-floatingip                        |
| fixed_ip_address    |                                      |
| floating_ip_address | 172.24.4.5                           |
| floating_network_id | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a |
| id                  | 9f23a9c6-eceb-42eb-9f45-beb58c473728 |
| port_id             |                                      |
| router_id           |                                      |
| status              | DOWN                                 |
| tenant_id           | d5660cb1e6934612a01b4fb2fb630725     |
+---------------------+--------------------------------------+

$ designate record-list example.org.
+--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+
| id                                   | type | name                       | data                                                                  |
+--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+
| 10a36008-6ecf-47c3-b321-05652a929b04 | SOA  | example.org.               | ns1.devstack.org. malavall.us.ibm.com. 1455566486 3600 600 86400 3600 |
| 56ca0b88-e343-4c98-8faa-19746e169baf | NS   | example.org.               | ns1.devstack.org.                                                     |
| 8884c56f-3ef5-446e-ae4d-8053cc8bc2b4 | A    | my-floatingip.example.org. | 172.24.4.5                                                            |
+--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+

このユースケースで注意する点は以下です。

  • Floating IP の dns_namedns_domain 属性は、作成時に両方一緒に指定しなければいけません。別々に Floating IP に割り当てることはできません。

  • 外部 DNS サービスでの公開においては、 Floating IP の dns_namedns_domain は、関連付けされたポートの dns_name とポートのネットワークの dns_domain が設定されているかに関わらず、必ず優先されます。 Floating IP の dns_name と``dns_domain`` のみが外部 DNS サービスで公開されます。

以下は、この例で作成された PTR レコードです。 IPv4 の場合は ipv4_ptr_zone_prefix_size の値が 24 です。詳細は OpenStack Networking の外部 DNS サービスとの連携の設定 を参照してください。

$ designate record-list 4.24.172.in-addr.arpa.
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+
| id                                   | type | name                     | data                                                                |
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+
| 2dd0b894-25fa-4563-9d32-9f13bd67f329 | NS   | 4.24.172.in-addr.arpa.   | ns1.devstack.org.                                                   |
| 47b920f1-5eff-4dfa-9616-7cb5b7cb7ca6 | SOA  | 4.24.172.in-addr.arpa.   | ns1.devstack.org. admin.example.org. 1455566487 3600 600 86400 3600 |
| 589a0171-e77a-4ab6-ba6e-23114f2b9366 | PTR  | 5.4.24.172.in-addr.arpa. | my-floatingip.example.org.                                          |
+--------------------------------------+------+--------------------------+---------------------------------------------------------------------+

性能面の考慮事項

ユースケース 1: ポートを外部 DNS サービスで直接公開する の場合だけですが、 Networking サービスで port binding API 拡張が有効になっている場合、 Compute サービスは起動処理中にインスタンスにポートを割り当てる際に余計に 1 回ポート更新操作を行うことになります。このことは、起動処理の性能に目に見えるマイナス影響を与える可能性もあり、このユースケースを採用する前に評価を行うべきです。

OpenStack Networking の外部 DNS サービスとの連携の設定

外部 DNS サービスとの連携を設定する際に最初にすべきことは、 Networking サービス内部の DNS 解決 に書かれた機能を有効にすることです。これが終わったら、ユーザーは以下の手順を実行し neutron-server を再起動する必要があります。

  1. /etc/neutron/neutron.conf[default] セクションを編集し、使用する外部 DNS サービスを external_dns_driver パラメーターで指定します。指定できる値は neutron.services.external_dns_drivers 名前空間に定義されています。以下の例では OpenStack DNS サービス用のドライバーの設定方法を説明します。

    external_dns_driver = designate
    
  2. OpenStack DNS サービスが対象の外部 DNS の場合、 /etc/neutron/neutron.conf[designate] セクションで以下のパラメーターを定義する必要があります。

    • url: OpenStack DNS サービスのパブリックエンドポイント URL

    • allow_reverse_dns_lookup: 逆引き (PTR) レコードの作成を有効にするかを示すブール値

    • admin_auth_url:Identity サービスの管理者認証エンドポイント URL。このエンドポイントは、 Networking サービスが逆引き (PTR) ゾーンの作成、更新用に管理ユーザーとして認証する際に使用されます。

    • admin_username: Networking サービスが逆引き (PTR) ゾーンの作成、更新用に使用する管理ユーザー

    • admin_password: Networking サービスが逆引き (PTR) ゾーンの作成、更新用に使用する管理ユーザーのパスワード

    • ``admin_tenant_name ``: Networking サービスが逆引き (PTR) ゾーンの作成、更新用に使用する管理ユーザーのプロジェクト

    • ipv4_ptr_zone_prefix_size: IPv4 逆引き (PTR) ゾーン用のプレフィックスのビットサイズ

    • ipv6_ptr_zone_prefix_size: IPv6 逆引き (PTR) ゾーン用のプレフィックスのビットサイズ

    以下は設定例です。

    [designate]
    url = http://55.114.111.93:9001/v2
    admin_auth_url = http://55.114.111.93:35357/v2.0
    admin_username = neutron
    admin_password = x5G90074
    admin_tenant_name = service
    allow_reverse_dns_lookup = True
    ipv4_ptr_zone_prefix_size = 24
    ipv6_ptr_zone_prefix_size = 116
    

ユースケース 1 での外部からアクセス可能なネットワークの設定

ユースケース 1: ポートを外部 DNS サービスで直接公開する では、外部からアクセス可能なネットワークは以下の要件を満たす必要があります。

  • ネットワークの router:external 属性は True であってはいけません。

  • ネットワーク種別は FLAT, VLAN, GRE, VXLAN, GENEVE のいずれかにできます。

  • ネットワーク種別が VLAN, GRE, VXLAN, GENEVE の場合、セグメンテーション ID はテナントネットワークへの割り当て範囲外でなければいけません。

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.