网站打不开或网页只打开一半卡住不动?原是DNS在作祟

当你打开电脑准备上一些网站浏览下网页、查查资料时,却遇到网站打不开或者页面只打开一半的时候便卡在那里不动的情况?并且浏览器一直显示页面在加载,那个刷新图标也一直在旋转。这会是什么原因呢?我想有经验的用户一定知道这很可能与以下3个因素有关:

  • 自己电脑的网速实在是太卡了(比如在进行P2P下载,或观看在线电影)
  • 访问的网站的问题,主要可能是网站服务器宽带不足或其他限制;
  • 自己的电脑性能达到了极限(通常是开太多程序或网页导致内存不足或者CPU资源使用过的)

可是笔者今天遇到的问题显然不是以上问题导致的。为什么这么说呢?因为笔者对这个网站的服务器和宽带状况比较了解,几个时候网站几乎不可能存在问题。此外关于网速的因素笔者也轻松排除,因为4MB的宽带就我一个人在用,不可能打开一个网页都会卡。而性能问题也不是问题,电脑的系统是刚不久新安装的Windows 7,开启的软件也就是杀毒软件和一个浏览器,这种情况下打开网页出现卡住的现象显然不可能啊。

原是DNS与广告链接的问题

如果您对浏览器比较熟悉的话,应该可以通过浏览器反映的链接状态数据来迅速判断出此次网页卡不会是以上三种因素。比如笔者使用的是Chrome浏览器正好就时刻显示打开网站网页时加载各种数据的信息,而这次网页卡住只打开一半就是因为这个网站里面放了一个百度广告,而浏览器对这个页面的加载数据表明其实是卡在这个cb.baidu.com广告载入域上了。有些网站将广告代码的位置放置在网页代码的前面了,而如果广告代码出现问题,那么这个网页也就无法被加载了,因为代码执行有一个前后的顺序。

修改DNS导致打开网页卡住

那么这个百度的广告代码为甚会卡住?难道是百度的服务器有问题?的确有这个可能,不过笔者查找到百度广告官方的一个回复这种情况与百度的cb.baidu.com服务器的正常否没有直接关系,而是与DNS地址设置有关!当修改过DNS设置后就可能导致解析错误或者网页加载变慢,这样一来广告加载就会很慢或者卡住。而因为广告被放在了网页代码的前面,所以网页也跟着一起卡,不能将下面的内容显示出来。

解决方法:将IP和DNS设置为自动获取

浏览器打不开网页但可以玩游戏上QQ?原是DNS在作怪

昨天晚上遇到个网友问我他遇到的一个奇怪现象:他的电脑用的是搜狗浏览器,不能打开网页,就连百度网站baidu.com都打不开(百度基本不可能挂掉,所以这个测试是可靠的),但奇怪的是能玩游戏,而且一点都不卡,也能上QQ但是打不开网页,这是怎么回事呀?

直觉告诉我这种问题和浏览器是没有关联的,于是我就给了他两个我认为最有可能导致此类情况的原因和解决办法:

  1. 学校网络被设置了;
  2. 电脑的DNS地址设置有问题;

对于第一条,如果真是那样,显然是没办法的,除非自己再另用网络,对于第二条:DNS的问题我让他测试一下,并更换DNS地址为:8.8.8.8(这是谷歌的一个免费DNS,牛的一B,4个8超级好记)

许久过后我还以为他要准备问我怎么改DNS地址之类问题,结果是我“低估”他了,他直接给我个截图说他这个DNS地址是学校给他们的,要改成我的那个8.8.8.8吗?毫无疑问后来他修改DNS地址后成功解决了电脑打不开网页却可以玩游戏的问题。

为何修改DNS可以上网了?

为什么更换DNS地址能解决上网不能打开网页的问题呢?这是因为DNS记录了每一个网站的域名对应的IP地址,而如果DNS服务器出了问题就会导致我们在浏览器中输入的网址无法被当前你所用的DNS服务器正确转换成IP地址,所以就无法访问了。

另外DNS的记录的IP地址是有一个有效时间周期的,对于网站域名来说这个时间周期是可以自由设置的(可以是1分钟,也可以是一礼拜),周期过了DNS会重新“确认”一下那个域名的IP地址,而如果这个周期被设置过长,可是这段时间刚好网站的IP地址更换了,那么你就不能打开那个网站了,另外电脑本地也会缓存DNS解析的IP地址,如果这个缓存出了问题也是一样的症状。不过本文中的用户不属于这个情况,因为如果是这样的话不会连百度都打不开。所以基本可以断定就是他们学校给的那个DNS服务器有问题。而8.8.8.8这个DNS地址是谷歌的,几乎不可能会出现故障,所以更换DNS之后不能打开网页的问题也就解决了。

大家也都记住那个DNS了,以后遇到网页打不开,但其他网络终端软件却可以上网的问题基本都可以通过修改DNS来解决,比如最常见的就是打不开网页却可以登陆QQ这类问题,屡试不爽。如果依然不行,你可以用XX安全卫士的功能大全里面的那个“修复网络(LSP)”工具来解决电脑里面其他地方的问题。

解决Linux下DNS(Bind)配置完成后启动服务失败但不报错怪相

今天做实验遇到一个很简单的问题纠结自己。DNS配置完成以后启动服务失败,但不报错。首先装好DNS服务相关软件包,启动直接启动DNS服务:成功。关闭服务:直接copy默认配置文件named.caching-nameserver.conf改名然后启动DNS服务:失败。mv回去再次启动失败。

实在没办法,突然想到“当没有办法立即解决系统问题的时候,记得看日志”查看/var/log/messages 日志文件发现

第一次成功开启记录
:zone localdomain/IN/localhost_resolver:
loaded serial 42
: zone localhost/IN/localhost_resolver:
loaded serial 42
: running

第一次失败的记录
:none:0: open: /etc/named.conf: permission denied
:loading configuration: permission denied
:exiting (due to fatal error)

第二次改回默认文件名的失败记录
:none:0: open: /etc/named.caching-nameserver.conf: permission denied
:loading configuration: permission denied
:exiting (due to fatal error)

可以看到都是权限拒绝,但我用的是root用户。那么应该是有特定用户来开启。查看用户文件夹/etc/passwd,发现果然有named这个用户。再查看配置文件宿主和属组,可以看到宿主是root。然后把宿主改为named用户,启动服务DNS成功。

虽然是个小问题,不过对于初学者可能会造成困扰。所以要有看日志的好习惯。任何问题解决如果思路清晰了解决起来还是很简单的。(安修)