使用 Azure 门户导入和导出专用 DNS 区域文件

本文介绍如何使用 Azure 门户在 Azure 专用 DNS 中导入和导出 DNS 区域文件。 你还可以使用 Azure CLI 导入和导出区域文件

DNS 区域迁移简介

DNS 区域文件是一种文本文件,其中包含区域中每个 DNS 记录的信息。 它会遵循标准格式,使其适合在 DNS 系统之间传输 DNS 记录。 使用区域文件是将 DNS 区域导入 Azure DNS 的一种快捷简便的方法。 还可将区域文件从 Azure DNS 导出以与其他 DNS 系统一起使用。

Azure DNS 支持通过 Azure CLI 和 Microsoft Azure 门户导入和导出区域文件。

获取现有的 DNS 区域文件

将 DNS 区域文件导入 Azure DNS 之前,需要获取区域文件的副本。 此文件的来源取决于托管 DNS 区域的位置。

  • 如果你的 DNS 区域由合作伙伴服务托管,则该服务应该为你提供下载 DNS 区域文件的方法。 合作伙伴服务包括域注册机构、专用 DNS 托管提供商或备用云提供商。
  • 如果 DNS 区域是在 Windows DNS 上托管的,则区域文件的默认文件夹是 %systemroot%\system32\dns。 每个区域文件的完整路径还会显示在 DNS 控制台的“常规”选项卡上。
  • 如果 DNS 区域是通过使用 BIND 托管的,则在 BIND 配置文件 named.conf 中会指定每个区域的区域文件位置。

重要

如果导入的区域文件包含指向另一区域中名称的 CNAME 条目,Azure DNS 必须能够解析其他区域中的资源记录。

将 DNS 区域文件导入 Azure DNS

导入区域文件时会在 Azure DNS 中新建一个区域(如果该区域尚不存在)。 如果区域已存在,则区域文件中的记录集与现有的记录集合并。

合并行为

  • 默认情况下,新的记录集将与现有记录集合并。 合并的记录集内的相同记录不会重复。
  • 合并记录集时,会使用以前存在的记录集的生存时间 (TTL)。
  • 起始授权机构 (SOA) 参数(除 host 除外)始终取自导入的区域文件。 区域顶点处的名称服务器记录集也始终使用从导入的区域文件中获取的 TTL。
  • 导入的 CNAME 记录将替换现有的同名 CNAME 记录。
  • CNAME 记录与另一同名但不同类型的记录发生冲突时,将使用现有记录。

有关导入的其他信息

下面几点提供有关区域导入过程的其他详细信息。

  • $TTL 指令是可选的并受支持。 如未提供 $TTL 指令,会导入没有显式 TTL 的记录,且其默认 TTL 设置为 3600 秒。 当同一个记录集的两个记录指定不同的 TTL 时,会使用较低的值。
  • $ORIGIN 指令是可选的并受支持。 如果未设置 $ORIGIN,则使用的默认值是命令行中指定的区域名称,包括结尾句点 (.)。
  • $INCLUDE$GENERATE 指令不受支持。
  • 支持以下记录类型:A、AAAA、CAA、CNAME、MX、NS、SOA、SRV 和 TXT。
  • Azure DNS 会在创建区域时,自动创建 SOA 记录。 导入区域文件时,除了host 参数,所有的 SOA 参数都取自区域文件。 此参数使用 Azure DNS 提供的值,因为它需要引用 Azure DNS 提供的主名称服务器。
  • Azure DNS 在创建区域时,也会在区域顶点处自动创建名称服务器记录集。 仅导入此记录集的 TTL。 这些记录包含由 Azure DNS 提供的名称服务器名称。 导入的区域文件中包含的值不会覆盖记录数据。
  • Azure DNS 仅支持单字符串的 TXT 记录。 多字符串 TXT 记录会被连接在一起并截断为 255 个字符。
  • 要导入的区域文件包含的行数不得超过 10,000 条,记录集数量不能超过 3,000 个。

