wqx 2010-12-22
firefox上网慢是由于解析域名需要太长时间造成的,解决办法如下:
在ubuntu上通过建立本地的dns缓存来提高网络浏览速度
(有关软件运作原理方面我就不翻译了,有些我也不是很懂,感兴趣的朋友可以读一下原文)
dns服务器使用来把域名解析成ip地址的。例如,当你想要访问yahoo.com时,dns服务器找到这个域的地址,并把你的请求发到正确的方向。
你也可以在自己的机器上设置一个dns缓存,这会加速寻找域名的过程。这大约会有30~60毫秒的差别。
再乘上这一天你要访问网页的总数量来估计一下这个速度的提升。
在ubuntu上安装dnsmasq
用下面命令安装dnsmasq
sudoapt-getinstalldnsmasq
在/etc/dnsmasq.conf中找到
#listen-address
并改成
listen-address=127.0.0.1
接下来编辑文件/etc/dhcp3/dhclient.conf
确保其中某一部分与下面的一段完全相同,特别是有着“prependdomain-name-servers127.0.0.1;”的一行
#supersededomain-name“fugue.comhome.vix.com”;
prependdomain-name-servers127.0.0.1;
requestsubnet-mask,broadcast-address,time-offset,routers,
domain-name,domain-name-servers,host-name,
netbios-name-servers,netbios-scope;
接下来打开文件/etc/resolv.conf
inyourtexteditor.Itprobablylookslike:
在你的文字编辑器里出现像下面的文字:
nameserver217.54.170.023
nameserver217.54.170.024
nameserver217.54.170.026
将nameserver127.0.0.1加到最前面,改成下面的样子
nameserver127.0.0.1
nameserver217.54.170.023
nameserver217.54.170.024
nameserver217.54.170.026
现在你需要用下面的命令重新启动dnsmasq
sudo/etc/init.d/dnsmasqrestart.
现在你就有了一个本地的dns缓存
测试一下你的本地缓存
Ifyouwanttomeasureyourspeedimprovement,typethecommand
如果你想确认你有速度上的提升,输入如下命令:
digyahoo.com
你会发现如下字样“;;Querytime:38msec”
然后再次输入,又会变成:”;;Querytime:2msec”
英文原文如下:A DNS server resolves domain names into IP addresses. So when you request “yahoo.com” for example, the DNS server finds out the address for the domain, and sends your request the right way.
You can run a DNS cache on your computer. This will speed up the process of looking up domain names when browsing. The difference is about 30-60 ms. Multiply that difference by the number of websites you visit a day for an approximate estimate of the speed improvement.
The following instructions are for someone with a broadband internet connection, where the computer gets it’s local IP address using DHCP from the router in your home or office.
Install dnsmasq in Ubuntu
Dnsmasq is a lightweight, easy to configure, DNS forwarder and DHCP server. It is designed to provide DNS and optionally, DHCP, to a small network. It can serve the names of local machines which are not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file. Dnsmasq supports static and dynamic DHCP leases and BOOTP for network booting of diskless machines.
First you need to make sure that Universe repository is enabled in your sources.list file
Install dnsmasq Using the following command
sudo apt-get install dnsmasq
uncomment the following line (remove “#” in the beginning) in the file /etc/dnsmasq.conf
listen-address=127.0.0.1
Now edit
/etc/dhcp3/dhclient.conf
and make sure the section below exactly like this, especially the line that says “prepend domain-name-servers 127.0.0.1;”
#supersede domain-name “fugue.com home.vix.com”;
prependdomain-name-servers127.0.0.1;
requestsubnet-mask,broadcast-address,time-offset,routers,
domain-name,domain-name-servers,host-name,
netbios-name-servers, netbios-scope;In the normal case, when you get a new dhcp lease, the dhcp3 client (tool) on your computer gets a new lease, and updates the
/etc/resolv.conf
file on your computer with the right values for the DNS servers to use (usually some machine in the network of your hosting provider). Adding the “prepend” option as we did above ensures that “127.0.0.1″ will appear on the top of the list of DNS servers. That magic number refers to your own computer. So in the future, whenever your computer needs to resolve a domain name, it will forward that request to dnsmasq (which is running at 127.0.0.1 - your computer). If the details for the domain name are already in you cache, well and good, dnsmasq will serve it up and make the process real fast. If it is not in the cache, then dnsmasq will look at the /etc/resolv.conf file and use the nameservers listed below the “127.0.0.1″. I hope that explains things.
Now open the file
/etc/resolv.conf
in your text editor. It probably looks like:
search yourisp.com
nameserver217.54.170.023
nameserver217.54.170.024
nameserver 217.54.170.026The 127.0.0.1 is missing right now since you haven’t renewed your lease after you edited the /etc/dhcp3/dhclient.conf file. So, let us add that in manually this one time. After you do, your /etc/resolv.conf file will look like the following:
search yourisp.com
nameserver127.0.0.1
nameserver217.54.170.023
nameserver217.54.170.024
nameserver 217.54.170.026Now you need to restart the dnsmasq using the following command
sudo /etc/init.d/dnsmasq restart.
Now you are running a local DNS cache.
Testing Your Local DNS Cache
If you want to measure your speed improvement, type the command
dig yahoo.com
You will see something like “;; Query time: 38 msec” there.
Now type the command again, and you should see something like:”;; Query time: 2 msec”