DNS 區域和記錄的概觀

本文說明網域、DNS 區域、DNS 記錄和記錄集的重要概念, 您可藉此了解 Azure DNS 的支援情況。

網域名稱

網域名稱系統是網域階層。 階層從「根」網域開始,其名稱只是 '.'。 下面接著最上層網域,例如 'com'、'net'、'org'、'uk' 或 'jp'。 再往下是第二層網域,例如 'org.uk' 或 'co.jp'。 DNS 階層中的網域散佈在全球,裝載在世界各地的 DNS 名稱伺服器上。

網域名稱註冊機構是可購買網域名稱的組織,例如 contoso.com。 購買網域名稱能為您賦予該名稱下 DNS 階層的控制權限,例如您可以將名稱 www.contoso.com 導向您的公司網站。 可以讓該註冊機構代表您,將網域裝載在其自有的名稱伺服器上;或允許您指定替代的名稱伺服器。

Azure DNS 提供散佈全球且可用性高的名稱伺服器基礎結構,可用於代管您的網域。 只要將您的網域裝載於 Azure DNS 中,就可以像管理其他 Azure 服務一樣,使用相同的認證、API、工具、計費方式和支援來管理 DNS 記錄。

Azure DNS 目前不支援購買網域名稱。 若想要購買網域名稱,必須洽詢第三方網域名稱註冊機構。 註冊機構通常會收取些微年費。 然後便可以在 Azure DNS 裝載這些網域來管理 DNS 記錄。 如需詳細資訊,請參閱 將網域委派給 Azure DNS

DNS 區域

DNS 區域用來裝載特定網域的 DNS 記錄。 若要開始將網域裝載到 Azure DNS 中,您必須建立該網域名稱的 DNS 區域。 接著在此 DNS 區域內,建立網域的每筆 DNS 記錄。

例如,網域 'contoso.com' 可能包含數筆 DNS 記錄,例如 'mail.contoso.com' (用於郵件伺服器) 和 'www.contoso.com' (用於網站)。

在 Azure DNS 中建立 DNS 區域時︰

  • 區域的名稱在資源群組內必須是唯一的,且區域必須尚未存在。 否則作業會失敗。
  • 不同的資源群組或不同的 Azure 訂用帳戶中,可重複使用相同的區域名稱。
  • 多個區域共用相同的名稱時,系統就會將不同的名稱伺服器位址,指派給每個執行個體。 只可以向網域名稱註冊機構登記一組位址。

注意

您不必擁有網域名稱,也能在 Azure DNS 中以該網域名稱建立 DNS 區域。 不過,的確需要擁有網域,才能將 Azure DNS 名稱伺服器,設定為網域名稱的正確名稱伺服器,供網域名稱註冊機構使用。

如需詳細資訊,請參閱將網域委派給 Azure DNS

DNS 記錄

記錄名稱

在 Azure DNS 中,記錄是使用相對名稱來指定。 「完整」網域名稱 (FQDN) 包含區域名稱,而「相對」名稱不含區域名稱。 例如區域 contoso.com 中的相對記錄名稱 www 會提供完整的記錄名稱 www.contoso.com

「頂點」記錄是 DNS 區域根目錄 (或「頂點」) 的 DNS 記錄。 例如在 DNS 區域 contoso.com 中,頂點記錄也具有完整名稱 contoso.com (有時稱為「裸」網域)。 依照慣例,相對名稱 \'\@\' 用來代表頂點記錄。

記錄類型

每一筆 DNS 記錄都有名稱和類型。 記錄根據所包含的資料而組織成各種類型。 最常見的類型為 'A' 記錄,可將名稱對應到 IPv4 位址。 另一個一般類型為 'MX' 記錄,可將名稱對應到郵件伺服器。

Azure DNS 支援所有常見的 DNS 記錄類型:A、AAAA、CAA、CNAME、MX、NS、PTR、SOA、SRV 和 TXT。 請注意,SPF 記錄是使用 TXT 記錄表示

記錄集

有時候,您需要以指定的名稱和類型建立多筆 DNS 記錄。 例如,假設 'www.contoso.com' 網站裝載於兩個不同的 IP 位址。 網站需要兩筆不同的 A 記錄,每個 IP 位址各一筆。 以下是記錄集的範例:

www.contoso.com.        3600    IN    A    134.170.185.46
www.contoso.com.        3600    IN    A    134.170.188.221

Azure DNS 使用「記錄集」來管理所有 DNS 記錄。 記錄集 (也稱為「資源」記錄集) 是指一個區域中,具有相同名稱和相同類型的 DNS 記錄集合。 大部分的記錄集只包含單一記錄。 不過,像以上的記錄集包含多筆記錄的例子也屢見不鮮。

例如,假設您已經在區域 'contoso.com' 中建立了 A 記錄 'www',指向 IP 位址 '134.170.185.46' (上述第一項記錄)。 若要建立第二筆記錄,您會將該記錄新增至現有的記錄集,而非建立額外的記錄集。

