假設我已發送 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
。