windows XP + Ubuntu10.04双系统.
刚装完ubunu系统的时候,默认的Firefox可以访问google搜索,百度下的各种内容(搜索、快照、贴吧、知道、空间等都可以)。
但是更多的网站是不能访问,比如ubuntu中文站、sohu、sina、csdn等等,浏览器左下角一直显示waiting for XXX.XXX……
我在网上搜索到好几种方案,常见的有dnsmasq,pdnsd,还有说使用google DNS服务器的(8.8.8.8),有说用nscd的。
昨晚4种方案我都试了,有次不知道怎么回事就可以访问所有网站了,我也顺便装了chrome。
结果下次重启之后,又回到只能上google、百度的状态,firefox和chrome是同样的情况,大部分网站的解析不出来,google虽然能搜索,但搜索结果链接打不开,cache也不能看……基本上只在用百度和快照。
今天中午一急之下再重装ubuntu,结果初始状态还是解析不了很多网站,命令行里都是ping得通。
livecd试用也不能解析……
windows能用,照理说硬件不会有问题啊……
更新软件源之后装一些常用包也是没问题的,但装wine的时候有sourceforge.net内容无法获取,一直超时……
上网解析慢到底应该是哪里问题呢???
折腾了一天,真是心力交瘁……求诊断求开导求安慰……
附一些我搜索试用的解决方案及结果——全部失败:
安装dnsmasq
命令: sudo apt-get install dnsmasq
编辑dnsmasq的配置文件
命令: sudo gedit /etc/dnsmasq.conf
找到下面这一项
#resolv-file=
用下面的一条语句替换
resolv-file=/etc/resolv.dnsmasq.conf
确保你没有更改过/etc/resolv.conf文件,如果改过,恢复原状
然后执行命令
sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
然后编辑resolv.conf
命令;sudo gedit /etc/resolv.conf
将其中的域名服务器全部去掉,加入以下这行
nameserver 127.0.0.1
执行以下命令
sudo gedit /etc/ppp/peers/provider(Ubuntu 10.04的文件名是provider,其他版本可能不同)
在 usepeerdns 前面增加 # ,也就是把这条语句覆盖掉,以防resolv.conf的设置被pppoe覆盖。
重启电脑。
----------------------------
网上说“重启后, 你会发现解析速度比以前快了N个数量级”,我重启之后一如既往的慢,而且resolv.conf还是被重置了……
1.安装
sudo apt-get install pdnsd
安装过程中,它会问你选择何种配置,此处选择manual。
2.配置
sudo gedit /etc/pdnsd.conf
修改
server {
label="resolvconf";
}
为
server {
label="resolvconf";
ip=61.233.154.33;
ip=211.98.4.1;
timeout=30;
interval=30;
uptest=ping;
ping_timeout=50;
purge_cache=off;
}
其中:
ip=61.233.154.33;
ip=211.98.4.1;
这两行也可以写成一行ip=61.233.154.33,211.98.4.1; 代表当地的DNS服务器地址,如果你上的是校园网,那么这两个地址就是网管阿姨给你的那个DNS和备用DNS了。。。
可以有多个,根据自己情况填写。这里是铁通的DNS。
后面的参数采用默认就可以了。
3.设置本机的DNS
sudo gedit /etc/resolv.conf
在所有内容之前插入一行:
nameserver 127.0.0.1
修改一下文件:
sudo gedit /etc/ppp/peers/provider
在usepeerdns前加#,注释掉。防止ppp强制使用远程DNS,并覆盖 resolv.conf
如果你启用了DHCP服务,那么要
sudo gedit /etc/dhcp3/dhclient.conf
去掉
#prepend domain-name-servers 127.0.0.1;
前面的“#“。
4.启动pdnsd
sudo /etc/init.d/pdnsd start
5.简单测试
dig yahoo.com | grep time
第一次结果显示:;; Query time: 11 msec
第二次结果显示:;; Query time: 0 msec
---------------------
依照网上步骤,第四步显示not starting pdnsd。第5步第二次结果也能显示为0msec,但上网还是不能解析,重启之后resolv.conf还是被重置……
sudo gedit /etc/resolv.conf
修改完成后记得保存,这里 resove.conf 的内容如下:
# Generated by NetworkManager
#domain domain
#search domain
#nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4
保存好即时生效,可以使用 nslookup 工具查看是否生效:
magicalboy@m:~$ nslookup
> server
Default server: 8.8.8.8
Address: 8.8.8.8#53
Default server: 8.8.4.4
Address: 8.8.4.4#53
> magicalboy.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: magicalboy.com
Address: 75.119.195.77
> exit
打开浏览器随便输入您想要访问的地址看看,感觉比平常在 Windows 下访问的速度快多了吧,此时的域名解析速度很明显可以看到已经提高了几个数量级!
最后还有一个重要的步骤,若现在重启系统, 会恢复为默认 DNS 了. 我们之前设置的 DNS 又要重设。可以通过编辑
/etc/dhcp3/dhclient.conf 文件,增加之前设置的 Google DNS 服务器地址,代码:
prepend domain-name-servers 8.8.8.8,8.8.4.4;
保存退出后,下次重启系统就不需重设 DNS 了。
--------------------------
我的测试结果是,第一步保存resolv.conf之后,nslookup查看生效,但浏览器访问没有丝毫好转……
我也试了修改firefox设置,network.dns.disableIPv6 -> true 关闭ipv6,结果也是无效……在 Ubuntu 中冲掉 DNS 缓存的方式是重新启动 nscd 守护程序。
安装 nscd 的方式是在命令行中运行这条命令:
sudo aptitude install nscd
在Ubuntu中清 DNS 缓存的命令是:
sudo /etc/init.d/nscd restart