快速入門:使用 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 區域發佈到虛擬網路,則可指定允許解析區域內記錄的虛擬網路清單。 這稱為「連結」虛擬網路。 啟用自動註冊時,Azure DNS 也會在每次建立虛擬機器時更新區域記錄,變更其 IP 位址,或者在刪除虛擬機器時更新。
必要條件
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶 。
如果您想要的話,可以使用 Azure CLI 完成此快速入門。
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
建立資源群組
首先,請建立包含 DNS 區域的資源群組:
New-AzResourceGroup -name MyAzureResourceGroup -location "eastus"
建立私人 DNS 區域
使用 New-AzPrivateDnsZone
Cmdlet 建立 DNS 區域。
下列範例會建立名為 myAzureVNet 的虛擬網路。 然後,它會在 MyAzureResourceGroup資源群組中建立名為 private.contoso.com 的 DNS 區域、將 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 封包。
使用建立 VM 時所使用的使用者名稱和密碼連線至 myVM01。
以管理員權限開啟 Windows PowerShell 視窗。
執行以下命令:
New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4
針對 myVM02 重複。
依照名稱 Ping VM
從 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:\>
現在 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 milliseconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms PS C:\>
清除資源
當不再需要時,請刪除 MyAzureResourceGroup 資源群組,來刪除本文中建立的資源。
Remove-AzResourceGroup -Name MyAzureResourceGroup