SOA 和 CNAME 記錄類型是例外狀況。 對於這些類型,DNS 標準不允許具有相同名稱的多筆記錄,因此這些記錄集只能包含單一記錄。

存留時間

存留時間 (或 TTL) 會指定用戶端快取每一筆記錄多長時間後,才會重新查詢。 在上述範例中,TTL 是 3600 秒 (1 小時)。

在 Azure DNS 中,會針對記錄集指定 TTL,而非針對每筆記錄指定,因此該記錄集內的所有記錄都會使用相同的值。 您可以指定介於 1 到 2,147,483,647 秒之間的任何 TTL 值。

萬用字元記錄

Azure DNS 支援 萬用字元記錄。 除非在非萬用字元記錄集中有更相符的名稱,否則在回應任何包含比對名稱的查詢時,會傳回萬用字元記錄。 Azure DNS 支援 NS 和 SOA 以外的所有記錄類型的萬用字元記錄集。

若要建立萬用字元記錄集,請使用記錄集名稱 '*', '*' 也可作為名稱最左邊的標籤,例如 '*.foo'。

CAA 記錄

CAA 記錄可讓網域擁有者指定哪些憑證授權單位 (CA) 有權為其網域發行憑證。 此外,此記錄也讓 CA 可避免在某些情況下誤發憑證。 CAA 記錄都有三個屬性:

  • 旗標:此欄位為介於 0 到 255 之間的整數,用於代表在 RFC 中具有特殊意義的重要旗標
  • 標記:ASCII 字串,可以是下列其中一項:
    • issue:用於指定有權發行憑證 (所有類型憑證) 的 CA
    • issuewild:用於指定有權發行憑證 (僅限萬用字元憑證) 的 CA
    • iodef:指定當發生未授權的憑證發行要求時,CA 可通知的電子郵件地址或主機名稱
  • :所選特定標記的值

CNAME 記錄

CNAME 記錄集無法與具有相同名稱的其他記錄集並存。 例如,您無法同時建立都具有相對名稱 'www' 的 CNAME 記錄集和 A 記錄。

因為在建立區域期間,區域頂點 (名稱 = '@') 一律都會包含 NS 和 SOA 記錄集,所以無法在區域頂點建立 CNAME 記錄集。

這些條件約束源自於 DNS 標準,並不是 Azure DNS 的限制。

NS 記錄

區域頂點 (名稱 '@') 的 NS 記錄集,會隨著每個 DNS 區域自動建立,且會在刪除該區域時自動隨之刪除, 無法單獨將其刪除。

此記錄集包含指派給區域的 Azure DNS 名稱伺服器的名稱。 您可以對此 NS 記錄集新增更多名稱伺服器,以支援共同代管多於一個 DNS 提供者的網域。 您也可以修改此記錄集的 TTL 和中繼資料。 但不得移除或修改預先填入的 Azure DNS 名稱伺服器。

此限制僅適用於位於區域頂點的 NS 記錄集。 區域中的其他 NS 記錄集 (如用於委派子區域) 可以建立、修改和刪除,沒有條件約束。

SOA 記錄

每個區域 (名稱 = '@') 的頂點會自動建立 SOA 記錄集,並會在刪除該區域時自動隨之刪除。 無法個別建立或刪除 SOA 記錄。

您可以修改 SOA 記錄的所有屬性,但 'host' 屬性除外。 此屬性預先設定為會參考由 Azure DNS 所提供的主要名稱伺服器的名稱。

對區域中的記錄進行變更時,不會自動更新 SOA 記錄中的區域序號。 如有必要,可以編輯 SOA 記錄,手動進行更新。

SPF 記錄

寄件者原則架構 (SPF) 記錄用來指定可以代表網域名稱傳送電子郵件的電子郵件伺服器。 請務必正確設定 SPF 記錄,以防止收件者將您的電子郵件標示為垃圾郵件。

DNS RFC 原本推出了新 SPF 記錄類型,以支援這種情況。 為了支援較舊的名稱伺服器,RFC 也允許使用 TXT 記錄類型來指定 SPF 記錄。 這種模稜兩可曾經造成混淆,但已透過 RFC 7208 解決。 其指出必須使用 TXT 記錄類型建立 SPF 記錄。 此外,也指出 SPF 記錄類型已被取代。

Azure DNS 支援 SPF 記錄,因此必須使用 TXT 記錄類型來建立。 不支援過時的 SPF 記錄類型。 當您匯入 DNS 區域檔案時,任何使用 SPF 記錄類型的 SPF 記錄,都會轉換成 TXT 記錄類型。

SRV 記錄

各種服務都會使用 SRV 記錄來指定伺服器位置。 在 Azure DNS 中指定 SRV 記錄時︰

  • 必須在記錄集名稱中包括 [服務] 和 [通訊協定],並在其前方加上底線。 例如 '_sip._tcp.name'。 若是位於區域頂點的記錄,則不須在記錄名稱中指定 '@',只要使用服務和通訊協定即可,例如 '_sip._tcp'。
  • 系統已將 [優先順序]、[權數]、[連接埠] 和 [目標],指定為記錄集內每筆記錄的參數。

