透過並排比較理解 DNS 傳播與快取
在變更網域名稱系統(DNS)設定時,確認各個解析器所回傳的記錄是否一致,是確保網站與應用程式正常運作的關鍵步驟。DNS 記錄的傳播並非瞬間完成,而是受到存活時間(TTL)與各節點快取機制的影響。
當您修改了 DNS 記錄,全球各地的遞歸解析器(Recursive Resolvers)並不會立即向您的權威名稱伺服器(Authoritative Name Server)拉取新資料,而是會持續提供舊有的快取內容,直到該記錄的 TTL 歸零為止。這段新舊交替、各節點陸續更新的過程即為 DNS 傳播。透過比對不同解析器回傳的記錄類型、TTL 與記錄值,網站管理員與開發人員可以有效掌握目前的傳播進度並排除設定故障。
DNS 記錄結構與解析器運作原理
一條標準的 DNS 記錄包含了數個核心欄位,用以定義網路流量的導向規則。常見的欄位結構如下:
- 名稱(Name):例如
example.com.,代表該記錄所屬的網域名稱。 - TTL(Time To Live):存活時間,以秒為單位,指定解析器可以快取此記錄的時間長度。
- Class:通常為
IN(Internet),代表網際網路類別。 - 類型(Type):定義記錄的功能,例如指向 IPv4 位址的
A記錄、定義郵件伺服器的MX記錄等。 - 值(Value):記錄的具體內容,例如 IP 位址
192.0.2.1。
遞歸解析器在收到查詢請求時,若快取內已有該記錄,便會直接回傳並對 TTL 進行倒數計時。因此,當您比對多個解析器的結果時,即使記錄值完全相同,其 TTL 數值也可能因為快取建立的時間點不同而有所差異。這種 TTL 不同的現象通常僅代表快取時間的差距,並不意味著區域資料(Zone Data)本身存在錯誤。
支援的輸入格式與系統限制
本工具專為比對已獲取的 DNS 文本結果而設計,不直接向外部發送 DNS 查詢。您需要手動提供至少兩個解析器的答案進行比對。
系統支援以下兩種輸入格式,每行代表一條記錄:
- 標準 dig 答案行:格式為
名稱 TTL IN 類型 值(例如example.com. 300 IN A 192.0.2.1)。 - 緊湊行:格式為
類型 TTL 值(例如A 300 192.0.2.1)。
在輸入時,系統會自動忽略註釋(以分號 ; 開頭的行)以及 dig 指令產生的區段標題。每個解析器輸入框的文字長度限制在 100,000 個字元以內。
比較結果的判定標準
當您提供資料並執行比較後,系統會針對各解析器的記錄進行交叉比對,並產出並排比較表,結果會標示為以下幾種狀態:
- 精確匹配:代表該記錄在所有對比的解析器中,記錄類型、TTL 以及記錄值皆完全相同。
- TTL 不同:代表記錄類型與記錄值完全一致,但各解析器回傳的 TTL 數值不同。這通常是各節點快取時間差所致。
- 記錄值不同:代表記錄類型相同,但解析器回傳了不同的具體數值(例如指向不同的 IP 位址),這可能意味著傳播尚未完成或設定有誤。
- 無記錄:代表某個解析器中完全缺少了其他解析器所擁有的特定記錄類型。
本地比對與全球傳播的局限性
使用本工具進行比對時,必須了解其運作邊界。本工具僅針對您手動貼上的樣本數據進行靜態分析與並排呈現,它本身不會主動發起網路查詢去偵測即時的 DNS 狀態。
因此,比對結果呈現一致,僅代表您所提供的樣本相符,並不等同於證明全球已完成傳播,亦無法保證權威記錄的絕對正確性,或代表特定終端使用者在存取時一定會得到相同的解析結果。若要確認全球傳播狀態,仍需參考涵蓋更多地理節點的查詢數據。
常見問題
我可以貼上哪些 DNS 結果格式?
貼上標準 dig 答案行(例如「example.com. 300 IN A 192.0.2.1」)或緊湊行(例如「A 300 192.0.2.1」)。註釋和 dig 部分標題將被忽略。
不同的 TTL 是否表示 DNS 值錯誤?
不一定。遞歸解析器對快取的 TTL 進行倒數計時,並可能套用自己的快取限制。具有不同 TTL 的匹配值通常會顯示不同的快取年齡,而不是不同的區域資料。
這裡的匹配是否證明 DNS 已傳播到各處?
不。比較僅涵蓋您貼上的答案。其他公共、ISP、公司和設備快取可能會傳回不同的數據,且此頁面不聯繫權威名稱伺服器。
我的 DNS 查詢資料會被傳送到伺服器嗎?
不會。貼上的 DNS 結果只留在瀏覽器中,BroBroGo 不會上傳或儲存。所有的比較與解析程序皆在您的本機瀏覽器內完成。