Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本文将逐步引导你完成使用 PowerShell 创建第一个专用 DNS 区域和记录的步骤。 如果你愿意,可以使用 Azure 门户完成本快速入门中的步骤。
Nota
建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
Azure DNS 专用解析程序是一项新服务,借助这些服务,无需部署基于 VM 的 DNS 服务器即可从本地环境查询 Azure DNS 专用区域,反之亦然。 有关详细信息,包括权益、功能和区域可用性,请参阅什么是 Azure DNS 专用解析程序。
下图总结了本文中使用的设置:
如果没有 Azure 订阅,请在开始前创建一个试用帐户。
本文假定你已安装 Az Azure PowerShell 模块。
Nota
如果以前在个人预览期间安装了 Az.DnsResolver 模块进行评估,则可以注销并删除已创建的本地 PSRepository。 然后,使用本文中提供的步骤安装最新版本的 Az.DnsResolver 模块。
安装 Az.DnsResolver 模块。
Install-Module Az.DnsResolver
确认已安装了 Az.DnsResolver 模块。 此模块的当前版本为 0.2.1。
Get-InstalledModule -Name Az.DnsResolver
将 PowerShell 连接到由世纪互联运营的 Microsoft Azure。
Connect-AzAccount -Environment AzureChinaCloud
如果存在多个订阅,将使用第一个订阅 ID。 若要指定其他订阅 ID,请使用以下命令。
Select-AzSubscription -SubscriptionObject (Get-AzSubscription -SubscriptionId <your-sub-id>)
必须先注册 Microsoft.Network 命名空间,然后才能将 Microsoft.Network 服务用于 Azure 订阅:
使用以下命令注册 Microsoft.Network 命名空间。
Register-AzResourceProvider -ProviderNamespace Microsoft.Network
Importante
验证或确认已成功创建资源的步骤不是可选的。 请勿跳过这些步骤。 这些步骤将填充可在后续过程中使用的变量。
创建一个资源组来托管资源。 资源组必须位于受支持的区域中。 在本示例中,位置为 chinanorth3。
New-AzResourceGroup -Name myresourcegroup -Location chinanorth3
在创建的资源组中创建虚拟网络。
New-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup -Location chinanorth3 -AddressPrefix "10.0.0.0/8"
在创建的虚拟网络中创建 DNS 解析程序。
New-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup -Location chinanorth3 -VirtualNetworkId "/subscriptions/<your subs id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet"
验证 DNS 解析程序是否已成功创建以及状态是否为已连接(可选)。 在输出中,dnsResolverState 为已连接。
$dnsResolver = Get-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup
$dnsResolver.ToJsonString()
从之前分配的 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 地址从本地或其他专用位置实现名称解析。
Sugerencia
使用 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 chinanorth3 -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 chinanorth3 -IpConfiguration $ipconfig
确认入站终结点已创建并已在分配的子网中分配有一个 IP 地址。
$inboundEndpoint = Get-AzDnsResolverInboundEndpoint -Name myinboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
$inboundEndpoint.ToJsonString()
从之前分配的 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 chinanorth3 -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 转发规则集。
New-AzDnsForwardingRuleset -Name myruleset -ResourceGroupName myresourcegroup -DnsResolverOutboundEndpoint $outboundendpoint -Location chinanorth3
确认已创建转发规则集。
$dnsForwardingRuleset = Get-AzDnsForwardingRuleset -Name myruleset -ResourceGroupName myresourcegroup
$dnsForwardingRuleset.ToJsonString()
虚拟网络链接可以为使用 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()
创建第二个虚拟网络以模拟本地或其他环境。
$vnet2 = New-AzVirtualNetwork -Name myvnet2 -ResourceGroupName myresourcegroup -Location chinanorth3 -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 服务。
Importante
本快速入门中显示的规则是可用于特定场景的规则示例。 本文描述的任何转发规则都不是必需规则。 请小心测试转发规则并确保这些规则不会导致 DNS 解析问题。
如果在规则集中包括通配符规则,请确保目标 DNS 服务可以解析公共 DNS 名称。 某些 Azure 服务依赖于公共名称解析。
现在应该可以将 DNS 流量发送到 DNS 解析程序,并根据转发规则集解析记录,包括:
- 链接到部署解析程序的虚拟网络的 Azure DNS 专用区域。
- 公共 Internet DNS 命名空间中的 DNS 区域。
- 本地托管的专用 DNS 区域。
若要删除 DNS 解析程序,必须先删除解析程序中创建的资源入站终结点。 删除入站终结点后,可以删除父 DNS 解析程序。
Remove-AzDnsResolverInboundEndpoint -Name myinboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
Remove-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -Name vnetlink -ResourceGroupName myresourcegroup
Remove-AzDnsForwardingRuleset -Name $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup
Remove-AzDnsResolverOutboundEndpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup -Name myoutboundendpoint
Remove-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup