Domain-Name-System

嵌入萬用字元的 CNAME

  • June 10, 2021

我正在嘗試設置 CNAME DNS 條目:

start.*.example.com

匹配以下域名:

start.a.b.c.example.com
start.a.example.com

這可能嗎?我目前的測試在networksolutions.com 上失敗了。

它以前用作 A 記錄萬用字元 (*.exmaple.com) - 但我希望它用作 CNAME。

start.*.example.com

DNS 萬用字元不是這樣工作的,所以你不能這樣做(作為萬用字元),因此“嵌入式萬用字元”在 DNS 世界中不是一個東西。

這不是記錄類型(CNAMEA其他任何東西相比)或使用的 DNS 提供商的問題,而是萬用字元必須是第一個標籤,*然後是其他標籤。

萬用字元也是如此*.example.com(因此將在 DNS 交換期間觸發特定行為,匹配多個名稱)但start.*.example.com不是萬用字元:您當然可以CNAME使用此名稱創建記錄,但它只會匹配自身,包括星號,並且絕對沒有別的(沒有任何其他名稱匹配)

參見 RFC 1034:

4.3.3. 萬用字元

在之前的算法中,對所有者名稱以標籤“*”開頭的 RR 進行了特殊處理。這樣的 RR 被稱為萬用字元。

然後:

萬用字元 RR 的內容遵循 RR 的常用規則和格式。區域中的萬用字元有一個所有者名稱,用於控制它們將匹配的查詢名稱。萬用字元 RR 的所有者名稱的格式為“*.”,其中是任何域名。

如果您需要匹配單個事物,您可以創建*.example.comand both的萬用字元start.a.example.comstart.a.b.c.example.com並將匹配萬用字元記錄,但與任何其他名稱一樣,其中start和/或a和/或b和/或被其他名稱c替換。

https://en.wikipedia.org/wiki/Wildcard_DNS_record上的維基百科條目與上面的內容完全相同:

假設有一個具有以下資源記錄的 DNS 區域:

$$ … $$

*.example.               3600     TXT   "this is a wildcard"
*.example.               3600     MX    10 host1.example.
sub.*.example.           3600     TXT   "this is not a wildcard"

$$ … $$ 以下響應將從區域中的萬用字元之一合成:

$$ … $$ foo.bar.example。TXT 答案將是“foo.bar.example。IN TXT …”,因為 bar.example。不存在,但萬用字元存在。

$$ … $$ 以下響應不會從區域中的任何萬用字元合成:

$$ … $$ 子..範例。MX 沒有萬用字元會匹配,因為 sub..example。存在。域 sub.*.example。永遠不會充當萬用字元,即使它有一個星號。

引用自:https://serverfault.com/questions/1066238