私人 DNS 記錄概觀
本文提供 Azure 私人 DNS 區域中 DNS 記錄支援的相關資訊。 如需私人 DNS 區域的概觀,請參閱:什麼是 Azure 私人 DNS 區域?
DNS 記錄
記錄名稱
記錄是使用相對名稱來指定。 「完整」網域名稱 (FQDN) 包含區域名稱,而「相對」名稱不含區域名稱。 例如,區域 contoso.com
中的相對記錄名稱 www
產生完整記錄名稱 www.contoso.com
。
「頂點」記錄是 DNS 區域根目錄 (或「頂點」) 的 DNS 記錄。 例如在 DNS 區域 contoso.com
中,頂點記錄也具有完整名稱 contoso.com
(有時稱為「裸」網域)。 依照慣例,相對名稱 \'\@\' 用來代表頂點記錄。
記錄類型
每一筆 DNS 記錄都有名稱和類型。 記錄根據所包含的資料而組織成各種類型。 最常見的類型為 'A' 記錄,可將名稱對應到 IPv4 位址。 另一個一般類型為 'MX' 記錄,可將名稱對應到郵件伺服器。
Azure 私人 DNS 支援下列常見的 DNS 記錄類型:A、AAAA、CNAME、MX、PTR、SOA、SRV 和 TXT。
注意
SOA 記錄中的 [主機] 欄位無法編輯。
記錄集
有時候,您需要以指定的名稱和類型建立多筆 DNS 記錄。 例如,假設 'www.contoso.com' 網站裝載於兩個不同的 IP 位址。 網站需要兩筆不同的 A 記錄,每個 IP 位址各一筆。 以下是記錄集的範例:
www.contoso.com. 3600 IN A 10.10.1.5
www.contoso.com. 3600 IN A 10.10.1.10
Azure DNS 使用「記錄集」來管理所有 DNS 記錄。 記錄集 (也稱為「資源」記錄集) 是指一個區域中,具有相同名稱和相同類型的 DNS 記錄集合。 大部分的記錄集只包含單一記錄。 不過,如此處所示的範例 (記錄集包含多筆記錄) 也屢見不鮮。
例如,假設您已經在區域 'contoso.com' 中建立 A 記錄 'www',指向 IP 位址 '10.10.1.5' (上述第一筆記錄)。 若要建立第二筆記錄,您會將該記錄新增至現有的記錄集,而非建立額外的記錄集。
SOA 和 CNAME 記錄類型是例外狀況。 對於這些類型,DNS 標準不允許具有相同名稱的多筆記錄,因此這些記錄集只能包含單一記錄。
存留時間
存留時間 (或 TTL) 會指定用戶端查詢每一筆記錄之前快取多長時間。 在上述範例中,TTL 是 3600 秒 (1 小時)。
在 Azure DNS 中,系統會針對記錄集指定 TTL,而非針對每筆記錄指定,因此該記錄集內的所有記錄皆使用相同值。 您可以指定介於 1 到 2,147,483,647 秒之間的任何 TTL 值。
萬用字元記錄
Azure DNS 支援 萬用字元記錄。 除非在非萬用字元記錄集中有更相符的名稱,否則若回應包含符合名稱的查詢,便會傳回萬用字元記錄。 Azure DNS 支援 NS 和 SOA 以外的所有記錄類型的萬用字元記錄集。
若要建立萬用字元記錄集,請使用記錄集名稱 '*'。 您也可使用 '*' 作為名稱最左邊的標籤,例如 '*.foo'。
CNAME 記錄
CNAME 記錄集無法與具有相同名稱的其他記錄集並存。 例如,您無法同時建立相對名稱為 www
的 CNAME 記錄集和相對名稱為 www
的 A 記錄。
由於在建立區域期間,區域頂點 (名稱 = '@') 一律會包含 NS 和 SOA 記錄集,因此無法在區域頂點建立 CNAME 記錄集。
這些條件約束源自於 DNS 標準,並不是 Azure DNS 的限制。
SOA 記錄
各區域頂點 (名稱 = '@') 會自動建立 SOA 記錄集,且會於該區域刪除時自動刪除。 無法個別建立或刪除 SOA 記錄。
您可以修改 SOA 記錄的所有屬性,但 host
屬性除外。 此屬性預先設定為參考 Azure DNS 所提供的主要名稱伺服器名稱。
變更區域中的記錄時,SOA 記錄中的區域序號不會自動更新。 您可視需要編輯 SOA 記錄,手動進行更新。
SRV 記錄
各種服務都會使用 SRV 記錄來指定伺服器位置。 在 Azure DNS 中指定 SRV 記錄時︰
- 必須在記錄集名稱中包括服務和通訊協定,並在其前方加上底線,例如 '_sip._tcp.name'。 若是位於區域頂點的記錄,則無須在記錄名稱中指定 '@',只要使用服務和通訊協定即可,例如 '_sip._tcp'。
- 系統已將 [優先順序]、[權數]、[連接埠] 和 [目標],指定為記錄集內每筆記錄的參數。
TXT 記錄
TXT 記錄是用來將網域名稱對應到任意文字字串。 其可用於多個應用程式。
DNS 標準允許單一 TXT 記錄包含多個字串,每個長度最多可達 255 個字元。 使用多個字串時,用戶端會串連這些字串並視為單一字串。
在呼叫 Azure DNS REST API 時,您必須分別指定每個 TXT 字串。 使用 Azure 入口網站、PowerShell 或 CLI 介面時,應為每個記錄指定單一字串。 如有必要,此字串會自動分成 255 個字元的區段。
DNS 記錄中的多個字串不應與 TXT 記錄集中的多個 TXT 記錄混淆。 TXT 記錄集可以包含多個記錄,「每一個」記錄可以包含多個字串。 Azure DNS 支援每個 TXT 記錄集內字串總長度上限為 4096 個字元*
(所有記錄的總和)。
*
目前僅 Azure 公用雲端支援 4096 個字元。 在 4k 支援推出完成之前,國家雲端限制為 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。 下表提供它們的行為:
頁首 | 行為 |
---|---|
無 | PUT 一定成功 (沒有 Etag 檢查) |
If-match <etag> | 唯有當資源存在且 Etag 符合時,PUT 才會成功 |
If-match * | 唯有當資源存在時,PUT 才會成功 |
If-none-match * | 只有當資源不存在時,PUT 才會成功 |
限制
使用 Azure 私人 DNS 時,會適用下列的預設限制:
私人 DNS 區域
資源 | 限制 |
---|---|
每一訂用帳戶的公用 DNS 區域 | 1000 |
每一私人 DNS 區域的記錄集 | 25000 |
私人 DNS 區域的每個記錄集的記錄 | 20 |
每一私人 DNS 區域的虛擬網路連結 | 1000 |
已啟用自動註冊的每個私人 DNS 區域的虛擬網路連結 | 100 |
虛擬網路可以連結並已啟用自動註冊的私人 DNS 區域數目 | 1 |
虛擬網路可以連結的私人 DNS 區域數目 | 1000 |