选择对的DNS

DNS的效能瓶頸

先解釋一下重點原理,DNS基本上就是1張超大的表格,裡面填滿了IP位址和網址,只要有人送來「請問techbang.com的實際位置是什麼?」,DNS就會回應「techbang.com的位置是60.199.208.210」資訊。

DNS伺服器還有「分層」以及「快取」的觀念,因為地球是個說大不大、說小不小的星球,若是全部的人均向同一DNS要求域名解析,那麼住得離伺服器較遠的使用者回應時間會很高,目前除了最高等級的13個根(root)伺服器之外,還會再分成區域、國家、網路服務業者、公司等不同層級的DNS,服務當地的民眾。

因為服務區域以及成本的考量,越接近根伺服器的DNS效能越高,表格數越多,越底層的DNS就像是上層伺服器的快取,如果自己沒有techbang.com的資料,就向上一層要求,最糟的狀況就是最後向根伺服器請求。

也許有人會想,那為什麼不要直接向根伺服器請求就好?沒錯,根伺服器的確保有最完整的域名解析資料,但是數量也最少,且絕大多數位於美國,離使用者有段距離,回應時間並不一定比本地附近的DNS快。

另外一方面,快取資料具有「時間」以及「空間」的關聯性,你向DNS查詢的資料,很可能最近也有人查詢過,已經在本地的DNS中留下快取;住在你家附近的使用者,也很有可能跟你上過同樣的網站,以上這2種狀況將DNS伺服器指定為距離較近的主機,能夠獲得更快的回應。

▲在網路連線的TCP/IP設定中,可自行設定2組DNS位址。

DNSBench

首先介紹的是DNSBench這套軟體,這款軟體曾在本雜誌上多次提及,也是筆者經常使用的軟體之一,下載回來就是個可直接使用的執行檔。

DNSBench剛開始執行時會抓取電腦內部所設定的DNS位址,以及世界上大部分公開的DNS位址;使用者也可以利用Nameservers分頁下的Add/Remove按鈕自行添加想要測試的DNS位址。等到軟體抓完位址或是自行輸入之後,便可按下Run Benchmark開始測量。

▲在方框中輸入位址,其它的DNS便可加入DNSBench測試。

軟體預設為升冪排列,會根據3樣測量出來的資訊進行排名,使用者可在伺服器位址後方發現3種顏色的長條圖,綠色長條代表查詢資訊存在於DNS中的回應時間,藍色長條代表查詢資訊不存在DNS中,須向更高層級DNS查詢的反應時間,紅色長條則為.com域名的查詢時間。

▲DNSBench預設為升冪排列,挑前幾個DNS使用就對了。

在某些狀況下,軟體內的DNS位址部分也會出現紅色長條,這代表了部分電腦送出的DNS查詢沒有回應。這表示了2件事,第一,這台DNS可能有過載的情況,無法處理送過去的查詢。第二,你和這台DNS之間的網路可能不穩定,會掉封包,若是發生以上其中1種狀況,就不建議將DNS設定為此類位址。由於升冪排列的關係,越上方的DNS位址就代表反應速度越快,建議使用者直接將電腦預設DNS更改為前幾名的位址。

▲想得知更正確的測試結果,可至Tabular Data分頁中查看。(單位:秒)

namebench

第二套軟體是namebench,下載回來是個自解檔,等程式解壓縮至暫存資料夾後便自動開啟,介面比起DNSBench簡單多了。但其實這是個更在地化、個人化的測試軟體,除了像DNSBench會自動抓取電腦和全球各地的DNS之外,還會自動加入區域性的DNS。更棒的是可以選擇使用者網頁瀏覽器的瀏覽紀錄,作為測試的樣本,找出適合每個人的DNS伺服器。

▲namebench的Query Data Source可以匯入瀏覽器的歷史紀錄,並利用這些歷史紀錄作為測試樣本。

不過這個軟體的測試時間較久,可能長達數十分鐘(視測試樣本數量而定),使用者可以先去看個電視再回來,這個期間請不要使用網路,測試結果會比較準。

軟體跑完之後會開起網頁測試報告,並告訴你若是改採namebench推薦的DNS,速度將比目前系統設定的快多少百分比,下方也是按照升冪排列,還有圖表可供參考,甚至還將DNS請求和回傳的資訊製作成.csv表單,非常的詳盡。

▲namebench測試完畢之後會跳出網頁版結果,並提出更改建議。

▲namebench還產生綜合圖表一起比較各DNS優劣。