DNS 集成

此页面作为使用网络服务 (Networking service) 的 DNS 集成功能及其与计算服务 (Compute service) 交互的指南。

网络服务与外部 DNSaaS (DNS-as-a-Service) 的集成在 与外部服务集成 DNS 中描述。

用户可以使用与端口、网络和浮动 IP 关联的两个属性来控制网络服务在 DNS 方面的行为。下表显示了这些资源各自可用的属性

资源

dns_name

dns_domain

端口

网络

浮动 IP

注意

DNS 集成 扩展启用前表中显示的所有属性和资源组合,除了端口的 dns_domain,后者需要 dns_domain for ports 扩展。

注意

由于 DNS 集成 扩展是 dns_domain for ports 的子集,如果需要端口的 dns_domain 功能,则只需配置后者扩展即可。

注意

当配置了 dns_domain for ports 扩展时,当 Neutron 服务器响应列出活动 API 扩展的请求时,也会包含 DNS 集成。这保留了向后兼容的 API。

注意

对于 浮动 IP,还需要外部 DNSaaS,如 与外部服务集成 DNS 中所述。

网络服务的内部 DNS 解析

网络服务允许用户控制内部 DNS 为端口分配的名称。要启用此功能,请执行以下操作

  1. 编辑 /etc/neutron/neutron.conf 文件,并将与 openstacklocal(其默认值)不同的值分配给 [default] 部分中的 dns_domain 参数。例如

    dns_domain = example.org.
    
  2. dns(用于 DNS 集成 扩展)或 dns_domain_ports(用于 dns_domain for ports 扩展)添加到 /etc/neutron/plugins/ml2/ml2_conf.ini[ml2] 部分的 extension_drivers 中。以下是一个示例

    [ml2]
    extension_drivers = port_security,dns_domain_ports
    

重新启动 neutron-server 后,用户将能够为其端口分配 dns_name 属性。

与 DNS 集成相关的有效 extension_drivers 值是

  • dns

  • dns_domain_ports

  • subnet_dns_publish_fixed_ip

  • dns_domain_keywords

注意

启用此功能是启用网络服务与外部 DNS 服务的集成(在 与外部服务集成 DNS 中详细描述)的前提条件。

以下说明了创建一个端口,其 dns_name 属性为 my-port

注意

网络服务内部 DNS 分配给端口的名称现在在 dns_assignment 属性的响应中可见。

$ openstack port create --network my-net --dns-name my-port test
+-----------------------+-------------------------------------------------------------------------------+
| Field                 | Value                                                                         |
+-----------------------+-------------------------------------------------------------------------------+
| admin_state_up        | UP                                                                            |
| allowed_address_pairs |                                                                               |
| binding_host_id       |                                                                               |
| binding_profile       |                                                                               |
| binding_vif_details   |                                                                               |
| binding_vif_type      | unbound                                                                       |
| binding_vnic_type     | normal                                                                        |
| created_at            | 2016-02-05T21:35:04Z                                                          |
| data_plane_status     | None                                                                          |
| description           |                                                                               |
| device_id             |                                                                               |
| device_owner          |                                                                               |
| dns_assignment        | fqdn='my-port.example.org.', hostname='my-port', ip_address='192.0.2.67'      |
| dns_domain            | None                                                                          |
| dns_name              | my-port                                                                       |
| extra_dhcp_opts       |                                                                               |
| fixed_ips             | ip_address='192.0.2.67', subnet_id='6141b474-56cd-430f-b731-71660bb79b79'     |
| id                    | fb3c10f4-017e-420c-9be1-8f8c557ae21f                                          |
| mac_address           | fa:16:3e:aa:9b:e1                                                             |
| name                  | test                                                                          |
| network_id            | bf2802a0-99a0-4e8c-91e4-107d03f158ea                                          |
| port_security_enabled | True                                                                          |
| project_id            | d5660cb1e6934612a01b4fb2fb630725                                              |
| qos_policy_id         | None                                                                          |
| revision_number       | 1                                                                             |
| security_group_ids    | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635                                          |
| status                | DOWN                                                                          |
| tags                  |                                                                               |
| trunk_details         | None                                                                          |
| updated_at            | 2016-02-05T21:35:04Z                                                          |
+-----------------------+-------------------------------------------------------------------------------+

当启用此功能时,计算服务在创建实例时会利用它。在启动过程中为实例分配端口时,计算服务会将这些端口的 dns_name 属性填充为实例的 hostname 属性,这是其显示名称的 DNS 规范化版本。因此,在启动过程结束时,分配的端口将在与其网络关联的 dnsmasq 中以其实例 hostname 身份被识别。

