前言:這篇主要是寫給港人看的,所以專有名詞的中文化不會像平時般徹底,但箇中話題則適合全世界同樣的情況,所以有何看不懂的歡迎提問。
近兩星期一直覺得自己家用那 ISP 「網上行」的速度很慢,不論出海或是本地均反應遲鈍。起初還誤會這是我那 router 的問題,因為不論我家的網路是否忙碌,那廉價的小盒子間中也會無故地掛掉;但於發現滑網礙手礙腳的數天後才突然看到,在我那 Firefox 上一直呆著的 status bar 就只有這一句: “Looking up whatever.com…” 那就是說這跟網路本身的速度沒有關係嘛,只是 DNS 的回應速度慢已而。
奇怪的是, Netvigator 那些 DNS server 並不是完全沒有回應(雖然有時真的會完全的呆倒了),只是慢得很過份而已,想必是一群的 DNS server 其中某幾台沒有服務,導致從 DHCP 獲得的 DNS server 來來去去就是那幾台,這些剩下的 DNS server 於晚飯後的黃金時段應接不暇而反應遲緩甚至是略過部份 DNS 的服務請求。 Anyway,這只是我的個人猜測而已,當中沒有任何實據去證實其運作模式的真確性,總之下面這些方法可舒緩一下大家急切的心就是了。
Oops,說是「一些」方法,倒不如說方法只有一個,就是換個 DNS server 的記錄就行了。當我曾是某公司的「企鵝達人」時,替客人架的所有 server 就只會用這個不知從哪來的 DNS server,因為這 DNS 是公開使用的,不需要是某 ISP 的用戶在其 subnet 內上網才能使用;且這個 DNS server 一直給所有中小企客人的 server 使用也沒問題,也聽聞這 server 是 “OGC” 所有的,所以也算是可放心使用。
不過,這「方法」的達成方法卻有數個,細列如下:
Windows XP:
開啟控制台的網路連線,right click 連線的 icon 選「內容」,double click “Internet Protocol (TCP/IP)” 那選項,於彈出那窗選 “Use the following DNS server addresses:”(抱歉,家裡只有英文版的 Windows XP…),再在其下面輸入上述那開放 DNS server 的 IP address: 202.76.4.1,或其他閣下知道可以使用的 DNS server address。輸入完後 OK 再 OK 就立即生效了。(註:Windows Me 或以前的 Windows 我已忘了怎設定, Windows Vista 的話則還沒有機會真正的用,所以 Windows 方面就只能提供 Windows XP 的設定而已)
Mac OS X:
本來可以簡單的在 System Preferences 裡加入那 DNS server 的 IP 便可,但鑒於那是 “Optional” 的,而本來 Netvigator 那 DNS 亦不是完全的 “Unavailable” 所以怕不能生效,故這裡說說稍為複雜一點的做法。開啟 Terminal,輸入 “sudo vi /etc/resolv.conf”,然後輸入閣下自己那用戶於 OS X 的登入密碼,開出 vi 後按 “Shift + o” 插入新行在上,輸入 “nameserver 202.76.4.1″,按一下 Esc,然後按 “:x” (冒號再 x)再按 Enter 就完成了。
Linux:
自己多數用 terminal 所以 GUI 的設定我可不知道呢…
Linux 內的設定方式依照上述 OS X 內那 Terminal 的 command 一樣地輸入就可以了。
家中以 router 分享連線的話:
由於大部份 broadband router 均經 DHCP 將內聯網用戶的 DNS 設成 ISP 分派的 DNS server 甚至是 router 本身的內聯 IP,所以以上數個 OS 的方法會於 IP 更新後就失效,需要重做一次。如果閣下的 router 可自行指定 DNS server 的話那把它也設成 202.76.4.1 就可以了。
最後說說,這個雖然可以是永久的 solution,但感覺上還是用自家 ISP 的 DNS 好,因為沒有事故的話這會是理論上最快反應的,且 DNS 的請求沒跨過太多地方理論上也相對地安全。所以發現 ISP 的 DNS 回復正常後把所有東西回復原狀好了。
Update!新增另一可用公共 proxy server: 202.177.26.100
Phreak
(2007 年 5 月 27 日 04:13)
Mozilla Firefox 2.0.0.3
Mac OS X
在 Mac OS X 中,其實你在 Network.prefpane 打入的 DNS Server 是直接寫入 “/etc/resolv.conf” 的,所以你繞了這麼大圈,結果還是一樣。 XDDD
而且你更改了 “/etc/resolv.conf” 還不是立時生效,因為 Mac OS X 還會 Cached 了現存的結果。除非 reboot,否則你還要 suso kill 了 lookupd 才生效。所以你還是用 Network.prefpane 方便有效點。 ^_^
其實你還可以使用 lookupd 來看看你的 look up order,只要在 Terminal 打入 “lookupd -configuration” 便會見到 cache 是優先的。
其中 NI 是指 NetInfo Manager,你可以在 /Applications/Utilities 內,找到 NetInfo Manager.app 這個 GUI 管理工具。如果你你還是喜愛 Terminal 多一點,可以使用 niutil。
niutil 同 lookupd 的使用辦法,就你自己睇 manpage 好了。 ^^
Madthiu
(2007 年 5 月 28 日 18:49)
Mozilla Firefox 2.0.0.4
Mac OS X
Phreak 兄:
我這樣寫出來當然是有我的原因了。
雖然,的確,在 Network.prefpane 輸入 DNS 其「效果」跟我自行 vi /etc/resolv.conf 一樣,就是新的 nameserver entry 也是放在 /etc/resolv.conf 的第一行,但在 Network.prefpane 輸入 DNS 正如你所說,不能即時生效,但直接修改 /etc/resolv.conf 卻可以!連 Firefox 也不用 restart 呢。
是否我的 Intel OS X 跟你的 OS X 不一樣? ![]()
Phreak
(2007 年 5 月 30 日 00:47)
Mozilla Firefox 2.0.0.3
Mac OS X
這麼奇怪? lookupd 的 default lookup order 更改了?
如上文所述,你可以自己打入看看 lookupd 看看你的 lookup order,我的是 default:
ConfigSource: default
LookupOrder: Cache NI DS
MaxIdleServers: 4
MaxIdleThreads: 2
MaxThreads: 64
TimeToLive: 43200
Timeout: 30
ValidateCache: YES
ValidationLatency: 15
明顯地,你自己更改了 /etc/resolv.conf,lookupd 是不會留意的,只有等 validationLatency timeout 後才生效。這個行為不論是 BSD 還是 Linux 都是一樣的。
相反 Network.prefpane 是會 signal lookupd refresh 的。
你會不會只是更改 /etc/resolv.conf 時, validateLatency 剛巧 timeout 了? ^_^
lookupd 的用法可以參考:
http://www.osxfaq.com/man/8/lookupd.ws
Madthiu
(2007 年 6 月 3 日 23:12)
Mozilla Firefox 2.0.0.4
Mac OS X
Phreak 兄:
沒那麼巧吧?且我早就看過 lookupd 的 order 了,我也是 default 的,跟你一樣是 Cache 在最前的,但總之我改 /etc/resolv.conf 的就會自動生效,我也不知何故呢…
我改了後沒生效的話我也不會拿出來寫篇文章吧? ![]()
《「網上行最近很慢!」的解決方法》: 4 個回應