快速入門:使用 Azure PowerShell 建立 Azure DNS 私人解析器

本文將逐步引導您使用 Azure PowerShell 建立第一個私人 DNS 區域和記錄。 您可以依偏好使用 Azure 入口網站完成此快速入門。

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

Azure DNS 私人解析器是一項新服務,可讓您從內部部署環境查詢 Azure DNS 私人區域 (反之亦然),而且不需要部署以 VM 為基礎的 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

如果有多個訂用帳戶存在,則會使用第一個訂用帳戶標識碼。 若要指定不同的訂閱識別碼,請使用下列命令。

Select-AzSubscription -SubscriptionObject (Get-AzSubscription -SubscriptionId <your-sub-id>)

為您的帳戶註冊 Microsoft.Network 提供者命名空間。

您必須先註冊 Microsoft.Network 命名空間,才能搭配 Azure 訂閱使用 Microsoft.Network 服務:

使用下列命令來註冊 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 解析器,且狀態已連線 (選擇性)。 在輸出中, dnsResolverStateConnected

$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 位址空間,在虛擬網路中建立不同於您輸入子網 (snet-inbound) 的子網路 (Microsoft.Network/virtualNetworks/subnets)。 輸出子網路的大小也必須至少為 /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 轉送規則集) 的虛擬網路啟用名稱解析。

$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 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 私人區域。
  • 公用網際網路 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

下一步