2011年11月3日

Mac OS X 使用 Google Public DNS 改善網路瀏覽體驗

* 這篇教學文章寫給初學者(Mac 使用者),高手請自動忽略 :)

Google Public DNS 是 Google 提供的網域名稱伺服器。

DNS 是網路基礎架構中不可少的一部分,你可以輸入好記的「google.com」(網域名稱)打開網頁,而不必記住「74.125.31.103」這串數字(IP 位址),這之間的轉換工作就是 DNS 的責任。

DNS 服務已經是必要,你可能覺得把一堆數字記下來沒什麼問題。但是對 WWW (一般瀏覽器打開的網站)來說,很多時候會讓多組網域名稱,對應到相同的 IP 位址,也就是虛擬主機(VirtualHost),如果少了這種機制,一台伺服器配上一組 IP 位址,就只能架設一個網站,非常不經濟。

既然  DNS 這麼重要,誰來提供 DNS 服務呢?

每一家提供網路服務的 ISP 都會架設 DNS,給用戶使用,例如種花電信的「168.95.1.1」、「168.95.192.1」。

所以只要能夠正常瀏覽網路,通常就代表 DNS 的設定已經正確。

但這篇文章仍要推薦 Google Public DNS 服務,這項免費的服務有以下目標:
  • Speed up your browsing experience
    加速你的網路瀏覽體驗
  • Improve your security
    改善你的網路安全
  • Get the results you expect with absolutely no redirection
    透過快取直接取得查詢結果,不必等候其他伺服器回覆(同樣也是加速的意思)
很多公司或學校單位,會自行架設私有的 DNS 伺服器。

例如許多學生剛到學校宿舍,就會得到一組網路設定說明:
  • IP: xxx.xxx.xxx.xxx
  • MASK: 255.255.xxx.xxx
  • GATEWAY: xxx.xxx.xxx.xxx
  • DNS: xxx.xxx.xxx.xxx
其中 IP、MASK、GATEWAY 必須依照指示設定,否則很有可能完全無法上網(除非你很清楚自己在做什麼壞事)。

但是 DNS 的部份,就不一定要照規定啦!

我個人非常不喜歡使用公司或學校的 DNS 伺服器,或至少不會只使用它。原因大概是:
  • 這些單位內伺服器的的性能、頻寬,通常不是那麼充足,穩定性也不太可靠
  • 它很可能只是幫忙把你的查詢,再丟給上一層的 DNS 查詢,然後把結果轉送給你
  • 如果這台伺服器被駭,資料遭到竄改,很可能把你帶往惡意的釣魚網站,使個人資料外洩
  • 也許你只是想從 P2P 網站找來一些「測試資料」,但你的一舉一動其實 DNS 都知道
  • 更糟糕的是,有時候網域名稱的 IP 位址已經更新過,但 DNS 就像中風一樣遲遲不肯更新快取
以 Mac OS X 作業系統來說,可以同時設定很多組 DNS,這篇文章就是告訴你怎麼加上 Google Public DNS。

一、點選右上角的網路連線圖示,從選單中選擇「打開網路偏好設定」。

二、從左側欄選擇 AirPort(無線區網)或乙太網路(有線區網),再點視窗右下角的「進階」按鈕。

三、切換到 DNS 頁籤,按一下 DNS 伺服器設定區下方的「+」按鈕,分別新增兩筆「8.8.4.4」及「8.8.8.8」設定。

四、用滑鼠按著不放拖曳,將新增的兩組 DNS 拉到最上方。

五、按進階視窗右下角的「好」,回到網路偏好設定視窗,再點視窗右下角的「套用」。接著就可以關閉網路偏好設定。

到這邊 DNS 的設定已經完成,我們可以使用網路指令工具測試。

一、打開「應用程式」、「工具程式」資料夾下的「終端機」程式,輸入「nslookup google.com」。若順利就會看到查詢結果,是由「8.8.4.4」或「8.8.8.8」伺服器回應。

二、但使用 Google Public DNS 是否如它宣稱的「速度變快」呢?其實通常不會比較快,畢竟 Google 的機器並不是放在 ISP 的機房,網路回應速度沒辦法跟 ISP 自己的 DNS 比。對於常用的網域名稱,ISP 的 DNS 伺服器通常也都是用快取。即使速度有差,幾千分之一秒根本沒什麼感覺。因此速度的差異並非本文強調,我們看重的是 Google Public DNS 的「安全穩定可靠」。以下是透過學術網路比較 Google 與種花電信兩者 DNS 的結果(time數值愈大表示回應時間愈長、愈慢)。

mac:~ $ ping -c 3 8.8.4.4
PING 8.8.4.4 (8.8.4.4): 56 data bytes
64 bytes from 8.8.4.4: icmp_seq=0 ttl=51 time=17.894 ms
64 bytes from 8.8.4.4: icmp_seq=1 ttl=51 time=19.047 ms
64 bytes from 8.8.4.4: icmp_seq=2 ttl=51 time=22.208 ms
mac:~ $ ping -c 3 168.95.1.1
PING 168.95.1.1 (168.95.1.1): 56 data bytes
64 bytes from 168.95.1.1: icmp_seq=0 ttl=245 time=9.669 ms
64 bytes from 168.95.1.1: icmp_seq=1 ttl=245 time=10.591 ms
64 bytes from 168.95.1.1: icmp_seq=2 ttl=245 time=10.066 ms

三、有時候 DNS 查詢無法找到正確的結果,這時候可以用 nslookup 指令除錯,例如「nslookup - 168.95.1.1」就會使用「168.95.1.1」這部 DNS 伺服器進行查詢。

四、如果遇到 DNS 伺服器已經更新某個網域名稱,但電腦的網路程式(如瀏覽器),仍然是使用舊的 IP 位址,這時候就必須清除快取,使用「dscacheutil -flushcache」指令。

延伸閱讀

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!