一、域名解析失败的5个核心原因

域名解析失败, 其本质原因是DNS系统没能够把域名正确映射成IP地址, 根据相关生产环境的故障统计数据来看, 大概有百分之九十的解析失败现象, 都是由下面所说的这些原因导致的:

1. DNS记录配置错误, 这指的是A记录、CNAME记录以及MX记录的填写内容出现了差错, 或者它们指向的目标主机实际上是不存在的。

2. NS记录未生效或授权失败, 这个情况就是域名权威服务器没有完成正确的切换, 还有注册局那边也没有完成授权的这项工作。

3. DNS全球传播延迟——这是因为在修改纪录之后, 会受到TTL这个因素的干扰, 所以分布在各个地方的递归解析器需要花费24到48小时的时间, 才能使更新的内容生效。

4. 本地或是中间的链路部分的域名系统缓存没有实现更新——这就会导致操作系统, 还有路由器, 也包括运营商在内, 继续返回之前就已经存在过的旧版本互联网协议地址数据。

5. 域名状态异常。这可能是因为过期以后没有进行续费操作, 也有可能是因为被注册局暂停了解析功能, 也就是大家常说的ClientHold情况, 或者域名已经进入了赎回期的阶段。

二、逐层排查步骤(按顺序执行)

第1步:确认域名注册状态

你要先把那个域名注册商的后台登录上去, 然后就去查看一下这个域名的有效期到底还在不在正常状态里看看是不是已经处于一种叫ok的正常状态了, 如果在那个页面里看到了显示的是过期或者是被冻结住了的话, 你就必须得马上把那个续费的步骤给办了, 或者就是要去提交一个申诉。

第2步:验证权威DNS响应

在命令行之中, 大家来执行那个动作。

Windows:nslookup yourdomain.com

Mac / Linux:dig yourdomain.com

你如果要是收到了那种 NXDOMAIN 这样的状态码, 它的意思是域名并不存在, 或者你听到了那个叫做 SERVFAIL 的信号, 也就是服务器出了故障的情况, 那么这个问题通常被认为是出在了权威的DNS那一方去, 但是如果系统能够正常返还出一个正确的IP地址给到你, 可是浏览器方面依然没办法让你点开相应的页面, 那么这种状况之下有很高的概率可以断定是出现了本地缓存方面的问题, 亦或者是网络链路本身存在着某些障碍情况。

第3步:核对NS记录

你先通过执行代码中的命令, 也就是whois yourdomain.com这种方式, 去查看当前NS的列表情况, 然后再拿这个结果跟注册商后台里边的配置做比较, 确认两边是不是保持一致。

如果发现NS仍然还是指向那个旧的服务商, 这说明授权切换的步骤还没有真正完成, 这个时候你需要等待一段时间, 或者联系新的DNS服务商来确认Delegation已经提交成功。

第4步:清除各级缓存

域名解析失败怎么办?DNS逐层排查与修复完整操作指南(图1)

针对Windows系统, 需要执行ipconfig /flushdns这个操作。

Mac:sudo dscacheutil -flushcache

把系统的DNS设置先暂时改成公共解析地址, 可以选择用114.114.114.114这个地址, 也可以选8.8.8.8这个地址, 这样做是为了排除运营商DNS劫持的问题。

第5步:检查服务器与网络

先确认一下目标服务器的防火墙是不是没有封锁80/443端口, 若是说使用了CDN或者是负载均衡的情况的话, 就要检查一下其回源IP与DNS记录是否匹配了。

三、常见DNS错误码对照

返回码 含义 典型原因
NXDOMAIN 该域名不存在 拼写错误、未注册、NS未生效
SERVFAIL 权威服务器故障 DNS服务器宕机、区域文件损坏
REFUSED 查询被拒绝 防火墙策略、访问控制列表限制
NOERROR(无记录) 查询正常但无结果 对应记录未创建或已删除

四、对应修复操作

记录错误: 登录到 DNS 管理面板里去把 A 记录、CNAME 记录或者 MX 记录的数值给改正确了, 然后把这个更改保存下来, 剩下的事情是等着 TTL(时间戳)到期生效。

有一个建议是, 如果你把这 TTL 的值设为 300 秒或者是比 300 秒更小一些的数值的话, 那么恢复这个服务的时间就可以缩短很多。

NS切换未完成: 您需要前往您的域名注册商那里, 更新相应的名称服务器信息, 也可以直接联系您新选的DNS服务商, 向他们确认一下把修改的授权提交给注册局的事情是否已经办好了, 一般来说, 这个变化在48小时之内会完成在全球范围的传播。

缓存残留指的是这样的情况, 我们可以选择手动办法去清除各个层级的DNS缓存内容, 或者另外一种做法是让那些过期的时间到期之后它会自动消失。

域名过期: 需要马上去办理续费手续;如果一旦进入了30天到45天的那个时间段叫做赎回期, 那就必须给那个域名注册商把钱付了,也就是支付赎回费用以后, 才可以把这个域名恢复过来。

五、长期预防建议

建议你要给域名配置至少两组冗余的NS服务器, 然后再去开启DNS的监控告警。你可以在国内关注gz88.cn提供的这种服务, 因为它能搞定DNS解析以及域名的监控。它支持实时的故障告警和自动切换功能。这样的话就能够在很大程度上降低解析中断的情况发生时间。

与此同时, 可以把业务里面的DNS所使用的TTL这个值调整成在300秒以下的范围, 这样做的话能够非常明显地缩短出现故障以后需要恢复的时间长度, 从而可以保证当记录发生了变更或者服务器进行了迁移操作的时候, 对于正在运行的业务所产生的影响被控制得非常小。