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

此快速入門將逐步引導您使用 Azure CLI 來建立第一個私人 DNS 區域與第一筆記錄。

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

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

必要條件

建立資源群組

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

az group create --name MyAzureResourceGroup --location "East US"

建立私人 DNS 區域

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

az network vnet create \
  --name myAzureVNet \
  --resource-group MyAzureResourceGroup \
  --location eastus \
  --address-prefix 10.2.0.0/16 \
  --subnet-name backendSubnet \
  --subnet-prefixes 10.2.0.0/24

az network private-dns zone create -g MyAzureResourceGroup \
   -n private.contoso.com

az network private-dns link vnet create -g MyAzureResourceGroup -n MyDNSLink \
   -z private.contoso.com -v myAzureVNet -e true

如果您只想建立一個區域僅供名稱解析使用 (沒有自動主機名稱註冊),您可以使用 -e false 參數。

列出 DNS 私人區域

若要列舉 DNS 區域,請使用 az network private-dns zone list。 如需協助,請參閱 az network dns zone list --help

指定資源群組只會列出資源群組內的區域︰

az network private-dns zone list \
  -g MyAzureResourceGroup

省略資源群組則會列出訂用帳戶中的所有區域︰

az network private-dns zone list 

建立測試虛擬機器

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

az vm create \
 -n myVM01 \
 --admin-username AzureAdmin \
 -g MyAzureResourceGroup \
 -l eastus \
 --subnet backendSubnet \
 --vnet-name myAzureVnet \
 --nsg NSG01 \
 --nsg-rule RDP \
 --image win2016datacenter
az vm create \
 -n myVM02 \
 --admin-username AzureAdmin \
 -g MyAzureResourceGroup \
 -l eastus \
 --subnet backendSubnet \
 --vnet-name myAzureVnet \
 --nsg NSG01 \
 --nsg-rule RDP \
 --image win2016datacenter

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

建立其他的 DNS 記錄

若要建立 DNS 記錄,請使用 az network private-dns record-set [record type] add-record 命令。 如需說明,例如 A 記錄,請參閱 az network private-dns record-set A add-record --help

下列範例會在資源群組 MyAzureResourceGroup 中的 DNS 區域 private.contoso.com 中,建立具有相對名稱 db 的記錄。 記錄集的完整名稱是 db.private.contoso.com。 記錄類型為 "A",IP 位址是 "10.2.0.4"。

az network private-dns record-set a add-record \
  -g MyAzureResourceGroup \
  -z private.contoso.com \
  -n db \
  -a 10.2.0.4

檢視 DNS 記錄

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

az network private-dns record-set list \
  -g MyAzureResourceGroup \
  -z private.contoso.com

測試私人區域

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

設定 VM,以允許輸入 ICMP

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

  1. 連線至 myVM01,然後以系統管理員權限開啟 Windows PowerShell 視窗。

  2. 執行以下命令:

    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 您先前建立的 db 名稱:

    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 milli-seconds:
        Minimum = 0ms, Maximum = 0ms, Average = 0ms
    PS C:\>
    

清除資源

當不再需要時,請刪除 MyAzureResourceGroup 資源群組,來刪除本快速入門中建立的資源。

az group delete --name MyAzureResourceGroup

下一步