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

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

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 条目,则除非同时导入这一其他区域或修改 CNAME 条目,否则 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. 获取要导入的区域的区域文件的副本。

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

    $ORIGIN adatum.com. 
    $TTL 86400 
    @	IN	SOA	dns1.adatum.com.	hostmaster.adatum.com. (
     		2023091201 ; serial                     
     		21600      ; refresh after 6 hours                     
     		3600       ; retry after 1 hour                     
     		604800     ; expire after 1 week                     
     		86400 )    ; minimum TTL of 1 day  	     
    
     IN	NS	dns1.adatum.com.       
     IN	NS	dns2.adatum.com.        
    
     IN	MX	10	mail.adatum.com.       
     IN	MX	20	mail2.adatum.com.        
    
    dns1	IN	A	203.0.113.2
    dns2	IN	A	203.0.113.1		       
    server1	IN	A	192.0.2.2       
    server2	IN	A	192.0.2.3
    ftp	IN	A	198.51.100.1
         IN	A	198.51.100.2
    mail	IN	CNAME	server1
    mail2	IN	CNAME	server2
    www	    IN	CNAME	server1
    

    使用的名称:

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

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

    • 资源组:选择现有资源组,或“新建”,输入“myresourcegroup”,然后选择“确定”。 资源组名称在 Azure 订阅中必须唯一。
    • 名称:在此示例中键入“adatum.com”。 DNS 区域名称可以是尚未在 Azure DNS 服务器上配置的任何值。 实际值可以是从域名注册机构购买的域。
  4. 选择“查看创建”,然后选择“创建”。

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

    adatum.com 区域概述

  6. 选择“导入”,然后在“导入 DNS 区域”页上选择“浏览”。

  7. 选择 adatum.com.txt 文件,然后选择“打开”。 区域文件显示在 DNS 区域编辑器中。 请参阅以下示例:

    DNS 区域编辑器中显示的 adatum.com 区域

  8. 在继续执行下一步之前,先编辑区域数据值。

    注意

    如果区域文件中存在旧的 NS 记录,则区域导入期间会显示非阻止错误。 不会覆盖 Azure NS 记录。 在导入之前,最好是将 NS 记录移除。
    如果要重置区域序列号,请先从 SOA 中删除旧序列号,然后再导入。

  9. 选择“查看创建”,并在 DNS 区域差异查看器中查看信息。 请参阅以下示例:

    DNS 区域差异查看器中显示的 adatum.com 区域

  10. 选择创建。 系统会显示一条提示,提醒在现有区域被覆盖之前将其保存到本地设备。 选择“下载并继续”。 导入区域数据并显示区域。

  11. 选择“记录集”,查看新导入的资源记录。 请参阅以下示例:

    概述窗格中显示的 adatum.com 区域

导出区域文件

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

    adatum.com 区域已准备好导出

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

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

    ; 	Exported zone file from Azure DNS
    ; 	Zone name: adatum.com
    ; 	Date and time (UTC): Tue, 12 Sep 2023 21:33:17 GMT
    
    $TTL 86400
    $ORIGIN adatum.com
    
    ; SOA Record
    @	 3600		IN	SOA	SOA	dns1.adatum.com.	(
    	 	 	0	 ;serial
    	 	 	21600	 ;refresh
    	 	 	3600	 ;retry
    	 	 	604800	 ;expire
    	 	 	86400	 ;minimum ttl
    )
    
    ; NS Records
    @	172800	IN	NS	ns1-36.azure-dns.cn.
    @	172800	IN	NS	ns2-36.azure-dns.cn.
    @	172800	IN	NS	ns3-36.azure-dns.cn.
    @	172800	IN	NS	ns4-36.azure-dns.cn.
    
    ; MX Records
    @	3600	IN	MX	10	mail.adatum.com.
    @	3600	IN	MX	20	mail2.adatum.com.
    
    ; A Records
    dns1	3600	IN	A	203.0.113.2
    dns2	3600	IN	A	203.0.113.1
    ftp	3600	IN	A	198.51.100.1
    ftp	3600	IN	A	198.51.100.2
    server1	3600	IN	A	192.0.2.2
    server2	3600	IN	A	192.0.2.3
    
    ; AAAA Records
    
    ; CNAME Records
    mail	3600	IN	CNAME	server1
    mail2	3600	IN	CNAME	server2
    www	3600	IN	CNAME	server1
    
    ; PTR Records
    
    ; TXT Records
    
    ; SRV Records
    
    ; SPF Records
    
    ; CAA Records
    
    ; DS Records
    
    ; Azure Alias Records
    

后续步骤