在慢不經意的網海世界流連閒遊, 經常都會發現瀏覽速度(或電郵伺服器)傳送會突然瞬間頓頓的, 當然網站伺服器及其網絡頻寬相關都排除後, 剩下唯一可能是路由器(或 DNS 伺服器)的問題, 尤其是現代的網頁內容極其「瘋」富, 一個網頁有十多個不同地址的 Flash 及廣告已是平常不過, 試難想像當眾多電腦(辦工室或教育機構)在繁忙時段要 DNS resolver 解拆 IP 地址時路由器(或 DNS 伺服器)所受到的壓力, 而且現今的大爺 ISP 電訊服務商還會玩 DNS 攔截過「淚」的把戲, 當然那 15ms~100ms 的回傳時間不筭怎麼樣, 但能夠為本機及相鄰局網電腦 DNS resolver 解拆地址提升速度(5ms內)也是不錯的。
Linux 應用軟體 dnsmasq 輕量而且可以提供簡易設定的 DNS 轉發(forwarder)及 DHCP 伺服器, 配置成為一個 DNS 緩存加速轉發機供應其他相鄰(及本機)電腦使用, Windows 及 Linux/Unix 或 MacOS 都可以同時得益, 亦減輕大量網絡交通時向上扒 DNS 的時間。
實機使用 CentOS 5.5 Linux, dnsmasq-2.45-1.1.el5_3.i386
設定 dnsmasq 配置緩存加速轉發(cache forwarder):
1. 安裝 dnsmasq, 以 root 系統管理員權限執行在線安裝指令
# yum install dnsmasq
其實 CentOS 一般安裝時已經預裝了 dnsmasq
2. 設定 dnsmasq
以 root 系統管理員權限編輯
新增一行, 使用本機 local loopback 監聽地址
3. 新增一行, 停用無關的 DHCP 供應介面 eth0 裝置
4. 如果 DNS 轉發需要提供給其他相鄰局網電腦使用的話, 新增一行
5. cache-size 的預設值只是 150, 修改增加 DNS 緩存數量 1000(最大上限是 10000), 新增一行
6. 設定使用本機 DNS 回傳解拆為先
以 root 系統管理員權限編輯
新增一行
7. 設定 DNS resolver 的服務地址(dnsmasq local loopback)
以 root 系統管理員權限編輯
新增一行在首行(如圖)
8. 如果需要使用 google dns 的話, 可以加入 8.8.8.8 及 8.8.4.4
9. 如果使用其他局網電腦提供的 dnsmasq, 可以在首行加入其 ip 地址(如圖), 如果其電腦不存在(關機的話), 則會自動選用 127.0.0.1(dnsmasq local loopback)援存加速
由於 DNS 的 domain 地址保留時限是根據 domain 傳回的 TTL(Time To Live), 並不會永遠存留在 cache 中, 所有 cache 都會自動 expire 餘時過期的。
測試, 執行指令 dig google.com
回傳第一次時是正常向上扒 dns 解拆的時間(7Xms), 第二次則是緩存加速後的時間(1ms), 速度差別很大(雖然只是小小的數十個 ms, 如果眾多電腦在繁忙時段大量的話, 節省下的時間是十分可觀的)
備註:
如果 dnsmasq 架設是提供給局網其他相鄰電腦使用的話, 防火牆要開啟 port 53。
Linux 應用軟體 dnsmasq 輕量而且可以提供簡易設定的 DNS 轉發(forwarder)及 DHCP 伺服器, 配置成為一個 DNS 緩存加速轉發機供應其他相鄰(及本機)電腦使用, Windows 及 Linux/Unix 或 MacOS 都可以同時得益, 亦減輕大量網絡交通時向上扒 DNS 的時間。
實機使用 CentOS 5.5 Linux, dnsmasq-2.45-1.1.el5_3.i386
設定 dnsmasq 配置緩存加速轉發(cache forwarder):
1. 安裝 dnsmasq, 以 root 系統管理員權限執行在線安裝指令
# yum install dnsmasq
其實 CentOS 一般安裝時已經預裝了 dnsmasq
2. 設定 dnsmasq
以 root 系統管理員權限編輯
/etc/dnsmasq.conf
新增一行, 使用本機 local loopback 監聽地址
listen-address=127.0.0.1
3. 新增一行, 停用無關的 DHCP 供應介面 eth0 裝置
no-dhcp-interface=eth0
4. 如果 DNS 轉發需要提供給其他相鄰局網電腦使用的話, 新增一行
interface=eth0
5. cache-size 的預設值只是 150, 修改增加 DNS 緩存數量 1000(最大上限是 10000), 新增一行
cache-size=1000
6. 設定使用本機 DNS 回傳解拆為先
以 root 系統管理員權限編輯
/etc/dhclient-eth0.conf
新增一行
prepend domain-name-servers 127.0.0.1;
7. 設定 DNS resolver 的服務地址(dnsmasq local loopback)
以 root 系統管理員權限編輯
/etc/resolv.conf
新增一行在首行(如圖)
127.0.0.1
8. 如果需要使用 google dns 的話, 可以加入 8.8.8.8 及 8.8.4.4
9. 如果使用其他局網電腦提供的 dnsmasq, 可以在首行加入其 ip 地址(如圖), 如果其電腦不存在(關機的話), 則會自動選用 127.0.0.1(dnsmasq local loopback)援存加速
由於 DNS 的 domain 地址保留時限是根據 domain 傳回的 TTL(Time To Live), 並不會永遠存留在 cache 中, 所有 cache 都會自動 expire 餘時過期的。
測試, 執行指令 dig google.com
回傳第一次時是正常向上扒 dns 解拆的時間(7Xms), 第二次則是緩存加速後的時間(1ms), 速度差別很大(雖然只是小小的數十個 ms, 如果眾多電腦在繁忙時段大量的話, 節省下的時間是十分可觀的)
備註:
如果 dnsmasq 架設是提供給局網其他相鄰電腦使用的話, 防火牆要開啟 port 53。