匯入和匯出 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區域的區域檔案。
如果您還沒有 Resource Manager 資源群組,則必須建立一個。
az group create --resource-group myresourcegroup -l westeurope
為了將 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
下一步
- 了解如何在 DNS 區域中管理記錄集和記錄。