专用 DNS 记录概述
本文介绍 Azure 专用 DNS 区域中对 DNS 记录的支持。 有关专用 DNS 区域的概述,请参阅:什么是 Azure 专用 DNS 区域?
DNS 记录
记录名称
使用相对名称来指定记录。 完全限定的 域名 (FQDN) 包括区域名称,而相对 域名则不包括。 例如,contoso.com
区域中的相对记录名称 www
会提供完全限定的记录名称 www.contoso.com
。
顶点记录是位于 DNS 区域的根(或顶点)中的 DNS 记录。 例如,在 DNS 区域 contoso.com
中,顶点记录还具有完全限定的名称 contoso.com
(有时称为裸域)。 按照惯例,相对名称 @ 用于表示顶点记录。
记录类型
每个 DNS 记录都有一个名称和类型。 这些记录根据其所包含的数据分为各种类型。 最常见的类型为“A”记录,这种记录将名称映射到 IPv4 地址。 另一种常见类型是“MX”记录,这种记录将名称映射到邮件服务器。
Azure 专用 DNS 支持下面常见的 DNS 记录类型:A、AAAA、CNAME、MX、PTR、SOA、SRV 和 TXT。
注意
SOA 记录中的“主机”字段不可编辑。
记录集
有时,需要创建具有给定名称和类型的多个 DNS 记录。 例如,假设在两个不同的 IP 地址上托管“www.contoso.com”网站。 该网站需要两个不同的 A 记录,每个 IP 地址一个。 这就是记录集的示例:
www.contoso.com. 3600 IN A 10.10.1.5
www.contoso.com. 3600 IN A 10.10.1.10
Azure DNS 使用记录集管理所有 DNS 记录。 记录集(也称为资源记录集)是某个区域中具有相同名称、相同类型的 DNS 记录的集合。 大多数记录集包含单个记录。 但是,在这里所示的示例中,一个记录集包含多个记录,而这种情况并不少见。
例如,假设你已经在“contoso.com”区域中创建 A 记录“www”,它指向 IP 地址“10.10.1.5”(上述第一个记录)。 要创建第二条记录,应将此记录添加到现有记录集而非创建其他记录集。
SOA 和 CNAME 记录类型例外。 对于这些类型,DNS 标准不允许多个记录具有相同的名称,因此这些记录集仅可包含单个记录。
生存时间
生存时间(或 TTL)指定客户端在重新查询之前缓存每个记录的时长。 在上面的示例中,TTL 为 3600 秒(即 1 小时)。
在 Azure DNS 中,TTL 针对记录集而不是每个记录指定,因此同一个值适用于该记录集中的所有记录。 可以指定介于 1 和 2,147,483,647 秒之间的任何 TTL 值。
通配符记录
Azure DNS 支持 通配符记录。 具有匹配名称的任何查询都会返回通配符记录,除非存在与非通配符记录集更接近的匹配项。 对于除 NS 和 SOA 外的所有记录类型,Azure DNS 都支持通配符记录集。
若要创建通配符记录集,请使用记录集名称“*”。 此外,还可以使用将“*”作为最左侧标签的名称,例如“*.foo”。
CNAME 记录
CNAME 记录集不能与其他具有相同名称的记录集共存。 例如,不能同时创建包含相对名称 www
的 CNAME 记录集和包含相对名称 www
的 A 记录。
由于区域顶点(名称为“@”)始终包含创建区域时创建的 NS 和 SOA 记录集,因此不能在区域顶点创建 CNAME 记录集。
这些约束起源于 DNS 标准,并非 Azure DNS 的限制。
SOA 记录
SOA 记录集在每个区域(名称为“@”)的顶点处自动创建,在删除该区域时会被自动删除。 无法单独创建或删除 SOA 记录。
可以修改 SOA 记录的所有属性,但 host
属性除外。 此属性将预先配置为引用 Azure DNS 提供的主名称服务器名称。
当对区域中的记录进行更改时,SOA 记录中的区域序列号不会自动更新。 如果需要,可以通过编辑 SOA 记录手动进行更新。
SRV 记录
多种服务使用 SRV 记录指定服务器位置。 在 Azure DNS 中指定 SRV 记录时:
- 服务和协议必须指定为以下划线为前缀的记录集名称的一部分,如“_sip._tcp.name”。 对于区域顶点处的记录,无需在记录名称中指定“@”,只需使用服务和协议,例如“_sip._tcp”。
- 将 priority 、weight 、port 和 target 指定为记录集中每个记录的参数。
TXT 记录
TXT 记录用于将域名映射到任意文本字符串。 会在多个应用程序中使用它们。
DNS 标准允许单个 TXT 记录包含多个字符串,其中每个字符串的长度最多可为 255 个字符。 使用多个字符串时,它们由客户端连接在一起,被视为单个字符串。
调用 Azure DNS REST API 时,需要单独指定每个 TXT 字符串。 使用 Azure 门户、PowerShell 或 CLI 接口时,应为每个记录指定单个字符串。 此字符串会在必要时自动划分为 255 个字符的段。
DNS 记录中的多个字符串不应与 TXT 记录集的多个 TXT 记录混淆。 TXT 记录集可以包含多个记录,其中每个 可以包含多个字符串。 Azure DNS 在每个 TXT 记录集(跨所有合并的记录)中支持总长度最多 1024 个字符。
标记和元数据
Tags
标记是名称/值列表,Azure 资源管理器利用它们来标记资源。 Azure 资源管理器使用标记来启用 Azure 帐单的筛选视图,并支持设置需要特定标记的策略。 有关标记的详细信息,请参阅 使用标记来组织 Azure 资源。
Azure DNS 支持使用 DNS 区域资源上的 Azure 资源管理器标记。 它不支持 DNS 记录集的标记,不过作为替代方法,DNS 记录集支持使用“元数据”,如下所述。
Metadata
作为记录集标记的替代方法,Azure DNS 支持使用“元数据”批注记录集。 与标记相类似,通过元数据可将名称/值对与每个记录集相关联。 此功能非常有用,例如可用于记录每个记录集的用途。 与标记不同的是,元数据不能用于提供 Azure 帐单的筛选视图,且不能在 Azure 资源管理器策略中指定。
Etag
假设两个人或两个进程尝试同时修改一条 DNS 记录。 哪一个占先? 占先方是否知道他们/它们已覆盖了其他人/进程创建的更改?
Azure DNS 使用 Etag 来安全地处理对同一资源的并发更改。 Etag 与 Azure 资源管理器“标记”不同。 每个 DNS 资源(区域或记录集)都有与其相关联的 Etag。 只要检索资源,就会检索其 Etag。 当更新资源时,可以选择传递回 Etag 以便 Azure DNS 可以验证服务器上的 Etag 是否匹配。 由于对资源的每次更新都会导致重新生成 Etag,Etag 不匹配表示发生了并发更改。 创建新的资源时,也可以通过使用 Etag 来确保该资源不存在。
默认情况下,Azure DNS PowerShell 使用 Etag 来阻止对区域和记录集的并发更改。 可选 -Overwrite 开关可用于取消 Etag 检查,这种情况下会覆盖发生的所有并发更改。
Etag 是在 Azure DNS REST API 级别使用 HTTP 标头指定的。 下表给出了它们的行为:
标头 | 行为 |
---|---|
无 | PUT 始终成功(没有 Etag 检查) |
If-match <etag> | 只有当资源存在并且 Etag 匹配时,PUT 才会成功 |
If-match * | 只有当资源存在时,PUT 才会成功 |
If-none-match * | 只有当资源不存在时,PUT 才会成功 |
限制
使用 Azure 专用 DNS 时,以下默认限制适用:
专用 DNS 区域
资源 | 限制 |
---|---|
每个订阅的专用 DNS 区域数 | 1000 |
每个专用 DNS 区域的记录集数 | 25000 |
专用 DNS 区域的每个记录集的记录数 | 20 |
每个专用 DNS 区域的虚拟网络链接数 | 1000 |
在启用了自动注册的情况下,每个专用 DNS 区域的虚拟网络链接数 | 100 |
在启用了自动注册的情况下,虚拟网络可以链接到的专用 DNS 区域数 | 1 |
虚拟网络可以链接的专用 DNS 区域数 | 1000 |