如果 CNAME 和 A 記錄都存在,DNS 查找順序是什麼?

如果 CNAME 和 A 記錄都存在,DNS 查找順序是什麼?

如果我們為同一個子網域設定一筆A記錄和一筆CNAME記錄,那麼DNS查找是如何完成的?

例如,

A record: 
example.com => xx.xx.xx.xx
www.example.com => xx.xx.xx.xx

CNAME record:
www. => example.com

解決時www.example.com,DNS解析器是直接找子網域www的A記錄取得ip,還是找www的CNAME取得重定向網域(example.com),然後找example.com的A記錄取得ip ip到底是什麼?

答案1

什麼是CNAME記錄?

記錄的作用CNAME是定義業主姓名(新增記錄的名稱)作為CNAME記錄值中名稱的別名(規範名稱,根據記錄類型的名稱)。
請注意,別名的定義是在名稱層級上,完全不考慮記錄類型。

所有者名稱作為別名的一個含義是它不能還有其他記錄,因為這會與它只是另一個名稱的別名產生直接衝突。

從解析器的角度來看,如果您查詢A,則回應的有效選項是A鍵入的答案(如果名稱不是別名)或CNAME鍵入的答案(如果名稱是別名)。使兩者俱有相同的名稱並不是一種選擇(無論如何,這不是標準允許的並且具有定義的行為的選擇)。

那麼我的 DNS 服務提供者如何做到這一點呢?

CNAME假設他們允許您並排添加和記錄的說法A是正確的,那麼他們的服務中存在一些不明顯的情況。

我將其分為兩個主要選項,在不了解更多資訊的情況下,實際上不可能知道哪個選項與您的情況相關:

  • 他們的系統不是直接使用使用者輸入,而是以某種方式將其轉換為有效的內容。他們要么添加一個衝突的記錄,但不添加另一個(這意味著 UI 有點糟糕),或者它可能具有某種形式的“CNAME 扁平化”功能,其中它們實際上並不提供CNAME用戶輸入的記錄,而是從規範名稱的末尾解析相關記錄,並像直接在別名處一樣提供這些記錄(這是非標準功能,但某些服務已經實現了這種類型的動態查找以“扁平化” CNAME)。
  • 他們的系統被破壞了,允許用戶添加規範中不允許的不一致數據,並且可能會以某種方式導致奇怪的問題(要么是他們的服務中斷,要么是他們的服務實際上提供了不一致的數據,這可能會破壞系統上的東西解析器側)。如果使用者在服務中利用這種類型的損壞,那麼他們就會搬起石頭砸自己的腳。

相關內容