More  

小編的世界 優質文選 主機

Chrome的一個功能造成全球根DNS負載過大


2020年8月27日 - 主機小編 增才說科技 
   

DNS,即域名系統。DNS的用途就是將很難記住的服務器IP地址轉換為相對容易記住的域名的方式。我們訪問某一個網站的時候,不需要記住該網站的服務器IP地址。只要輸入域名,DNS會自動將域名翻譯為一個具體的IP地址。可以說,沒有DNS,就沒有互聯網。

2009年5月19日晚上,暴風DNS受攻擊導致江蘇、河北、山西、廣西、浙江等省部分用戶斷網。

2014年1月21日下午,我們國家通用頂級域的根服務器出現異常,導致國內部分用戶無法訪問.com的網站。

瀏覽器加載一個大型網站的單個網頁,可能需要進行多次DNS查詢。我分析了一下百度的首頁,該頁面長度才一萬多個字符,涉及了40個單獨的一級或者二級域名。

為了負載均衡,DNS被設計為多層金字塔架構。金字塔的頂部是根服務器,全球只有13台IPV4根服務器,負責管理全球的域名信息,其中美國10台,歐洲2台,日本1台。中國只有3台根服務器鏡像。目前,全球有25台IPV6根服務器,其中中國有4台。在根服務器的下一層,有些國家的域名管理機構(如中國的CNNIC)有自己的域名數據庫,被稱為頂級域名服務器。再下一級是各機構的域名服務器以及ISP的緩存域名服務器。

因為DNS是多級緩存的層次架構,實際上全世界的DNS查詢只有很少一部分會去跟服務器查詢。大多數人的查詢都可以從本地ISP的DNS獲取到域名解析信息。如果本地ISP的DNS不知道答案,那麼它會將查詢轉發到上一級的DNS。最終,會可能會轉到根服務器查詢。若根服務器還是查詢失敗,那麼網站將無法訪問。

Chrome給用戶提供了便捷的單框搜索功能。我們可以在瀏覽器頂部的地址欄輸入框裏輸入域名或者輸入關鍵詞調用百度、谷歌等搜索引擎來查詢。

在企事業單位內網使用時,可能會碰到一些問題。它可能會部署私有的TLD解析內部網站。例如,企事業單位內網用戶鍵入“marketing”,如果該單位內網有一個同名的內部網站,Chrome將顯示一個信息欄,詢問用戶是搜索“marketing”還是訪問http://marketing。但是有些ISP會劫持每一個輸入錯誤的網址,並強制跳轉到一個刊載廣告的頁面。

Chrome不想經常在地址欄裏詢問用戶是搜索某個關鍵詞還是訪問某個網站。所以,Chrome的開發者在瀏覽器啟動或者更改網絡環境的時候,做了一個測試:Chrome會隨機生成三個7到15個字符的頂級域名進行DNS查詢。如果其中任何兩個請求返回時具有相同的IP地址,則Chromium假定本地網絡正在劫持它應該接收的NXDOMAIN錯誤,因此它只將所有單字條目視為搜索某個關鍵詞。

不幸的是,在沒有劫持DNS查詢結果的網絡上,這三個查找往往會一直傳播到根域名服務器:本地的DNS不知道如何解析qwajuixk,所以它將查詢發送到它的上一級,它的上一級DNS還是沒有辦法解析,最終會將查詢轉發到根域名服務器,根域名服務器才能最終明確這不是一個正確的域名。

由於大約有1.67*10^21個可能的7到15個字符的假域名,所以在沒有DNS劫持的網絡上發出的每一個探測查詢最終都會到達根域名服務器。我們從Verisign的根域名服務器的查詢統計數據來看,這加起來相當於根域名服務器總負載的一半。

我們自己可以在Chrome裏設置禁用Intranet重定向檢測器來解決這個問題。如果Chrome采用新的措施解決了這個問題,全世界的根域名服務器可以減少600億次虛假的域名查詢。

  大家在看