导入区域文件

  1. 获取要导入的区域的区域文件的副本。

    注意

    如果区域中存在授权起始 (SOA) 记录,则会用与 Azure 专用 DNS 兼容的值覆盖该记录。 在导入之前,必须删除名称服务器 (NS) 记录。 Azure 专用 DNS 的兼容资源记录类型包括 A、AAAA、CNAME、MX、PTR、SOA、SRV 和 TXT。 不兼容的记录在专用 DNS 区域编辑器中以红色下划线显示。

    此示例使用以下小型区域文件和资源记录:

    ; MX Records
    
    ; A Records
    aa1	3600	IN	A	10.10.0.1
    db1002	3600	IN	A	10.1.1.2
    myvm	10	IN	A	10.10.2.5
    server1	3600	IN	A	10.0.1.1
    server2	3600	IN	A	10.0.1.2
    
    ; AAAA Records
    
    ; CNAME Records
    app1	3600	IN	CNAME	aa1.private.contoso.com.
    
    ; PTR Records
    
    ; TXT Records
    
    ; SRV Records
    

    使用的名称:

    • 源区域名称:private.contoso.com
    • 目标区域名称:private.contoso.com
    • 区域文件名:private.contoso.com.txt
    • 资源组:myresourcegroup
  2. 打开“专用 DNS 区域”概述页面,然后选择“创建”

  3. 在“创建 DNS 区域” 页上,键入或选择以下值:

    • 资源组:选择现有资源组,或“新建”,输入“myresourcegroup”,然后选择“确定”。
    • Name:对于此示例,请键入 private.contoso.com
  4. 选择“专用 DNS 区域编辑器”选项卡,然后拖放或浏览并选择 private.contoso.com.txt 文件。 随即将打开“专用 DNS 区域编辑器”

  5. 如果需要更改区域,可以编辑显示的值。

    显示 DNS 区域编辑器中显示的 private.contoso.com 区域的屏幕截图。

  6. 选择“查看 + 创建”,然后选择“创建”。

  7. 部署完成后,选择“转到资源”,再选择“记录集”。 与 Azure 专用 DNS 兼容的 SOA 记录会自动添加到该区域。 请参阅以下示例:

    显示 private.contoso.com 区域记录集的屏幕截图。

导出区域文件

  1. 打开“专用 DNS 区域”概述页面,然后选择要导出的区域。 例如 private.contoso.com。 请参阅以下示例:

    显示 private.contoso.com 区域可供导出的屏幕截图。

  2. 选择“导出”。 该文件会作为文本文件下载到默认的下载目录,名为“AzurePrivateDnsZone-private.contoso.com-number.txt”,其中 number 是一个自动生成的索引编号。

  3. 打开该文件以查看内容。 请参阅以下示例:

    ; 	Exported zone file from Azure Private DNS
    ; 	Zone name: private.contoso.com
    ; 	Date and time (UTC): Mon, 17 Jun 2024 20:35:47 GMT
    
    $TTL 10
    $ORIGIN private.contoso.com
    
    ; SOA Record
    @	 3600		IN	SOA	azureprivatedns.cn	azureprivatedns-host.microsoft.com	(
      	 	1	 ;serial
      	 	3600	 ;refresh
      	 	300	 ;retry
      	 	2419200	 ;expire
      	 	10	 ;minimum ttl
    )
    
    ; MX Records
    
    ; A Records
    aa1	3600	IN	A	10.10.0.1
    db1002	3600	IN	A	10.1.1.2
    myvm	10	IN	A	10.10.2.5
    server1	3600	IN	A	10.0.1.1
    server2	3600	IN	A	10.0.1.2
    
    ; AAAA Records
    
    ; CNAME Records
    app1	3600	IN	CNAME	aa1.private.contoso.com.
    
    ; PTR Records
    
    ; TXT Records
    
    ; SRV Records
    

后续步骤