DNS 傳播檢查器

向四個公共解析器詢問一個網域指向哪裡——Google、Cloudflare、Quad9 和 OpenDNS——並查看它們是否一致。一個問題,四個答案,由 sysosx 的伺服器發出:這是判斷一次 DNS 變更是否真的已經擴散開來的最快的誠實方法。

想自動持續監控?用 myeventwatch 免費監控——到期和停機提醒,無需綁卡。

傳播到底是什麼

並不存在「傳播」這一事件。當你更改一條 DNS 記錄時,沒有任何東西會傳播到任何地方:權威名稱伺服器只是開始給出不同的答案,而全世界的每個解析器都會繼續提供它上次取到的內容,直到那個答案的 TTL 過期。一個在你編輯前五分鐘詢問過的解析器,會在它剩餘的 TTL 內一直提供舊值;一個在你編輯後第一次詢問的解析器,會立即得到新值。「傳播」不過是成千上萬個獨立快取緩慢趨於一致的過程,每個快取都有自己的時鐘——這就是為什麼它沒有完成時間,只有一個受 TTL 限定的窗口期,也是為什麼誠實的問題從來不是「它傳播了嗎?」,而是「重要的解析器達成一致了嗎?」。

本頁為網際網路上大多數人實際使用的四個解析器回答這個問題。Google、Cloudflare、Quad9 和 OpenDNS 都會被並行地、從 sysosx 的伺服器詢問該網域的 A 和 AAAA 記錄,表格會顯示每個解析器的回答,並給出所見的最低 TTL。當四者全部一致時,這次變更就已經擴散到了實際需要的程度。當它們不一致時,TTL 一欄會告訴你這種不一致會持續多久:等它過期,然後再檢查。把一條記錄的 TTL 在計劃遷移前一兩天降到幾分鐘,是最有效的單一傳播技巧——它在變更之前就縮短了每個快取的記憶,而不是在變更之後與之搏鬥。

如何閱讀表格

每一列是一個解析器。A 一欄是它傳回的 IPv4 地址,AAAA 是該網域擁有的 IPv6 地址(如果有的話),TTL 是各個答案中最低的生存時間——也就是該解析器在再次詢問之前會繼續相信其答案的秒數。標有 “timeout” 的解析器沒有及時回答;這是關於解析器的陳述,而不是關於你的記錄,其他各列仍然成立。“does not exist” 的結果意味著每個作答的解析器都認同該名稱根本沒有註冊——在做任何其他事之前先檢查拼寫。而當橫幅說解析器不一致時,請克制住「修復」任何東西的衝動:每分鐘重新檢查一次並不會讓任何人的快取變快,再次編輯記錄只會重啟你正在等待的每一個 TTL。

相關工具:當單個記錄需要檢查時,用DNS 查詢查看一個解析器的完整記錄集;當地址正確但重新導向路徑錯誤時,用HTTP 狀態鏈;想看全貌——可達性、憑證、到期和記錄一起看——用網站健康檢查。

延伸閱讀:為什麼一個網站從不同地方看不一樣——重新導向鏈、DNS 傳播和中間快取,以及如何判斷是哪一個在困擾你。

常見問題

這是全球範圍的傳播檢查嗎?

不是——而且沒有任何工具能誠實地聲稱是。本頁從 sysosx 的伺服器向四個大型公共解析器(Google、Cloudflare、Quad9 和 OpenDNS)提出同一個問題,並顯示它們是否一致。四個解析器一致,是變更已經擴散的有力證據;四個解析器不一致,則是等 TTL 過期的信號。沒有人能查詢地球上的每一個解析器,任何聲稱能做到這一點的工具,賣的是一張地圖,而不是一次測量。

為什麼我更改記錄後解析器會不一致?

因為沒有任何東西會把變更推送到任何地方。每個解析器都會快取它上次取到的內容,快取時間恰好是記錄的 TTL 所規定的時長,並按自己的節奏刷新。一個在你編輯前五分鐘取到舊值的解析器,會一直提供它直到該 TTL 過期。編輯後立即出現不一致是正常狀態,而不是錯誤——TTL 一欄會告訴你它會持續多久。

某個解析器「沒有回答」是什麼意思?

取決於類型。NXDOMAIN 意味著該解析器權威地認定該名稱不存在——通常是拼寫錯誤,或者是記錄被刪除而不是被更改。沒有錯誤但答案為空,意味著該名稱存在,但沒有 A 或 AAAA 記錄(例如一個僅用於郵件的網域)。逾時意味著該解析器沒有及時回答;這與記錄本身無關,其他三個解析器的答案仍然成立。

這與 DNS 查詢有什麼不同?

DNS 查詢顯示一個解析器的完整記錄集——每種類型,連同 TTL——這是你在偵錯單個記錄時想要的。本頁顯示一個問題(這個名稱指向哪裡?)在四個解析器上的答案,這是你在詢問一次變更是否已經擴散時想要的。用查詢工具檢查一條記錄,用本頁判斷傳播情況。

為什麼有速率限制,為什麼快取只有十分鐘?

每次檢查都會發出八次即時查詢(在四個解析器上查 A 和 AAAA)。為了保持禮貌,每個訪客的新檢查次數受到限制(大約每小時二十次,並有短時突發額度),結果快取十分鐘而不是一小時——因為一個答案已經有一小時歷史的傳播檢查違背了它自己的目的。快取的結果會被如此標明。