DNS 解析实例¶
网络服务提供了几种配置实例名称解析(DNS)的方法。大多数部署应该实施方案 1 或 2a。方案 2b 需要安全考虑,以防止将内部 DNS 信息泄露给实例。
注意
所有这些设置都需要配置的 DNS 解析器能够从相关虚拟网络访问。因此,除非解析器位于虚拟网络内部,否则意味着需要将路由器附加到该网络,并配置外部网关。
方案 1:每个虚拟网络使用唯一的 DNS 解析器¶
在这种情况下,DHCP 代理通过 DHCP 在每个虚拟网络上向实例提供一个或多个唯一的 DNS 解析器。您可以在创建或更新子网时配置 DNS 解析器。要配置多个 DNS 解析器,请多次重复该选项。
在创建子网时配置 DNS 解析器。
$ openstack subnet create --dns-nameserver DNS_RESOLVER
将
DNS_RESOLVER替换为可从虚拟网络访问的 DNS 解析器的 IP 地址。如果您想指定多个 IP 地址,请重复该选项。例如$ openstack subnet create --dns-nameserver 203.0.113.8 --dns-nameserver 198.51.100.53
注意
此命令需要超出本文档范围的额外选项。
将 DNS 解析器添加到现有子网。
$ openstack subnet set --dns-nameserver DNS_RESOLVER SUBNET_ID_OR_NAME
将
DNS_RESOLVER替换为可从虚拟网络访问的 DNS 解析器的 IP 地址,并将SUBNET_ID_OR_NAME替换为子网的 UUID 或名称。例如,使用selfservice子网$ openstack subnet set --dns-nameserver 203.0.113.9 selfservice
从子网中删除所有 DNS 解析器。
$ openstack subnet set --no-dns-nameservers SUBNET_ID_OR_NAME
将
SUBNET_ID_OR_NAME替换为子网的 UUID 或名称。例如,使用selfservice子网$ openstack subnet set --no-dns-nameservers selfservice
注意
您可以将此选项与上一个选项结合使用,以用新的地址替换所有现有的 DNS 解析器地址。
您还可以将 DNS 解析器地址设置为 0.0.0.0 用于 IPv4 子网,或 :: 用于 IPv6 子网,这些是特殊值,指示 DHCP 代理不应在子网上通告任何 DNS 解析器。
注意
当以这种方式为子网显式指定 DNS 解析器时,该设置将优先于方案 2 中提供的选项。
方案 2:DHCP 代理转发来自实例的 DNS 查询¶
在这种情况下,DHCP 代理通过 DHCP 在该子网上将所有 DHCP 代理的 IP 地址列表作为 DNS 解析器提供给实例。
然后,DHCP 代理运行一个伪装转发 DNS 解析器,并提供两种可能的选项来确定将 DNS 查询发送到哪里。
注意
DHCP 代理将直接回答在虚拟网络内运行的实例的名称和地址查询,而不是转发它们。
方案 2a:查询转发到显式配置的 DNS 解析器集¶
在 dhcp_agent.ini 文件中,配置一个或多个 DNS 解析器。要配置多个 DNS 解析器,请在值之间使用逗号。
[DEFAULT]
dnsmasq_dns_servers = DNS_RESOLVER
将 DNS_RESOLVER 替换为可从所有虚拟网络访问的 DNS 解析器 IP 地址列表。例如
[DEFAULT]
dnsmasq_dns_servers = 203.0.113.8, 198.51.100.53
注意
您必须为所有符合条件的 DHCP 代理配置此选项,并重新启动它们以激活这些值。
方案 2b:查询转发到主机上配置的 DNS 解析器¶
在这种情况下,DHCP 代理将来自实例的查询转发到运行 DHCP 代理的主机上的 resolv.conf 文件中配置的 DNS 解析器。这要求这些解析器可从所有虚拟网络访问。
在 dhcp_agent.ini 文件中,启用使用主机上配置的 DNS 解析器。
[DEFAULT]
dnsmasq_local_resolv = True
注意
您必须为所有符合条件的 DHCP 代理配置此选项,并重新启动它们以激活此设置。