TXT 記錄

TXT 記錄是用來將網域名稱對應到任意文字字串。 其可用於多個應用程式,特別是與電子郵件設定相關者,例如 寄件者原則架構 (SPF) (英文) 和 網域金鑰識別郵件 (DKIM) (英文)。

DNS 標準允許單一 TXT 記錄包含多個字串,每個長度最多可達 255 個字元。 使用多個字串時,用戶端會將這些字串連接並視為單一字串。

在呼叫 Azure DNS REST API 時,您必須分別指定每個 TXT 字串。 當使用 Azure 入口網站、PowerShell 或 CLI 介面時,您應該為每筆記錄指定單一字串,如有需要,字串將自動分段成 255 個字元的區段。

DNS 記錄中的多個字串不應與 TXT 記錄集中的多個 TXT 記錄混淆。 TXT 記錄集可以包含多個記錄,「每一個」記錄可以包含多個字串。 Azure DNS 支援每個 TXT 記錄集中的 字串總長度上限為 1024 個字元 (所有記錄的總和)。

標記和中繼資料

標籤

標記是名稱-值組的清單,由 Azure Resource Manager 用來標示資源。 Azure Resource Manager 使用標籤來篩選您 Azure 帳單的檢視畫面,您也可以利用它可為特定標籤設定原則。 如需標記的詳細資訊,請參閱 使用標記來組織您的 Azure 資源

Azure DNS 支援在 DNS 區域資源上,使用 Azure Resource Manager 標記。 其不支援在 DNS 記錄集上加註標籤,但支援在 DNS 記錄集上使用 「中繼資料」加以替代,如下所述。

中繼資料

Azure DNS 支援使用 '中繼資料' 來替代記錄集標記,用以標註記錄集。 類似於標記,中繼資料可讓您建立名稱-值組與每個記錄集之間的關聯。 此功能十分有用,例如,用於記錄每個記錄集的用途。 與標記不同的是,中繼資料無法用來提供 Azure 帳單篩選過的檢視,也無法在 Azure Resource Manager 原則中指定。

Etag

假設有兩個人或兩個處理序同時嘗試修改 DNS 記錄。 何者獲勝? 獲勝者知道他已覆寫另一人所做的變更嗎?

Azure DNS 使用 Etag 以安全地處理相同資源的並行變更。 Etag 和 Azure Resource Manager「標籤」分開。 每個 DNS 資源 (區域或記錄集) 都有一個相關聯的 Etag。 每當擷取資源時,也會擷取其 Etag。 您可以在更新資源時選擇傳回 Etag,如此一來 Azure DNS 就可驗證伺服器上的 Etag 是否相符。 因為每次更新資源都會重新產生 Etag,Etag 不符就表示發生並行變更。 Etag 也可用在建立新資源時,以確認該資源是否仍未存在。

根據預設,Azure DNS PowerShell 會使用 Etag 來禁止對區域和記錄集進行並行變更。 選擇性的 -Overwrite 參數可以用來停用 Etag 檢查,在此情況下,會覆寫任何已發生的並行變更。

在 Azure DNS REST API 層級上是使用 HTTP 標頭指定 Etag。 下表提供它們的行為:

頁首 行為
None PUT 一定成功 (沒有 Etag 檢查)
If-match <etag> 唯有當資源存在且 Etag 符合時,PUT 才會成功
If-match * 唯有當資源存在時,PUT 才會成功
If-none-match * 只有當資源不存在時,PUT 才會成功

限制

使用 Azure DNS 時,會適用下列的預設限制︰

公用 DNS 區域

資源 限制
每一訂用帳戶的公用 DNS 區域 250 1
每一公用 DNS 區域的記錄集 10,000 1
公用 DNS 區域中每個記錄集的記錄 20
單一 Azure 資源的別名記錄數目 20

1 如果需要增加這些限制,請連絡 Azure 支援。

私人 DNS 區域

資源 限制
每一訂用帳戶的公用 DNS 區域 1000
每一私人 DNS 區域的記錄集 25000
私人 DNS 區域的每個記錄集的記錄 20
每一私人 DNS 區域的虛擬網路連結 1000
已啟用自動註冊的每個私人 DNS 區域的虛擬網路連結 100
虛擬網路可以連結並已啟用自動註冊的私人 DNS 區域數目 1
虛擬網路可以連結的私人 DNS 區域數目 1000
虛擬機器每秒可傳送至 Azure DNS 解析程式的 DNS 查詢數目 1000 1
每個虛擬機器的已排入佇列 (回應待決) DNS 查詢數目上限 200 1

1這些限制會套用至每個個別虛擬機器,而不會套用於虛擬網路層級。 超過這些限制的 DNS 查詢會遭到捨棄。

後續步驟