Share via


匯入和匯出 Azure 私人 DNS 的私人 DNS 區域檔案

本文會引導您了解如何使用 Azure CLI 來匯入和匯出適用於 Azure DNS 的 DNS 區域檔案。

DNS 區域移轉簡介

DNS 區域檔案是一個文字檔,其中包含區域中每筆網域名稱系統 (DNS) 記錄的詳細資料。 它會遵循標準格式,使其適合於在 DNS 系統之間傳送 DNS 記錄。 使用區域檔案是從 Azure DNS 移入或移出 DNS 區域的快速、可靠又方便的方法。

Azure 私人 DNS 支援透過 Azure CLI 匯入和匯出區域檔案。 目前支援透過 Azure PowerShell 或 Azure 入口網站匯入區域檔案。

Azure CLI 是用來管理 Azure 服務的跨平台命令列工具。 它可從 Azure 下載頁面取得,且適用於 Windows、Mac 及 Linux 平台。 跨平台支援對於匯入和匯出區域檔案十分重要,因為最常見的名稱伺服器軟體 BIND 通常會在 Linux 上執行。

取得現有的 DNS 區域檔案

將 DNS 區域檔案匯入 Azure DNS 之前,您必須取得區域檔案的複本。 此檔案的來源取決於目前裝載 DNS 區域的位置。

  • 如果 DNS 區域是由合作夥伴服務 (例如網域註冊機構、專用 DNS 主機服務提供者或其他雲端提供者) 託管,該服務應提供下載 DNS 區域檔案的能力。
  • 如果 DNS 區域託管在 Windows DNS 上,區域檔案的預設資料夾是 %systemroot%\system32\dns。 DNS 主控台的 [一般] 索引標籤上,也會顯示每個區域檔案的完整路徑。
  • 如果使用 BIND 裝載 DNS 區域,則 BIND 組態檔 named.conf中會指定每個區域的區域檔案位置。

將 DNS 區域檔案匯入至 Azure 私人 DNS

匯入區域檔案會在 Azure 私人 DNS 中建立新區域 (如果區域不存在)。 如果區域已經存在,則區域檔案中的記錄集必須與現有的記錄集合併。

合併行為

  • 預設會合併現有和新的記錄集。 合併的資料錄集內相同的記錄會進行重複資料刪除。
  • 合併記錄集時,會使用預先存在之記錄集的存留時間 (TTL)。
  • 起始授權 (SOA) 參數 (host 除外) 一律取自匯入的區域檔案。 同樣地,對於位於區域頂點的名稱伺服器記錄集,TTL 一律取自匯入的區域檔案。
  • 匯入的 CNAME 記錄不會取代具有相同名稱的現有 CNAME 記錄。
  • 當 CNAME 記錄與另一筆同名但不同類型的記錄 (不論何者是現有或新的記錄) 之間發生衝突時,會保留現有的記錄。

匯入的其他資訊

下列幾點提供有關區域匯入程序的其他技術詳細資訊。

  • $TTL 指示詞為選擇性且受到支援。 若未提供 $TTL 指示詞,會匯入沒有明確 TTL 的記錄,並設定為預設 TTL 3600 秒。 如果相同資料錄集中有兩筆記錄指定不同的 TTL,則會使用較低的值。
  • $ORIGIN 指示詞為選擇性且受到支援。 若未設定 $ORIGIN ,則使用的預設值是在命令列上指定的區域名稱 (加上結尾的 ".")。
  • $INCLUDE$GENERATE 指示詞不受支援。
  • 支援以下記錄類型:A、AAAA、CAA、CNAME、MX、NS、SOA、SRV 及 TXT。
  • Azure DNS 會在建立區域時,自動建立 SOA 記錄。 當您匯入區域檔案時,所有 SOA 參數都會取自該區域檔案,但 host 參數除外。 這個參數會使用 Azure DNS 所提供的值。 這是因為此參數必須參照 Azure DNS 所提供的主要名稱伺服器。
  • Azure DNS 也會在建立區域時,自動建立位於區域頂點的名稱伺服器記錄集。 只會匯入此記錄集的 TTL。 這些記錄包含 Azure DNS 所提供的名稱伺服器名稱。 所匯入區域檔案中包含的值不會覆寫記錄資料。
  • Azure DNS 僅支援單一字串 TXT 記錄。 Multistring TXT 記錄會串連起來並截斷為 255 個字元。

CLI 格式和值

用來匯入 DNS 區域的 Azure CLI 命令格式為:

az network private-dns zone import -g <resource group> -n <zone name> -f <zone file name>

值:

  • <resource group> 是 Azure DNS 中區域的資源群組名稱。
  • <zone name> 是區域的名稱。
  • <zone file name> 是要匯入之區域檔案的路徑/名稱。

如果資源群組中不存在具有此名稱的區域,則系統會為您建立。 如果區域已經存在,則匯入的記錄集會與現有的記錄集合併。

匯入區域檔案

匯入 contoso.com區域的區域檔案。

  1. 如果您還沒有 Resource Manager 資源群組,則必須建立一個。

    az group create --resource-group myresourcegroup -l westeurope
    
  2. 為了將 contoso.com.txt 檔案中的 contoso.com 區域匯入至 myresourcegroup 資源群組中的新 DNS 區域,需執行命令 az network private-dns zone import
    此命令會載入並剖析該區域檔案。 此命令會在 Azure DNS 服務上執行一系列的命令,以建立區域和區域中的所有記錄集。 此命令會在主控台視窗中報告進度,以及任何的錯誤或警告。 由於記錄集是以系列方式建立,可能需要幾分鐘的時間來匯入大型的區域檔案。

    az network private-dns zone import -g myresourcegroup -n contoso.com -f contoso.com.txt
    

確認區域

若要在匯入檔案之後確認 DNS 區域,您可以使用下列任何一個方法︰

  • 您可以使用下列 Azure CLI 命令來列出記錄:

    az network private-dns record-set list -g myresourcegroup -z contoso.com
    
  • 您可以使用 nslookup 來驗證記錄的名稱解析。 因為尚未委派區域,所以您必須明確指定正確的 Azure DNS 名稱伺服器。 下列範例顯示如何擷取已指派給區域的名稱伺服器名稱。 這也會示範如何使用 nslookup 來查詢 "www" 記錄。

從 Azure DNS 匯出 DNS 區域檔案

用來匯出 DNS 區域的 Azure CLI 命令格式為:

az network private-dns zone export -g <resource group> -n <zone name> -f <zone file name>

值:

  • <resource group> 是 Azure DNS 中區域的資源群組名稱。
  • <zone name> 是區域的名稱。
  • <zone file name> 是要匯出之區域檔案的路徑/名稱。

和區域匯入時一樣,您必須先登入,選擇訂用帳戶,然後設定 Azure CLI 以使用資源管理員模式。

匯出區域檔案

若要將 myresourcegroup 資源群組中的現有 Azure DNS 區域 contoso.com 匯出至 contoso.com.txt 檔案 (在目前資料夾中),請執行 azure network private-dns zone export。 此命令會呼叫 Azure DNS 服務,以列舉區域中的記錄集,並將結果匯出為 BIND 相容的區域檔案。

az network private-dns zone export -g myresourcegroup -n contoso.com -f contoso.com.txt

下一步