域名状态异常会导致网站不能访问吗?
刚修改过域名解析,为什么不生效呢?
如何查看解析是否生效呢?
刚在注册商修改过DNS服务器,多长时间解析可以生效?
为什么ping域名得到IP和配置的IP地址不一样?
网站页面为什么打不开?…
中小企业在网站的实际运营中,以上这些问题,屏幕前你是否也曾遇到过,是否也因此困扰很久,长时间无法解决,内心万马奔腾。
如果你也感同身受,那么就请往下阅读,老司机手把手教你定位故障环节,针对性解决。
一、 网站访问过程
要想解决这类问题,首先要了解打开网站或APP的背后,究竟发生了什么?
这里就必须提到互联网的基础之一“域名”。正是域名将人类大脑意识和互联网服务联系了起来,例如大家熟知的www.taobao.com、www.baidu.com等等。在我们的记忆中,taobao等于去购物、baidu等于找问题的答案。
但是你眼前的电脑或手机这类电子机器却没有人类的意识,它是如何知道打开taobao是要去访问淘宝的服务,而不去访问腾讯或者百度的服务呢?这是因为www.taobao.com的域名背后对应了一个类似门牌号地址的东西叫做“IP地址”,IP地址和域名一样也是互联网的基础之一。有了这个IP地址,电脑或手机就知道要把你对taobao的访问请求发送到taobao所在的IP地址了,而不会出现张冠李戴的现象。
好奇的你肯定继续问了,www.taobao.com和IP地址对应关系是存储在哪里呢?电脑或手机是去哪里获得的这个地址呢?
域名与IP地址的对应关系存储在一个叫做DNS(Domain Name System)的系统里。DNS是一个全球化的分布式数据库,它所提供的服务就是将类似www.taobao.com的域名转换为互联网IP地址。
那么DNS就近是怎样工作的呢?按照功能划分,DNS分为两大类:递归DNS、权威DNS。
1、递归DNS:
对用户使用电脑或手机等电子设备进行上网时发出的域名解析请求,递归DNS必须给出一个最终的IP地址结果,以便电子设备通过网络去访问IP地址。完整的递归DNS查询流程需要DNS服务器从根域名“.”服务器、顶级域名服务器“.com”、一级域名服务器“taobao.com”一级一级递归查下来最终找到权威服务器取得结果,并返回给客户,同时将取得的结果根据域名设置的TTL时间,缓存在自己的系统当中,以便下次使用。如下图所示:
递归DNS服务器大多数在运营商端,负责网络接入终端的DNS查询。通俗讲,就是你的电脑或手机上配置的那种DNS服务器IP。对于网民访问的所有域名,递归DNS都要负责查询到结果。没有它,我们广大网民就无法上网愉快的玩耍。
2、权威DNS:
特定域名记录比如“taobao.com”,在域名注册商处所设置的那台DNS服务器。这种权威DNS服务器的用途是用于特定域名本身的管理(增加、删除、修改等),而不同于递归DNS服务器是帮助网民去查询域名。
每个特定的域名,权威DNS服务器可能不一定相同。这种权威DNS服务器只对自己所拥有的域名进行域名解析,对于不是自己的域名,拒绝访问。比如递归DNS去taobao.com的权威DNS服务器查询baidu.com的域名肯定会查询失败。
权威DNS服务器在BAT这种大公司,一般采取自建的方式。对于中小型公司,一般会选择一家知名的权威DNS服务商托管服务,经济实惠。阿里云云解析DNS就是这类服务产品。
因此,递归DNS是运营商建设,帮组运营商的网络用户去相应的权威DNS服务查询域名解析结果,其查询结果直接影响所有上网的用户,包括屏幕前的你。
而权威DNS是一般都是域名解析服务商建设,给购买自己域名服务的客户使用,方便管理域名记录,其结果直接影响自己的所有客户,间接影响所有的上网的网民,因为权威DNS服务器需要接受递归DNS服务器的查询。
二、故障定位:
上面做了这么多铺垫,那么针对文章开头的问题该怎么解呢?
1、域名状态异常会导致网站不能访问吗?
域名状态异常,是指域名在注册商处因为某些原因出现了异常状态,例如:未实名制、未备案等。域名状态异常,会直接导致域名不能解析、网站不能访问。当前您可以通过阿云检测 (http://zijian.aliyun.com/)查看到您的域名状态(Domain Status),如果域名状态是如下几个,将代表域名不能访问。
Pendingdelete(域名过期,赎回期)
Redemption period(域名过期,赎回期)
Clienthold(域名被冻结)
Serverhold(域名被冻结)
Inactive(未设置 DNS)
如下图所示:
2、刚修改过域名解析,为什么不生效呢,怎样查看解析是否生效?
刚修改过域名解析,实际上是在域名解析服务商处修改域名解析记录。由网站访问过程我们知道,直接影响用户侧域名生效的是运营商递归DNS服务器、间接影响用户侧域名生效的是域名解析服务商提供的权威DNS服务器。
那么我们分两个步骤测试:
A、首先我们测试本地运营商递归DNS服务器是否生效。测试方法如下:
- Windows用户测试:
在开始菜单中的运行窗口,输入cmd后,回车启动CMD控制端。
输入:“nslookup 要检测的域名”,查看结果。
非权威应答表示,是运营商的递归DNS服务器解析结果,但不是域名的权威服务器解析结果。
- Mac或Linux用户测试:
打开终端控制器,输入:“dig 要检测的域名”,查看结果
B、其次我们测试域名解析服务商的权威DNS服务器是否生效。测试方法如下:
- Windows 用户测试:
按住ctrl+R打开运行窗口,输入cmd后,回车启动CMD控制端。
输入:“nslookup 要检测的域名 dns服务器地址”,查看结果。
其中阿里云云解析企业版dns服务器是vip1.alidns.com与vip2.alidns.com。
- Mac或Linux用户测试:
打开终端控制器,输入:“dig 要检测的域名 @dns服务器地址”,查看结果。
其中阿里云云解析企业版dns服务器是vip1.alidns.com与vip2.alidns.com。
情况分析:
- 如果递归DNS服务器未生效、权威DNS服务器已生效,表明域名刚添加不就,全球的递归DNS服务器未完全同步,需要等待域名配置的TTL时间后再次检测是否生效。如果某些个别的运营商递归DNS服务器依然未生效,很可能是你遇到了域名劫持或者DNS缓存投毒事件。
- 如果递归服务器和权威DNS服务器都未生效,表明域名确实没有添加成功。
3、刚在注册商修改过DNS服务器,多长时间解析可以生效?
域名解析更换服务商,需要变更DNS服务器。DNS服务器的记录登记在域名的上一级DNS,不同后缀的域名,上一级DNS也不同。例如:abc.com的DNS服务器登记在.com、abc.cn的DNS服务器登记在.cn、abc.net的DNS服务器登记在.net。
不同后缀对DNS服务器缓存的时间也不相同。
例如:
.com对DNS服务器缓存时间是172800秒,也就是48小时;
.cn对DNS服务器缓存时间是86400秒,也就是24小时;
.net对DNS服务器缓存时间也是172800秒,48小时;
因此,变更域名解析服务商后,DNS服务器生效时间基本需要等待48小时的时间,才能全球DNS同步。
在此期间,会出现一部分DNS查询请求新的DNS服务器,另一部分DNS查询请求旧的DNS服务器。
所以在修改DNS服务器前必须保证新、旧DNS服务器上的域名记录一致,并且48小时内不得操作,防止DNS解析记录不一致,影响服务。
在遇到解析不生效时,也要第一时间检查48小时内,是否变更过DNS服务器。
4、为什么ping域名得到IP和配置的IP地址不一样?
两种情况:
- 1、域名记录修改后,递归DNS服务器还未生效,ping 域名时得到的IP地址还是域名修改前的IP地址,这时等待TTL时间后,再进行ping测试一般没有问题,如果有问题,可能是遇到运营商DNS劫持了,参考2;
- 2、域名为修改成功,可能是权威DNS服务器为配置成功。也可能是域名刚刚修改了DNS服务器,参考3。
5、网站页面使用域名打不开,使用IP或其他域名就能打开?
在网站的运行过程中,经常会遇到这类问题,我使用IP地址就能打开网站,添加了域名解析,反而打不开网站了呢?
网站的访问过程是一项复杂的过程,涉及DNS解析、网络链接、Web服务器处理等多方面的问题。DNS解析仅仅是网站访问的第一步。
参考2,如果DNS解析出来的IP地址与您设置的IP地址完全一致,那么网站无法打开的问题就出在后面的网络链接和Web服务器处理两个步奏上。
这时,可以用ping测试网络链接是否正常,检查Web服务器的host配置是否正确。
如果使用了Web防火墙产品,还要检查Web防火墙是否对访问的域名添加了白名单。
三、 总结
DNS解析不生效的表现场景多种多样,但是深入探究下来,不外乎是域名状态异常、递归DNS服务器不生效以及权威DNS服务器不生效三个场景。万变不离其宗,根据测试方法首先查看域名状态、其次验证递归DNS解析和权威DNS解析是否生效,即可迅速定位到故障原因。