为 Azure 中托管的服务配置反向 DNS
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
本文介绍如何为 Azure 中托管的服务配置反向 DNS 查找。
Azure 中的服务使用由 Azure 分配并拥有的 IP 地址。 必须在相应的 Azure 拥有的反向 DNS 查找区域中创建这些反向 DNS 记录(PTR 记录)。
这种情况不同于在 Azure DNS 中托管分配的 IP 范围的反向 DNS 查找区域的能力。 在这种情况下,必须将由反向查找区域表示的 IP 范围分配给组织(通常通过 ISP 执行)。
阅读本文之前,应先熟悉 Azure DNS 中的反向 DNS。
在 Azure DNS 中,计算资源(例如虚拟机、虚拟机规模集和 Service Fabric 群集)具有公共 IP 地址。 反向 DNS 查找是使用公共 IP 地址的“ReverseFqdn”属性配置的。
Azure 应用服务和应用程序网关目前不支持反向 DNS。
反向 DNS 记录的验证
第三方不应有权为映射到 DNS 域的 Azure 服务创建反向 DNS 记录。 因此,只有在转发 DNS 查找解析为相同的公共 IP 地址或订阅中定义的名称时,Azure 才允许创建反向 DNS 记录。 请参阅以下示例。 此限制也适用于云服务。
仅在设置或修改反向 DNS 记录时执行验证。 定期重新验证未完成。
例如,假设公共 IP 地址资源具有 DNS 名称 contosoapp1.chinaeast.cloudapp.chinacloudapi.cn
和 IP 地址 23.96.52.53
。 可将此公共 IP 地址的反向 FQDN 指定为以下内容:
- 公共 IP 地址的 DNS 名称:
contosoapp1.chinaeast.cloudapp.chinacloudapi.cn
。 - 同一订阅中另一个 PublicIpAddress 的 DNS 名称,例如
contosoapp2.chinaeast.cloudapp.chinacloudapi.cn
。 - 虚 DNS 名称,例如
app1.contoso.com
。 只要首先将名称配置为指向contosoapp1.chinaeast.cloudapp.chinacloudapi.cn
的 CNAME。 该名称还可以指向同一订阅中的其他公共 IP 地址。 - 虚 DNS 名称,例如
app1.contoso.com
。 只要首先将此名称配置为指向 IP 地址 23.96.52.53 的 A 记录。 该名称还可以指向同一订阅中的另一个 IP 地址。
相同的约束也适用于云服务的反向 DNS。
公共 IP 地址资源的反向 DNS
本部分提供有关如何在资源管理器部署模型中为公用 IP 地址资源配置反向 DNS 的详细说明。 可以使用 Azure PowerShell、Azure 经典 CLI 或 Azure CLI 来完成此任务。 Azure 门户当前不支持为公共 IP 地址资源配置反向 DNS。
Azure 当前仅支持为公共 IPv4 地址资源配置反向 DNS。
重要
新的或更新的 PTR 记录必须通过验证。 如果公共 IP 地址的 PTR 当前不存在,则必须使用 DomainNameLabel (Azure PowerShell)、-d 参数(Azure 经典 CLI)或 --dns-name 参数 (Azure CLI) 指定主机名,如以下示例所示。
为具有现有名称的公共 IP 地址配置反向 DNS
如果公共 IP 地址已具有在你的订阅中或通过转发 DNS 查找定义的名称,请使用以下过程。 更新 PTR 或将其添加到现有公共 IP 地址后,查看并验证是否已配置了正确的 PTR。
Azure PowerShell
若要使用现有 PTR 更新公共 IP 地址上的反向 DNS,请执行以下操作:
$pip = Get-AzPublicIpAddress -Name "PublicIp" -ResourceGroupName "MyResourceGroup"
$pip.DnsSettings.ReverseFqdn = "contosoapp1.chinaeast.cloudapp.chinacloudapi.cn."
Set-AzPublicIpAddress -PublicIpAddress $pip
若要将反向 DNS 添加到尚未具有 PTR 的公共 IP 地址,必须指定 DomainNameLabel:
$pip = Get-AzPublicIpAddress -Name "PublicIp" -ResourceGroupName "MyResourceGroup"
$pip.DnsSettings = New-Object -TypeName "Microsoft.Azure.Commands.Network.Models.PSPublicIpAddressDnsSettings"
$pip.DnsSettings.DomainNameLabel = "contosoapp1"
$pip.DnsSettings.ReverseFqdn = "contosoapp1.chinaeast.cloudapp.chinacloudapi.cn."
Set-AzPublicIpAddress -PublicIpAddress $pip
Azure 经典 CLI
若要使用现有 PTR 更新公共 IP 地址上的反向 DNS,请执行以下操作:
azure network public-ip set -n PublicIp -g MyResourceGroup -f contosoapp1.chinaeast.cloudapp.chinacloudapi.cn.
若要将反向 DNS 添加到还没有 PTR 的公共 IP 地址,必须指定 DNS 名称 (-d):
azure network public-ip set -n PublicIp -g MyResourceGroup -d contosoapp1 -f contosoapp1.chinaeast.cloudapp.chinacloudapi.cn.
Azure CLI
若要使用现有 PTR 更新公共 IP 地址上的反向 DNS,请执行以下操作:
az network public-ip update --resource-group MyResourceGroup --name PublicIp --reverse-fqdn contosoapp1.chinaeast.cloudapp.chinacloudapi.cn.
若要将反向 DNS 添加到还没有 PTR 的公共 IP 地址,必须指定 DNS 名称 (--dns-name):
az network public-ip update --resource-group MyResourceGroup --name PublicIp --reverse-fqdn contosoapp1.chinaeast.cloudapp.chinacloudapi.cn --dns-name contosoapp1
创建具有反向 DNS 的公共 IP 地址
注意
如果订阅中已存在公共 IP 地址,请参阅为具有现有名称的公共 IP 地址配置反向 DNS。
若要创建具有已指定的反向 DNS 属性的新 PublicIpAddress,请执行以下操作:
Azure PowerShell
New-AzPublicIpAddress -Name "PublicIp" -ResourceGroupName "MyResourceGroup" -Location "China East" -AllocationMethod Dynamic -DomainNameLabel "contosoapp2" -ReverseFqdn "contosoapp2.chinaeast.cloudapp.chinacloudapi.cn."
Azure 经典 CLI
azure network public-ip create -n PublicIp -g MyResourceGroup -l chinaeast -d contosoapp3 -f contosoapp3.chinaeast.cloudapp.chinacloudapi.cn.
Azure CLI
az network public-ip create --name PublicIp --resource-group MyResourceGroup --location chinaeast --dns-name contosoapp1 --reverse-fqdn contosoapp1.chinaeast.cloudapp.chinacloudapi.cn
查看现有公共 IP 地址的反向 DNS
若要查看为现有 PublicIpAddress 配置的反向 DNS 值,请执行以下操作:
Azure PowerShell
Get-AzPublicIpAddress -Name "PublicIp" -ResourceGroupName "MyResourceGroup"
Azure 经典 CLI
azure network public-ip show -n PublicIp -g MyResourceGroup
Azure CLI
az network public-ip show --name PublicIp --resource-group MyResourceGroup
从现有公共 IP 地址中删除反向 DNS
若要从现有 PublicIpAddress 中删除反向 DNS 属性,请执行以下操作:
Azure PowerShell
$pip = Get-AzPublicIpAddress -Name "PublicIp" -ResourceGroupName "MyResourceGroup"
$pip.DnsSettings.ReverseFqdn = ""
Set-AzPublicIpAddress -PublicIpAddress $pip
Azure 经典 CLI
azure network public-ip set -n PublicIp -g MyResourceGroup –f ""
Azure CLI
az network public-ip update --resource-group MyResourceGroup --name PublicIp --reverse-fqdn ""
配置云服务的反向 DNS
本部分提供有关如何使用 Azure PowerShell 在经典部署模型中配置云服务的反向 DNS 的详细说明。 不支持通过 Azure 门户、Azure 经典 CLI 或 Azure CLI 为云服务配置反向 DNS。
将反向 DNS 添加到现有云服务
若要将反向 DNS 记录添加到现有云服务,请执行以下操作:
Set-AzureService –ServiceName "contosoapp1" –Description "App1 with Reverse DNS" –ReverseDnsFqdn "contosoapp1.chinacloudapp.cn."
使用反向 DNS 创建云服务
若要创建具有已指定的反向 DNS 属性的新云服务,请执行以下操作:
New-AzureService –ServiceName "contosoapp1" –Location "China East" –Description "App1 with Reverse DNS" –ReverseDnsFqdn "contosoapp1.chinacloudapp.cn."
查看现有云服务的反向 DNS
若要查看现有云服务的反向 DNS 属性,请执行以下操作:
Get-AzureService "contosoapp1"
从现有云服务中删除反向 DNS
若要从现有云服务中删除反向 DNS 属性,请执行以下操作:
Set-AzureService –ServiceName "contosoapp1" –Description "App1 with Reverse DNS" –ReverseDnsFqdn ""
常见问题解答
反向 DNS 记录的费用如何?
完全免费! 反向 DNS 记录或查询不会产生额外的费用。
反向 DNS 记录是否从 Internet 解析?
是的。 为 Azure 服务设置反向 DNS 属性后,Azure 将管理所需的所有 DNS 委托和 DNS 区域,以确保可为所有 Internet 用户进行解析。
是否为 Azure 服务创建默认的反向 DNS 记录?
不是。 反向 DNS 是可选功能。 如果选择不配置反向 DNS,则不会创建任何默认的反向 DNS 记录。
完全限定的域名 (FQDN) 的格式是什么?
FQDN 以正向顺序指定,且必须以点号结尾(例如“app1.contoso.com.”)。
如果指定的反向 DNS 条目的验证检查失败,会发生什么情况?
如果反向 DNS 验证检查失败,则配置反向 DNS 记录的操作也会失败。 请根据需要更正反向 DNS 值,然后重试。
是否可以为 Azure 应用服务配置反向 DNS?
不是。 Azure 应用服务不支持反向 DNS。
是否可以为 Azure 服务配置多个反向 DNS 记录?
不是。 Azure 仅支持为每个 Azure 云服务或 PublicIpAddress 配置一个反向 DNS 记录。
是否可以为 IPv6 PublicIpAddress 资源配置反向 DNS?
否。 Azure DNS 当前不支持公共 IPv6 地址的反向 DNS(PTR 记录)。
是否可以从 Azure 计算服务将电子邮件发送到外部域?
直接从 Azure 部署发送电子邮件的技术能力取决于订阅类型。 无论是哪种订阅类型,Azure 都建议使用受信任的邮件中继服务来发送出站邮件。 有关详细信息,请参阅增强在 Azure 中发送电子邮件的安全性 - 2017 年 11 月更新。
后续步骤
- 有关反向 DNS 的详细信息,请参阅反向 DNS 查找。
- 了解如何在 Azure DNS 中为 ISP 分配的 IP 范围托管反向查找区域。