如果一台權威名稱伺服器沒有特定記錄但另一台有特定記錄,則 DNS 解析器會採取什麼行為

如果一台權威名稱伺服器沒有特定記錄但另一台有特定記錄,則 DNS 解析器會採取什麼行為

假設我已發送 m1._domainkey.amazon.com 的 TXT 記錄查詢

nslookup -q=txt m1._domainkey.amazon.com

假設 amazon.com 的權威網域伺服器是

amazon.com  nameserver = ns1.amzndns.com.
amazon.com  nameserver = ns1.amzndns.org.
amazon.com  nameserver = ns1.amzndns.net.

如果此 TXT 記錄不存在於解析器查詢的第一個權威名稱伺服器 ns1.amzndns.com 上,但存在於另一個權威名稱伺服器 ns1.amzndns.org 上,會發生什麼情況?解析器通常會繼續查詢名稱伺服器直到得到答案嗎?

在實踐中,我發現我會獲得 TXT 記錄,即使它不在所有名稱伺服器上。

請在您的答案中包含文件/參考資料所以我可以獨立研究這個。

謝謝閱讀。

答案1

權威名稱伺服器設置一個協定標誌,稱為「權威答案」(AA)位在其響應中,解析器將該響應視為事實。

當回應是肯定的時,回應將包含所請求的資源記錄。

當權威名稱伺服器沒有該資源記錄時,回應將是 NXDOMAIN 訊息。

當您的權威名稱伺服器不一致時,客戶端獲得的回應將取決於查詢哪個權威名稱伺服器。該回應將被視為真相。

解析器通常會繼續查詢名稱伺服器直到得到答案嗎?

是的,但僅當名字伺服器根本不響應時。

一旦收到任何(肯定或否定)回應,解析器將不需要查詢您的其他名稱伺服器。

這不像你的解析器表現得像一個六歲的孩子,當一個父母給出一個答案時,他們會去找另一位父母,希望他們能得到一個他們更喜歡的不同答案。

答案2

解析器的行為依賴實作。

例如,Microsoft Windows 10 並行查詢所有名稱伺服器。客戶端將使用第一個伺服器來回應,即使是否定回應。

如果用戶端按順序查詢名稱伺服器,它將這樣做,如果未收到回應則逾時,並繼續到下一個配置的名稱伺服器。當收到回應時,查詢就完成了,即使它是否定回應。

不會發生的是客戶端不會等待所有名稱伺服器回應。客戶端不會使用多個回應,僅使用第一個回應。

如果 Amazon 有 100 個名稱伺服器,其中只有一個具有資源記錄,且用戶端查詢其他 99 個名稱伺服器之一,它將收到資源記錄的否定回應。

https://superuser.com/questions/969171/multihomed-windows-10-dns-resolution-timeouts/970322#970322

in practice, I have seen that I will get the TXT record even though it is not on all nameservers.

如果您對記錄有疑問,請隨時分享重現該行為的記錄,包括客戶詳細信息,以便我們可以重現它。


更多資訊:

由於名稱伺服器配置不正確的大量事件,Microsoft 引入了 A/AAAA 記錄的平行名稱解析。當由於主名稱伺服器不可用而查詢非主名稱伺服器時,這通常會導致重大問題。迭代解決過程有超時,每個層級可能有不同的超時,以及累積逾時。使用多個網路介面卡的結果也有規則。這導致一些組織為了高可用性而配置了四到五個名稱伺服器。不幸的是,該過程在第三台伺服器之後逾時,因此DNS策略無效,災難復原策略無效,並且導致了其本身的其他問題。


使用 nslookup 時,若要模擬解析器的行為並對特定名稱伺服器執行迭代查詢,請使用開關-norecurse

https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/nslookup-set-recurse

相關內容