解决Ubuntu 10.04 DNS解析慢、上网速度慢

自从ubuntu升级到10.04后,上网速度感觉变慢了很多(ADSL),原因也众说分云,有说是firefox浏览器造成的,于是用chrome访问,速度依然很慢,可见不是由于浏览器造成的。

网速慢, 是因为浏览器在对DNS解析上花费了大量的时间,所以我们要做的工作就是加速DNS的解析。

安装dnsmasq

第1步
sudo apt-get install dnsmasq

第2步
sudo gedit /etc/dnsmasq.conf,找到 #resolv-file=,用resolv-file=/etc/resolv.dnsmasq.conf替换,确保你没有更改过/etc/resolv.conf文件,如果改过,恢复原状

第3步
sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf

第4步
修改ADSL ip4的DNS服务器地址为127.0.0.1这里一定要从图型界面修改,否则重启后resolv.conf会被重写

图一

图二

第5步
重新启动 dnsmasq sudo /etc/init.d/dnsmasq restart
再次访问网页,你会发现解析速度比以前快了N个数量级。

小测试,访问gagahappy.com,调用 dig gagahappy.com 两次

第一次

Query time: 21 msec
SERVER: 127.0.0.1#53(127.0.0.1)
WHEN: Sun Oct 17 22:18:00 2010
MSG SIZE rcvd: 47

第二次

Query time: 0 msec
SERVER: 127.0.0.1#53(127.0.0.1)
WHEN: Sun Oct 17 22:18:49 2010
MSG SIZE rcvd: 47

你会发现使用dnsmasq快了N个数量级

注意:在这里要说一下修改resolv.conf的问题,网上的方法是在第3步后

  1. 编辑resolv.conf sudo gedit /etc/resolv.conf

  2. 将其中的域名服务器全部去掉,加入nameserver 127.0.0.1

  3. 执行命令sudo gedit /etc/ppp/peers/provider(Ubuntu 10.04的文件名是provider,其他版本可能不同)

  4. 在 usepeerdns 前面增加# ,也就是把这条语句覆盖掉,以防resolv.conf的设置被pppoe覆盖

以上方法经本人实践,在ubuntu10.04 + ADSL上网环境中无效,经重新启动后,resolv.conf文件依然会被重写,即加入的127.0.0.1丢失,造成dnsmasq失效,访问速度依然很慢