以下是一个实例创建示例,显示其 hostname 如何填充分配端口的 dns_name 属性

$ openstack server create --image cirros --flavor 42 \
  --nic net-id=37aaff3a-6047-45ac-bf4f-a825e56fd2b3 my_vm
+--------------------------------------+----------------------------------------------------------------+
| Field                                | 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.5-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                               |
+--------------------------------------+----------------------------------------------------------------+

$ openstack port list --device-id 66c13cb4-3002-4ab3-8400-7efc2659c363
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+--------+
| ID                                   | Name | MAC Address       | Fixed IP Addresses                                                                    | Status |
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+--------+
| b3ecc464-1263-44a7-8c38-2d8a52751773 |      | fa:16:3e:a8:ce:b8 | ip_address='203.0.113.8', subnet_id='277eca5d-9869-474b-960e-6da5951d09f7'            | ACTIVE |
|                                      |      |                   | ip_address='2001:db8:10::8', subnet_id='eab47748-3f0a-4775-a09f-b0c24bb64bc4'         |        |
+--------------------------------------+------+-------------------+---------------------------------------------------------------------------------------+--------+

$ openstack port show b3ecc464-1263-44a7-8c38-2d8a52751773
+-----------------------+------------------------------------------------------------------------------------------------------------+
| Field                 | Value                                                                                                      |
+-----------------------+------------------------------------------------------------------------------------------------------------+
| admin_state_up        | UP                                                                                                         |
| allowed_address_pairs |                                                                                                            |
| binding_host_id       | vultr.guest                                                                                                |
| binding_profile       |                                                                                                            |
| binding_vif_details   | datapath_type='system', ovs_hybrid_plug='True', port_filter='True'                                         |
| binding_vif_type      | ovs                                                                                                        |
| binding_vnic_type     | normal                                                                                                     |
| created_at            | 2016-02-05T21:35:04Z                                                                                       |
| data_plane_status     | None                                                                                                       |
| description           |                                                                                                            |
| device_id             | 66c13cb4-3002-4ab3-8400-7efc2659c363                                                                       |
| device_owner          | compute:None                                                                                               |
| dns_assignment        | fqdn='my-vm.example.org.', hostname='my-vm', ip_address='203.0.113.8'                                      |
|                       | fqdn='my-vm.example.org.', hostname='my-vm', ip_address='2001:db8:10::8'                                   |
| dns_domain            | example.org.                                                                                               |
| dns_name              | my-vm                                                                                                      |
| extra_dhcp_opts       |                                                                                                            |
| fixed_ips             | ip_address='203.0.113.8', subnet_id='277eca5d-9869-474b-960e-6da5951d09f7'                                 |
|                       | ip_address='2001:db8:10::8', subnet_id='eab47748-3f0a-4775-a09f-b0c24bb64bc4'                              |
| 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                                                                                                       |
| project_id            | d5660cb1e6934612a01b4fb2fb630725                                                                           |
| qos_policy_id         | None                                                                                                       |
| revision_number       | 1                                                                                                          |
| security_group_ids    | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635                                                                       |
| status                | ACTIVE                                                                                                     |
| tags                  |                                                                                                            |
| trunk_details         | None                                                                                                       |
| updated_at            | 2016-02-05T21:35:04Z                                                                                       |
+-----------------------+------------------------------------------------------------------------------------------------------------+

在上面的示例中,请注意

  • 用户赋予实例的名称 my_vm 被计算服务规范化并成为端口的 dns_name my-vm

  • 端口的 dns_assignment 属性显示其 FQDN 在网络服务的内部 DNS 中为 my-vm.example.org.,这是通过将端口的 dns_name 与在 neutron.conf 中的 dns_domain 参数中配置的值连接的结果,如前所述。

  • dns_assignment 属性还显示端口的 hostname 在网络服务的内部 DNS 中为 my-vm

  • 与其让计算服务为实例创建端口,用户可能已经创建了它并为其 dns_name 属性分配了一个值。在这种情况下,分配给 dns_name 属性的值必须等于计算服务将分配给实例的 hostname 的值,在本例中为 my-vm。否则,实例启动将失败。

注意

当启用与外部 DNS 服务的网络服务集成时,在某些明确定义的案例中,dns_assignment 属性中的端口 FQDN 将不会如上所述计算。有关这些案例的描述,请参阅 用例 3 中的端口 dns_assignment 属性