配置 DNS 服务器

DNS 概述

域名系统 (DNS) 是将域名解析为 IP 地址以便将流量路由到其目的地的标准协议。DNS 提供人类可读域名与其 IP 地址之间的转换。域名在分层树中定义,根后跟顶级和下一级域标签。

DNS 服务器存储域名的记录,并基于这些记录响应客户端的查询。服务器对于将其配置为名称服务器的域具有权威性。对于其他域,服务器可以充当缓存服务器,通过查询其他域名服务器来获取记录。

以下是虚拟世界中域名服务的关键属性:

  • 应该可以配置多个域名服务器,为系统中生成的虚拟机提供名称解析服务。

  • 应该可以将域名服务器配置为形成每个租户所需的 DNS 服务器层次结构。

    • 这些层次结构可以独立于系统中存在的其他类似层次结构并完全隔离,或者它们可以为系统中存在的其他层次结构提供命名服务。

  • 创建或销毁虚拟机时,应动态更新系统中生成的虚拟机的 DNS 记录。

  • 该服务应该是可扩展的,以处理服务器的增加以及由此导致的系统中处理的虚拟机和 DNS 查询数量的增加。

在 Contrail 中定义多个虚拟域名服务器

Contrail 可以灵活地在系统中的每个域下定义多个虚拟域名服务器。每个虚拟域名服务器都是配置的 DNS 域的权威服务器。 图 1 显示了在 默认域中定义的虚拟 DNS 服务器示例,这些服务器为指定的 DNS 域提供命名服务。

图 1:DNS 服务器示例Hierarchical structure showing domain relationships: Juniper Network with parent domain VDNS1 juniper.net and subdomains VDNS2 us.juniper.net and VDNS3 india.juniper.net; CNN with parent domain cnn.com and subdomain CNN Money money.cnn.com.

IPAM 和虚拟 DNS

系统中的每个 IP 地址管理 (IPAM) 服务都可以引用配置的虚拟 DNS 服务器之一。生成的虚拟网络和虚拟机与相应 IPAM 中指定的 DNS 域相关联。为虚拟机配置了 DHCP 后,它们将在 DHCP 域名选项中接收域分配。图 2 显示了示例

图 2:IPAM 和虚拟 DNSNetwork topology diagram showing IPAM systems managing virtual networks and VMs, interacting with VDNS for DNS resolution.

DNS 记录类型

DNS 记录可以静态添加。系统当前支持 DNS 记录类型 A、CNAME、PTR 和 NS 。每条记录包括类型、类 (IN)、名称、数据和 TTL 值。有关记录类型的说明,请参阅 表 1 。

表 1:支持的 DNS 记录类型

DNS 记录类型

描述

A

用于将主机名映射到 IPv4 地址。名称是指虚拟机的名称,数据是虚拟机的IPv4地址。

CNAME

为名称提供别名。名称是指虚拟机的名称,数据是虚拟机的新名称(别名)。

PTR

它是一个指向记录的指针,提供从 IP 地址到名称的反向映射。名称是指 IP 地址,数据是虚拟机的名称。PTR 记录中的地址应是为引用此虚拟 DNS 服务器的 IPAM 之一中的 VN 配置的子网的一部分。

NS

用于将子域委托给另一个 DNS 服务器。DNS 服务器可以是系统中定义的另一个虚拟 DNS 服务器,也可以是可通过基础架构访问的外部 DNS 服务器的 IP 地址。名称是指被委托的子域,数据是虚拟DNS服务器的名称或外部服务器的IP地址。

图 3 显示了 DNS 记录类型 NS 的示例用法。

图 3:NS 记录类型的Hierarchical DNS delegation structure showing VDNS1 as parent for juniper.net, delegating us.juniper.net to VDNS2 and india.juniper.net to VDNS3.示例用法

在用户界面上配置 DNS

