快速入門:使用 Azure PowerShell 建立 Azure 私人 DNS 區域

本文將逐步引導您完成使用 Azure PowerShell 建立第一個私人 DNS 區域和記錄的步驟。

注意

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

DNS 區域用於裝載特定網域的 DNS 記錄。 若要開始將網域裝載到 Azure DNS 中,您必須建立該網域名稱的 DNS 區域。 接著在此 DNS 區域內,建立網域的每筆 DNS 記錄。 若要將私人 DNS 區域發佈到虛擬網路,則可指定允許解析區域內記錄的虛擬網路清單。 這些稱為 連結 的虛擬網路。 啟用自動註冊時,每當建立虛擬機、變更其IP位址或刪除時,Azure DNS也會更新區域記錄。

必要條件

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

如果您想要的話,您可以使用 Azure CLI 完成本快速入門

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Button to launch Azure Cloud Shell.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

建立資源群組

首先,建立資源群組以包含 DNS 區域:

New-AzResourceGroup -name MyAzureResourceGroup -location "eastus"

建立私人 DNS 區域

DNS 區域是使用 New-AzPrivateDnsZone Cmdlet 所建立。

下列範例會建立名為 myAzureVNet 的虛擬網路。 然後,它會在 MyAzureResourceGroup 資源群組中建立名為 private.contoso.comDNS 區域、將 DNS 區域連結至 MyAzureVnet 虛擬網路,並啟用自動註冊。

Install-Module -Name Az.PrivateDns -force

$backendSubnet = New-AzVirtualNetworkSubnetConfig -Name backendSubnet -AddressPrefix "10.2.0.0/24"
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName MyAzureResourceGroup `
  -Location eastus `
  -Name myAzureVNet `
  -AddressPrefix 10.2.0.0/16 `
  -Subnet $backendSubnet

$zone = New-AzPrivateDnsZone -Name private.contoso.com -ResourceGroupName MyAzureResourceGroup

$link = New-AzPrivateDnsVirtualNetworkLink -ZoneName private.contoso.com `
  -ResourceGroupName MyAzureResourceGroup -Name "mylink" `
  -VirtualNetworkId $vnet.id -EnableRegistration

如果您想要只針對名稱解析建立區域(沒有自動主機名註冊),您可以省略 -EnableRegistration 參數。

列出 DNS 私人區域

從 省略區域名稱 Get-AzPrivateDnsZone,您可以列舉資源群組中的所有區域。 此作業會傳回區域對象的陣列。

$zones = Get-AzPrivateDnsZone -ResourceGroupName MyAzureResourceGroup
$zones

藉由省略區域 Get-AzPrivateDnsZone名稱和來自 的資源組名,您可以列舉 Azure 訂用帳戶中的所有區域。

$zones = Get-AzPrivateDnsZone
$zones

建立測試虛擬機

現在,請建立兩部虛擬機,以便測試私人 DNS 區域:

New-AzVm `
    -ResourceGroupName "myAzureResourceGroup" `
    -Name "myVM01" `
    -Location "East US" `
    -subnetname backendSubnet `
    -VirtualNetworkName "myAzureVnet" `
    -addressprefix 10.2.0.0/24 `
    -OpenPorts 3389

New-AzVm `
    -ResourceGroupName "myAzureResourceGroup" `
    -Name "myVM02" `
    -Location "East US" `
    -subnetname backendSubnet `
    -VirtualNetworkName "myAzureVnet" `
    -addressprefix 10.2.0.0/24 `
    -OpenPorts 3389

建立虛擬機需要幾分鐘的時間才能完成。

建立其他 DNS 記錄

您可以使用 New-AzPrivateDnsRecordSet Cmdlet 來建立記錄集。 下列範例會在資源群組 MyAzureResourceGroup 中,在 DNS 區域 private.contoso.com 建立具有相對名稱 db 的記錄。 記錄集的完整名稱 db.private.contoso.com。 記錄類型為 “A”,IP 位址為 “10.2.0.4”,而 TTL 為 3600 秒。

New-AzPrivateDnsRecordSet -Name db -RecordType A -ZoneName private.contoso.com `
   -ResourceGroupName MyAzureResourceGroup -Ttl 3600 `
   -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address "10.2.0.4")

檢視 DNS 記錄

若要列出您區域中的 DNS 記錄,請執行:

Get-AzPrivateDnsRecordSet -ZoneName private.contoso.com -ResourceGroupName MyAzureResourceGroup

測試私人區域

現在您可以測試 private.contoso.com 私人區域的名稱解析

設定 VM 以允許輸入 ICMP

您可以使用 ping 命令來測試名稱解析。 因此,在兩部虛擬機上設定防火牆,以允許輸入ICMP封包。

  1. 使用您在建立 VM 時所使用的使用者名稱和密碼,連線 至 myVM01。

  2. 使用系統管理員許可權開啟 Windows PowerShell 視窗。

  3. 執行以下命令:

    New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4
    

針對 myVM02 重複。

依名稱 Ping VM

  1. 從 myVM02 Windows PowerShell 命令提示字元中,使用自動註冊的主機名 ping myVM01:

    ping myVM01.private.contoso.com
    

    您應該看到類似如下所示的輸出:

    PS C:\> ping myvm01.private.contoso.com
    
    Pinging myvm01.private.contoso.com [10.2.0.4] with 32 bytes of data:
    Reply from 10.2.0.4: bytes=32 time<1ms TTL=128
    Reply from 10.2.0.4: bytes=32 time=1ms TTL=128
    Reply from 10.2.0.4: bytes=32 time<1ms TTL=128
    Reply from 10.2.0.4: bytes=32 time<1ms TTL=128
    
    Ping statistics for 10.2.0.4:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 0ms, Maximum = 1ms, Average = 0ms
    PS C:\>
    
  2. 現在 ping 您先前建立的資料庫名稱:

    ping db.private.contoso.com
    

    您應該看到類似如下所示的輸出:

    PS C:\> ping db.private.contoso.com
    
    Pinging db.private.contoso.com [10.2.0.4] with 32 bytes of data:
    Reply from 10.2.0.4: bytes=32 time<1ms TTL=128
    Reply from 10.2.0.4: bytes=32 time<1ms TTL=128
    Reply from 10.2.0.4: bytes=32 time<1ms TTL=128
    Reply from 10.2.0.4: bytes=32 time<1ms TTL=128
    
    Ping statistics for 10.2.0.4:
        Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milliseconds:
        Minimum = 0ms, Maximum = 0ms, Average = 0ms
    PS C:\>
    

清除資源

若不再需要,請刪除 MyAzureResourceGroup 資源群組,以刪除本文中建立的資源。

Remove-AzResourceGroup -Name MyAzureResourceGroup

下一步