本文將逐步引導您使用 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 解析器,且狀態已連線 (選擇性)。 在輸出中, dnsResolverState 為 Connected。
$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 轉送規則集的虛擬網路連結
虛擬網路連結可針對連結至輸出端點 (其中包含 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 私人區域。
- 公用網際網路 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