可以使用用户界面或脚本配置 DNS。以下过程显示如何通过瞻博网络 Contrail 接口配置 DNS。

  1. 访问 配置> DNS >服务器 以创建或删除虚拟 DNS 服务器和记录。

    此时将显示“ 配置 DNS 记录” 页面;见 图 4。

    图 4:配置 DNS 记录Configure DNS Records page with dropdowns for domain and user selection, Create and Delete buttons, and empty tables for virtual DNS and DNS records management.
  2. 要添加新的 DNS 服务器,请单击 “创建” 按钮。

    在“ 添加 DNS ”窗口中输入 DNS 服务器信息;见 图 5

    图 5:添加 DNSConfiguration window for DNS server setup with fields: Server Name, Domain Name, DNS Forwarder, Record Resolution Order, Time To Live, Associate IPAMs. Buttons: Cancel, Save.

    填写新服务器的字段;见 表 2。

    表 2:添加 DNS 字段

    字段

    描述

    服务器名称

    输入此服务器的名称。

    域名

    输入此服务器的域名称。

    活动时间

    输入 TTL (以秒为单位)。

    下一个 DNS 服务器

    从列表中选择要处理 DNS 请求的下一个 DNS 服务器的名称(如果无法在此服务器上处理这些请求),或 “无”。

    负载均衡顺序

    从列表中选择负载均衡顺序:随机、固定、轮询。当名称有多个匹配的记录时,配置的记录顺序将确定响应中发送记录的顺序。选择 “随机” 以按随机顺序发送记录。选择 固定 以按创建顺序发送记录。选择 轮询 以循环记录的每个请求的记录顺序。

    确定

    单击 “确定 ”以创建记录。

    取消

    单击 “取消” 以清除字段并重新开始。

  3. 要添加新的 DNS 记录,请在 “配置 DNS 记录 ”页面中,单击屏幕右下角的“ 添加记录” 按钮。

    此时将显示“ 添加 DNS 记录” 窗口;见 图 6。

    图 6:添加 DNS 记录Form for adding a DNS record with fields for Type, Host Name, IP Address, Class, TTL, and buttons Cancel and Save.
  4. 填写新记录的字段;请参见 表 3。
    表 3:添加 DNS 记录字段

    字段

    描述

    记录名称

    输入此记录的名称。

    类型

    从列表中选择记录类型 - A、CNAME、PTR、NS。

    IP 地址

    输入此记录位置的 IP 地址。

    类

    从列表中选择记录类 - IN 是默认值。

    活动时间

    输入 TTL (以秒为单位)。

    确定

    单击 “确定 ”以创建记录。

    取消

    单击 “取消” 以清除字段并重新开始。

  5. 要将 IPAM 关联到虚拟 DNS 服务器,请在 “配置 DNS 记录 ”页面中,选择屏幕右下角的“ 关联的 IPAM” 选项卡,然后单击 “编辑” 按钮。

    此时将显示“ 将 IPAM 关联到 DNS” 窗口;见 图 7。

    图 7:将 IPAM 关联到 DNSEditing DNS server settings with fields for server name vdns1, domain juniper.net, DNS forwarder selection, and TTL 86400. Save and Cancel buttons.

    使用 表 4 中的字段说明完成 IPAM 关联。

    表 4:将 IPAM 与 DNS 字段关联

    字段

    描述

    关联至所有 IPAM

    选中此框可将选定的 DNS 服务器关联到所有可用的 IPAM。

    可用的 IPAM

    此列显示当前可用的 IPAM。

    关联的 IPAM

    此列显示当前与所选 DNS 服务器关联的 IPAM。

    >>

    使用此按钮将可用 IPAM 关联到选定的 DNS 服务器,方法是在左列中选择可用的 IPAM,然后单击此按钮将其移动到“关联的 IPAM”列。所选 IPAM 现在与所选 DNS 服务器相关联。

    <<

    使用此按钮可取消 IPAM 与所选 DNS 服务器的关联,方法是在右列中选择关联的 IPAM,然后单击此按钮将其移动到左列(可用 IPAM)。选定的 IPAM 现在已与选定的 DNS 服务器取消关联。

    确定

    单击 “确定 ”以提交窗口中指示的更改。

    取消

    单击 “取消” 以清除所有条目并重新开始。

  6. 使用“ IP 地址管理 ”页面(配置>网络> IP 地址管理);参见 图 8)为任何 DNS 服务器配置 DNS 模式,并将 IPAM 关联到任何模式的 DNS 服务器或租户的 IP 地址。
    图 8:配置 IP 地址管理IPAM interface showing table details for ipam1 with IP Blocks vn1 1.2.3.0/24 and vn2 4.5.6.0/24; DNS and NTP Server columns empty.
  7. 若要将 IPAM 关联到虚拟 DNS 服务器或租户的 IP 地址,请在 “IP 地址管理 ”页上,选择与此 IPAM 关联的网络,然后单击最后一列中的 “操作” 按钮,然后单击 “编辑”。

    此时将显示“ 编辑 IP 地址管理 ”窗口;参见 图 9。

    图 9:DNS 服务器User interface for adding IP address management settings, including fields for name, DNS method, Virtual DNS, and NTP server IP, with options to associate IP blocks to networks and buttons to cancel or save.
  8. 在第一个字段中,从列表中选择 DNS 方法 (无、默认 DNS、租户 DNS、虚拟 DNS;请参阅 表 5。
    表 5:DNS 模式

    DNS 模式

    描述

    无

    当 VM 不需要 DNS 支持时,选择“ 无 ”。

    默认

    在默认模式下,虚拟机的 DNS 解析是根据服务器基础架构中的名称服务器配置执行的。子网默认网关配置为虚拟机的 DNS 服务器,对虚拟机的 DHCP 响应具有此 DNS 服务器选项。虚拟机发送到默认网关的 DNS 请求将发送到相应计算节点上配置的名称服务器。响应将发送回 VM。

    租户

    当租户想要使用自己的 DNS 服务器时,请配置此模式。配置 IPAM 中的服务器列表。服务器列表在 DHCP 响应中作为 DNS 服务器发送到 VM。虚拟机发送的 DNS 请求的路由方式与任何其他数据包相同,具体取决于可用的路由信息。

    虚拟 DNS

    将此模式配置为支持虚拟 DNS 服务器 (VDNS) 解析来自虚拟机的 DNS 请求。每个 IPAM 都可以在此模式下配置一个虚拟 DNS 服务器。

  9. 填写此页面上的其余字段,然后单击“ 确定 ”提交更改,或单击 “取消” 清除字段并重新开始。

使用脚本配置 DNS

您可以使用 /opt/contrail/utils 目录中的 contrail-utils RPM/DEB 包中提供的脚本来配置 DNS。安装 contrail-utils RPM/DEB 软件包时,脚本将复制到 config_api_container 或配置节点。您可以从 config_api 容器或配置节点执行脚本。 表 6 中描述了脚本。

注意:

使用脚本配置 DNS 时,请注意以下注意事项:

  • DNS 不允许在名称中使用特殊字符,但 - (破折号) 和 .(句号)。系统将丢弃名称中包含特殊字符的任何记录。

  • 仅当与 IPAM 关联的虚拟网络中 没有 虚拟机实例时,才应编辑 IPAM DNS 模式和关联。

表 6:DNS 脚本

行动

脚本

添加虚拟 DNS 服务器

脚本: add_virtual_dns.py

示例用法: python add_virtual_dns.py --api_server_ip 10.204.216.21 --api_server_port 8082 --name vdns1 --domain_name default-domain --dns_domain juniper.net --dyn_updates --record_order random --ttl 1200 --next_vdns default-domain:vdns2

删除虚拟 DNS 服务器

脚本: del_virtual_dns_record.py

示例用法: python del_virtual_dns.py --api_server_ip 10.204.216.21 --api_server_port 8082 --fq_name default-domain:vdns1

添加 DNS 记录

脚本: add_virtual_dns_record.py

示例用法: python add_virtual_dns_record.py --api_server_ip 10.204.216.21 --api_server_port 8082 --name rec1 --vdns_fqname default-domain:vdns1 --rec_name one --rec_type A --rec_class IN --rec_data 1.2.3.4 --rec_ttl 2400

删除 DNS 记录

脚本: del_virtual_dns_record.py

示例用法: python del_virtual_dns_record.py --api_server_ip 10.204.216.21 --api_server_port 8082 --fq_name default-domain:vdns1:rec1

将虚拟 DNS 服务器与 IPAM 关联

脚本: associate_virtual_dns.py

示例用法: python associate_virtual_dns.py --api_server_ip 10.204.216.21 --api_server_port 8082 --ipam_fqname default-domain:demo:ipam1 --vdns_fqname default-domain:vdns1

取消虚拟 DNS 服务器与 IPAM 的关联

脚本: disassociate_virtual_dns.py

示例用法: python disassociate_virtual_dns.py --api_server_ip 10.204.216.21 --api_server_port 8082 --ipam_fqname default-domain:demo:ipam1 --vdns_fqname default-domain:vdns1