使用 Azure CLI 匯入及匯出 DNS 區域檔案

本文會介紹如何使用 Azure CLI 在 Azure DNS 中匯入和匯出 DNS 區域檔案。 您也可以使用 Azure 入口網站匯入和匯出區域檔案

DNS 區域移轉簡介

DNS 區域檔案是文字檔,其中包含該區域中每筆網域名稱系統 (DNS) 記錄的資訊。 它會遵循標準格式,使其適合於在 DNS 系統之間傳送 DNS 記錄。 若要將 DNS 區域匯入 Azure DNS,使用區域檔案是最便捷的方式。 也可以從 Azure DNS 匯出區域檔案,如此便能搭配其他 DNS 系統使用。

Azure DNS 支援透過 Azure CLI 和 Azure 入口網站匯入和匯出區域檔案。

Azure CLI 是用於管理 Azure 服務的跨平台命令列工具。 適用於 Windows、Mac 及 Linux,可於 Azure 下載頁面取得。

取得現有的 DNS 區域檔案

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

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

重要

如果您匯入的區域檔案包含指向另一個私人區域中名稱的 CNAME 項目,除非也匯入另一區域或修改了 CNAME 項目,否則 CNAME 的 Azure DNS 解析會失敗。

將 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 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. 如果您還沒有資源群組,請加以建立。

    az group create --resource-group myresourcegroup -l westeurope
    
  2. 若要將 contoso.com.txt 檔案中的 contoso.com 區域匯入至 myresourcegroup 資源群組中的新 DNS 區域,請執行命令 az network dns zone import

    此命令會載入並剖析該區域檔案。 此命令會在 Azure DNS 服務上執行一系列作業,以建立區域和區域中的所有記錄集。 此命令會在主控台視窗中報告進度,以及任何的錯誤或警告。 由於記錄集是以序列方式建立,可能需要幾分鐘的時間來匯入大型的區域檔案。

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

確認區域

若要在匯入檔案之後確認 DNS 區域,可使用以下任一種方法:

  • 若要列出記錄,請使用下列 Azure CLI 命令:

    az network dns record-set list -g myresourcegroup -z contoso.com
    
  • 也可使用 Azure CLI 命令 az network dns record-set ns list 列出記錄。

  • 可使用 nslookup 來驗證記錄的名稱解析。 若尚未委派區域,則需明確指定正確的 Azure DNS 名稱伺服器。 下列範例顯示如何擷取已指派給區域的名稱伺服器名稱。

    az network dns record-set ns list -g myresourcegroup -z contoso.com  --output json 
    
    [
      {
       .......
       "name": "@",
        "nsRecords": [
          {
            "additionalProperties": {},
            "nsdname": "ns1-03.azure-dns.com."
          },
          {
            "additionalProperties": {},
            "nsdname": "ns2-03.azure-dns.net."
          },
          {
            "additionalProperties": {},
            "nsdname": "ns3-03.azure-dns.org."
          },
          {
            "additionalProperties": {},
            "nsdname": "ns4-03.azure-dns.info."
          }
        ],
        "resourceGroup": "myresourcegroup",
        "ttl": 86400,
        "type": "Microsoft.Network/dnszones/NS"
      }
    ]
    

    可使用 Windows 命令提示字元,以 nslookup 命令來查詢 "www" 記錄。

    nslookup www.contoso.com ns1-03.azure-dns.com
    
        Server: ns1-01.azure-dns.com
        Address:  40.90.4.1
    
        Name:www.contoso.com
        Addresses:  134.170.185.46
        134.170.188.221
    

更新 DNS 委派

確認已正確匯入區域之後,必須更新 DNS 委派以指向 Azure DNS 名稱伺服器。 如需詳細資訊,請參閱更新 DNS 委派

從 Azure DNS 匯出 DNS 區域檔案

若要匯出 DNS 區域,請使用下列 Azure CLI 命令:

az network 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 dns zone export。 此命令會呼叫 Azure DNS 服務,以列舉區域中的記錄集,並將結果匯出為 BIND 相容的區域檔案。

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

下一步