DNSSEC 驗證檢測工具

向 Google、Cloudflare 等多個公共 DNS 解析器查詢域名的 DNSKEY 記錄,檢測其 DNSSEC 簽名鏈是否驗證通過。

診斷 DNSSEC 的信任鏈

本工具把某個網域的 DNSKEY 記錄投向數個公開解析器,報出 DNSSEC 的簽章是否一路驗證得通。它揪得出這樣一種狀況:本以為已啟用 DNSSEC,鏈條卻在半途斷了。

DNSSEC 所護的是「答案未曾被竄改」,而非「內容是祕密」。 往來的東西一如既往人人可見,所擔保的唯有真偽。而最常見的疏漏,是忘了把 DS 記錄登記到父區域。 您縱在自家區域放好金鑰並簽了名,若不經註冊商把 DS 登記到父區域(譬如 .com),信任鏈便在此處斷開,什麼也驗證不了。 反過來,金鑰輪替若出了岔子而留下不一致,在凡是作驗證的解析器那裡,整個網域便都解析不出來了。 故而半途而廢的狀態,反倒可能比從未啟用更危險。

使用方法

  1. 輸入網域 只給網域即可,形如 example.com。
  2. 閱讀驗證的結果 它判定簽章之鏈是否一路接到了父區域。
  3. 確認有無 DS 記錄 此處一旦缺失,您放下再多金鑰也驗證不了。
  4. 比對數個解析器的答案 若有出入,便可疑心是快取或是設定。

用好本工具的小技巧

  • AD(Authenticated Data,已驗證資料)標誌只有在您查詢的 DNS 解析器自身執行了 DNSSEC 驗證時才會被設定。不支援 DNSSEC 的解析器無法給出有意義的判定結果。
  • "DNSSEC 未啟用"並非錯誤——目前大多數域名仍未使用 DNSSEC,這不會直接影響搜尋排名或郵件送達率。
  • 若判定為"驗證失敗",請先確認在註冊商後臺登記的父區域 DS 記錄的金鑰標籤(Key Tag)與摘要是否與當前 DNSKEY 一致。
  • DNSSEC 簽名(RRSIG)具有有效期。請同時確認區域管理軟體的自動重新簽名是否已停止執行。
  • 剛啟用 DNSSEC 後,在 DS 記錄傳播到父區域完成之前,可能會暫時顯示為"驗證失敗"。

這些情境會用到

啟用 DNSSEC 之後的確認

在控制台上勾一下,往往並未把事情辦完。

把金鑰輪替看到底

可在換鑰的前後確認驗證不曾斷掉。

查究名稱為何解析不出

DNSSEC 的不一致,會讓網域在部分使用者眼裡像是憑空消失了。

查一查往來對象的網域

由此可知對方把自家的措施做到了哪一步。

DNSSEC 的術語

DNSKEY
存放某區域公鑰的記錄,用於驗證簽章。
DS 記錄
把子區域金鑰的指紋登記到父區域的記錄。 少了它,信任鏈便斷。
RRSIG
附在每條記錄上的簽章本身。它帶有有效期,須按期更新。
信任鏈
簽章自根經父及子一路相扣的結構。任何一處斷開,驗證便無從談起。
金鑰輪替
以新鑰替換舊鑰的作業。步驟一錯,整個網域便解析不出來。
作驗證的解析器
當真去核驗 DNSSEC 簽章的解析器。一旦有不一致,它便什麼答案也不回傳。

常見問題

"DNSSEC 未啟用"本身並不危險,目前絕大多數域名仍在沒有 DNSSEC 的情況下執行。不過作為防範 DNS 快取投毒的手段,如果條件允許,值得考慮啟用它。

使用強制執行 DNSSEC 驗證的解析器(許多企業網路及部分 ISP)的使用者,可能完全無法解析該域名(會被當作 SERVFAIL 處理)。除非是剛啟用 DNSSEC、DS 記錄尚在傳播中的臨時狀態,否則需要儘快修復。

在 DNSKEY 更新(金鑰輪換)後不久,新舊金鑰可能會在不同解析器的快取中短暫共存,導致驗證結果暫時出現差異。請稍等片刻後再次檢測。

兩者不同。DNSSEC 保證的是"域名解析響應未被篡改",而 SSL/TLS 保證的是"通訊內容已加密,且連線物件確實持有該證書"。二者相互獨立,只啟用其中一項的情況也是存在的。

本工具僅檢測表層狀態:DNSKEY 是否已釋出,以及解析器是否報告 AD 標誌。如需對完整簽名鏈(RRSIG、NSEC/NSEC3 一致性等)進行嚴格分析,請配合使用 dnsviz.net 等專業工具。
工具君

閒話 ― DNS 為何需要一套防止"冒充"的機制

DNS 在 1983 年設計之初,並沒有一種加密手段來確認響應的真實發送者。解析器只是信任任何看起來帶有合理事務 ID 的 UDP 資料包——這是一種建立在"性善說"之上的協議,容易受到源 IP 偽造和 ID 猜測攻擊。2008 年,安全研究員 Dan Kaminsky 發現這一弱點可被用於以實際可行的速度進行快取投毒攻擊(將偽造記錄注入解析器快取),這一發現震驚了整個行業。

DNSSEC(DNS 安全擴充套件)正是對這一問題的標準化回應。它利用公鑰加密技術證明"該響應確實由區域的合法管理者簽名"。域名使用自己的 DNSKEY 對記錄進行簽名,而在父區域註冊的 DS 記錄則擔保該金鑰的摘要,從而從 DNS 根區域一直到具體域名,構建起一條不間斷的"信任鏈"。

DoH(基於 HTTPS 的 DNS)響應中的 AD(Authenticated Data)標誌,正是解析器代為完成這一 DNSSEC 驗證的結果。應用程式無需自行實現簽名驗證——只要向可信解析器查詢並看到 AD=true,即可間接確認響應未被篡改,前提是解析器與應用之間的通訊(HTTPS)本身已受到保護。