你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 Azure PowerShell 创建 Azure DNS 专用解析程序
本文将逐步引导你完成使用 PowerShell 创建第一个专用 DNS 区域和记录的步骤。 如果你愿意,可以使用 Azure 门户完成本快速入门中的步骤。
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
Azure DNS 专用解析程序是一项新服务,借助这些服务,无需部署基于 VM 的 DNS 服务器即可从本地环境查询 Azure DNS 专用区域,反之亦然。 有关详细信息,包括权益、功能和区域可用性,请参阅什么是 Azure DNS 专用解析程序。
下图总结了本文中使用的设置:
先决条件
如果还没有 Azure 订阅,可以在开始前创建一个免费帐户。
本文假定你已安装 Az Azure PowerShell 模块。
安装 Az.DnsResolver PowerShell 模块
注意
如果以前在个人预览期间安装了 Az.DnsResolver 模块进行评估,则可以注销并删除已创建的本地 PSRepository。 然后,使用本文中提供的步骤安装最新版本的 Az.DnsResolver 模块。
安装 Az.DnsResolver 模块。
Install-Module Az.DnsResolver
确认已安装了 Az.DnsResolver 模块。 此模块的当前版本为 0.2.1。
Get-InstalledModule -Name Az.DnsResolver
在 Azure PowerShell 中设置订阅上下文
将 PowerShell 连接到 Azure 云。
Connect-AzAccount -Environment AzureCloud
如果存在多个订阅,将使用第一个订阅 ID。 若要指定其他订阅 ID,请使用以下命令。
Select-AzSubscription -SubscriptionObject (Get-AzSubscription -SubscriptionId <your-sub-id>)
为你的帐户注册 Microsoft.Network 提供程序命名空间。
必须先注册 Microsoft.Network 命名空间,然后才能将 Microsoft.Network 服务用于 Azure 订阅:
使用以下命令注册 Microsoft.Network 命名空间。
Register-AzResourceProvider -ProviderNamespace Microsoft.Network
创建一个 DNS 解析程序实例
重要
验证或确认已成功创建资源的步骤不是可选的。 请勿跳过这些步骤。 这些步骤将填充可在后续过程中使用的变量。
创建一个资源组来托管资源。 资源组必须位于受支持的区域中。 在此示例中,该位置为 westcentralus。
New-AzResourceGroup -Name myresourcegroup -Location westcentralus
在创建的资源组中创建虚拟网络。
New-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup -Location westcentralus -AddressPrefix "10.0.0.0/8"
在创建的虚拟网络中创建 DNS 解析程序。
New-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup -Location westcentralus -VirtualNetworkId "/subscriptions/<your subs id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet"
验证 DNS 解析程序是否已成功创建以及状态是否为已连接(可选)。 在输出中,dnsResolverState 为已连接。
$dnsResolver = Get-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup
$dnsResolver.ToJsonString()
创建 DNS 解析程序入站终结点
在虚拟网络中创建子网
从之前分配的 IP 地址空间在虚拟网络 (Microsoft.Network/virtualNetworks/subnets) 中创建一个子网。 子网的大小必须至少为 /28(16 个 IP 地址)。
$virtualNetwork = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup
Add-AzVirtualNetworkSubnetConfig -Name snet-inbound -VirtualNetwork $virtualNetwork -AddressPrefix "10.0.0.0/28"
$virtualNetwork | Set-AzVirtualNetwork
创建入站终结点
创建入站终结点,以使用专用虚拟网络地址空间中的某个 IP 地址从本地或其他专用位置实现名称解析。
提示
使用 PowerShell,可以将入站终结点 IP 地址指定为动态或静态地址。
如果将终结点 IP 地址指定为动态地址,则除非删除并重新预配终结点,否则该地址不会更改。 通常,在重新预配期间会再次分配相同的 IP 地址。
如果终结点 IP 地址是静态地址,则可以在重新预配终结点时指定并重复使用该地址。 所选的 IP 地址不能是子网中的保留 IP 地址。
以下命令将预配动态 IP 地址:
$ipconfig = New-AzDnsResolverIPConfigurationObject -PrivateIPAllocationMethod Dynamic -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-inbound
New-AzDnsResolverInboundEndpoint -DnsResolverName mydnsresolver -Name myinboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -IpConfiguration $ipconfig
使用以下命令指定静态 IP 地址。 不要同时使用动态和静态命令集。
必须在之前创建的子网中指定 IP 地址。 所选的 IP 地址不能是子网中的保留 IP 地址。
以下命令可预配静态 IP 地址:
$ipconfig = New-AzDnsResolverIPConfigurationObject -PrivateIPAddress 10.0.0.4 -PrivateIPAllocationMethod Static -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-inbound
New-AzDnsResolverInboundEndpoint -DnsResolverName mydnsresolver -Name myinboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -IpConfiguration $ipconfig
确认入站终结点
确认入站终结点已创建并已在分配的子网中分配有一个 IP 地址。
$inboundEndpoint = Get-AzDnsResolverInboundEndpoint -Name myinboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
$inboundEndpoint.ToJsonString()
创建 DNS 解析程序出站终结点
在虚拟网络中创建子网
从之前分配的 IP 地址空间在虚拟网络 (Microsoft.Network/virtualNetworks/subnets) 中创建一个子网(不同于入站子网 snet-inbound)。 出站子网的大小也必须至少为 /28(16 个 IP 地址)。
$virtualNetwork = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup
Add-AzVirtualNetworkSubnetConfig -Name snet-outbound -VirtualNetwork $virtualNetwork -AddressPrefix "10.1.1.0/28"
$virtualNetwork | Set-AzVirtualNetwork
创建出站终结点
出站终结点可以实现从 Azure 到外部 DNS 服务器的条件转发名称解析。
New-AzDnsResolverOutboundEndpoint -DnsResolverName mydnsresolver -Name myoutboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-outbound
确认出站终结点
确认出站终结点已创建并已在分配的子网中分配有一个 IP 地址。
$outboundEndpoint = Get-AzDnsResolverOutboundEndpoint -Name myoutboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
$outboundEndpoint.ToJsonString()
创建 DNS 解析程序转发规则集
为创建的出站终结点创建 DNS 转发规则集。
New-AzDnsForwardingRuleset -Name myruleset -ResourceGroupName myresourcegroup -DnsResolverOutboundEndpoint $outboundendpoint -Location westcentralus
确认 DNS 转发规则集
确认已创建转发规则集。
$dnsForwardingRuleset = Get-AzDnsForwardingRuleset -Name myruleset -ResourceGroupName myresourcegroup
$dnsForwardingRuleset.ToJsonString()
创建指向 DNS 转发规则集的虚拟网络链接
虚拟网络链接可以为使用 DNS 转发规则集链接到出站终结点的虚拟网络实现名称解析。
$vnet = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup
$vnetlink = New-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup -VirtualNetworkLinkName "vnetlink" -VirtualNetworkId $vnet.Id -SubscriptionId <your sub id>
确认虚拟网络链接
确认虚拟网络链接已创建。
$virtualNetworkLink = Get-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup
$virtualNetworkLink.ToJsonString()
创建第二个虚拟网络并将其链接到 DNS 转发规则集
创建第二个虚拟网络以模拟本地或其他环境。
$vnet2 = New-AzVirtualNetwork -Name myvnet2 -ResourceGroupName myresourcegroup -Location westcentralus -AddressPrefix "12.0.0.0/8"
$vnetlink2 = New-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup -VirtualNetworkLinkName "vnetlink2" -VirtualNetworkId $vnet2.Id -SubscriptionId <your sub id>
确认第二个虚拟网络
确认第二个虚拟网络已创建。
$virtualNetworkLink2 = Get-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup
$virtualNetworkLink2.ToJsonString()
创建转发规则
为规则集创建一个转发原则,可转发到一个或多个目标 DNS 服务器。 必须使用尾随点指定一个完全限定的域名 (FQDN)。 New-AzDnsResolverTargetDnsServerObject cmdlet 将默认端口设置为 53,但你也可以指定一个独一无二的端口。
$targetDNS1 = New-AzDnsResolverTargetDnsServerObject -IPAddress 192.168.1.2 -Port 53
$targetDNS2 = New-AzDnsResolverTargetDnsServerObject -IPAddress 192.168.1.3 -Port 53
$targetDNS3 = New-AzDnsResolverTargetDnsServerObject -IPAddress 10.0.0.4 -Port 53
$targetDNS4 = New-AzDnsResolverTargetDnsServerObject -IPAddress 10.5.5.5 -Port 53
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "Internal" -DomainName "internal.contoso.com." -ForwardingRuleState "Enabled" -TargetDnsServer @($targetDNS1,$targetDNS2)
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "AzurePrivate" -DomainName "azure.contoso.com" -ForwardingRuleState "Enabled" -TargetDnsServer $targetDNS3
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "Wildcard" -DomainName "." -ForwardingRuleState "Enabled" -TargetDnsServer $targetDNS4
在此示例中:
- 10.0.0.4 是解析程序的入站终结点。
- 192.168.1.2 和 192.168.1.3 是本地 DNS 服务器。
- 10.5.5.5 是保护性 DNS 服务。
重要
本快速入门中显示的规则是可用于特定场景的规则示例。 本文描述的任何转发规则都不是必需的。 请小心测试转发规则并确保这些规则不会导致 DNS 解析问题。
如果在规则集中包括通配符规则,请确保目标 DNS 服务可以解析公共 DNS 名称。 某些 Azure 服务依赖于公共名称解析。
测试专用解析程序
现在应该可以将 DNS 流量发送到 DNS 解析程序,并根据转发规则集解析记录,包括:
- 链接到部署解析程序的虚拟网络的 Azure DNS 专用区域。
- 公共 Internet DNS 命名空间中的 DNS 区域。
- 本地托管的专用 DNS 区域。
删除 DNS 解析程序
若要删除 DNS 解析程序,必须先删除解析程序中创建的资源入站终结点。 删除入站终结点后,可以删除父 DNS 解析程序。
删除入站终结点
Remove-AzDnsResolverInboundEndpoint -Name myinboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
删除虚拟网络链接
Remove-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -Name vnetlink -ResourceGroupName myresourcegroup
删除 DNS 转发规则集
Remove-AzDnsForwardingRuleset -Name $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup
删除出站终结点
Remove-AzDnsResolverOutboundEndpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup -Name myoutboundendpoint
删除 DNS 解析程序
Remove-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup