APNIC文摘 — 重新檢視DNS的根(上)

本APNIC文摘原標題為The root of the DNS revisited,由Geoff Huston撰文。

DNS是個驚人簡單的系統。使用者送出查詢並得到答案。系統中的運作也同樣簡單:若收到查詢的DNS解析器不知道答案,它會把查詢送進系統以取得答案。這種查詢/回應的流程在系統中不斷遞迴重複,非常簡單。
然而,DNS的簡單就像西洋期或圍棋。只需在限制區域內遵守少數鐵則,開始進行後卻能演變到無比複雜。
根區
DNS是階層架構的名稱空間,每個域名都以標籤排序組成。這種標籤序列有多種功能,但最有用的一種,是利用DNS域名解析協定,轉譯域名每筆標籤的屬性值。
舉例而言,作者Geoff Huston經營一個域名為www.potaroo.net的網頁伺服器。他人若想瀏覽網站內容,他們的裝置系統必須先將此域名轉譯為IP位址。首先DNS系統會向根伺服器查詢此域名的IP位址,而對方會回應所有.net的權威伺服器;接著系統向任一.net伺服器送出查詢,對方則回應所有potaroo.net 的權威伺服器;最後使用者系統向任一potaroo.net伺服器送出查詢,並取得完整IP位址。所有域名都遵循此架構,以同樣順序解析。
所有DNS解析都來自同一個起點:根區。
有一派看法認為DNS根區不該享有任何特殊待遇。他們就像任何其他網域、伺服器,做的事也一樣,沒有任何特殊之處。但Huston認為這說法忽視根區在DNS中的重要性。的確,DNS作為資料庫極其分散,域名解析也並不遵循單一地圖或規定路徑,而是動態選擇最近、最快連到的伺服器查詢資料。
但凡事都有起點。遞迴解析器不會、也永遠不可能知道所有DNS權威伺服器,但它一定知道至少一個根伺服器,可以向對方詢問其他根伺服器的IP位址,並存在當地快取中。
前面曾介紹DNS解析流程。然而,若DNS實際上真的如此運作,大概早在好幾年前就報廢了。本地快取是DNS之所以能順利運作的關鍵:解析器會將查詢回應存在本地快取,直到快取到期前,都可利用此資料回應其他相同查詢。所以雖然作為一切的起點,但並非所有查詢都必須追溯至根伺服器;只有本地快取無法回應時,才會查詢到根伺服器。
然而,這說法背後隱藏著令人不安的事實:如果所有根伺服器都無法存取,DNS將停止運作。乍看之下可能言過其實,因為DNS不會在瞬時間拖著整個網際網路一同垮台。假設所有根伺服器及鏡像instance真的都無法存取,解析器還能仰賴本地快取支撐一段時間。當然,隨著快取逐一到期,DNS也會一點一點斷電。DNS根區是所有任何其他網域的最終指南,這也是為何它與眾不同,需要特別關注。
由於本地快取,不會每筆DNS查詢都動用到根區伺服器。理論上,根伺服器只需提供快取沒有的資訊,所以根伺服器收到的查詢量將取決於DNS解析器的數量。然而,實際運作上並非如此。下圖顯示根伺服器每天收到的查詢量。
2016年至2020年期間,所有根伺服器收到的查詢總量翻了3倍。此趨勢於2021年開始下降,至2022年趨於穩定。Chrome瀏覽器的行為改變可能是最大原因。Chrome過去會利用查詢一大串不存在的域名來探測本地DNS環境。因為這些域名都是無中生有,大部分的查詢自然都跑到根伺服器。2020年底開始Chrome不再這樣做,根伺服器收到的查詢數量也如圖顯示下降,但過去2年的穩定不一定會持續下去。
要確保根區服務依查詢數量適當擴張,應該怎麼做?請待下篇分曉。

本文內容純屬筆者個人意見,並不代表TWNIC立場

*台灣網路資訊中心(TWNIC)與亞太網路資訊中心(APNIC)合作,定期精選APNIC Blog文章翻譯摘要,提供中心部落格讀者了解目前亞太地區網路發展之最新趨勢。原文標題為The root of the DNS revisited

圖片來源: APNIC Blog

Scroll to Top