所谓域名解析失败, 也就是大家常说的DNS错误, 它的核心问题就是客户端这边没有办法借着域名的名头去拿到对应的IP地址, 这样一来网站自然就打不开。绝大多数的时候, 也就是百分之九十的情况, 是因为下面提到的这五类原因造成的, 只要按照优先级的顺序一个一个地去排查, 问题基本上就能够得到了解决。
五大常见原因
1. DNS记录配置错误这个情况, 是说A记录、CNAME还有MX这些类型的记录, 里面填的内容有出入, 或者是改了之后, TTL那个时间还没到, 所以新的设置还没有起作用。
就拿gname.xin这个域名来举个例子说吧, 如果A记录它指的是一个错误的IP地址, 那么当你去访问的时候, 系统就会返回“无法找到服务器”这样的提示。
2. 域名过期或DNS服务器失效: 在域名到期之后, 如果没有进行续费操作, 那么对应的注册商会把它的状态设置为clientHold, 这样一来, 域名的解析工作就会立刻停下来。
还有另外一种情况, 如果域名所对应的权威DNS服务器本身出了故障, 导致停机, 那么所有被指向到这台DNS服务器上的记录, 就全部都会变成无效的状态。
3. 本地DNS缓存或ISPDNS故障: 路由器, 或者操作系统, 还有运营商的DNS服务器, 这些东西会缓存过期的记录, 这就导致新配置没法生效。
4. 服务器端问题表现为目标服务器停止运行了, 或者指定的端口没有打开, 又或者被防火墙给拦截了, 尽管DNS解析过程是正常的, 但是网络连接最终却被拒绝了。
5. SSL证书与域名不匹配: 在进行HTTPS访问的时候, 会发现那个证书的域名和实际访问的域名是不一致的。这时候浏览器会直接弹出一个错误提示, 看着好像是“解析失败”, 但实际上真正的问题出在证书上面。
排查步骤(按顺序执行)
第1步|确认域名状态
请打开域名注册商的后台管理界面, 去检查一下该域名的状态内容, 看其是否处在所谓的“正常”运行状态里面, 并且要仔细看清楚它存在不存在过期的这个情况, 或者有没有附加锁定的特殊标记。
第二步的时候, 请你检查一下那个DNS解析记录的实际情况。
使用命令行工具查询:
dig +short A gname.xin(查A记录)
dig +short NS gname.xin(查NS记录)
请确认返回的IP地址, 以及确认DNS服务器的配置是否是正确的情况需要被核实清楚。
这是第三个步骤, 需要把dns的设置进行切换以便进行测试。
先把本地DNS设置改一下, 改成223.5.5.5这个阿里DNS或者8.8.8.8这个Google DNS, 然后把缓存清掉, 再重新试一次, 这么做的目的是为了判断出到底是不是本地或者是运营商的DNS出了问题。
第四步, 也就是进行那个服务器连通性测试的步骤。
使用ping命令去测试目标IP的连通性, 再用telnet工具去连接目标IP的80/443端口, 以此来最终确认服务器是否已经处于存活状态, 以及指定端口是不是处于开放可用的情形。
第5步|核对SSL证书
你可以在浏览器的地址栏那里, 去点击那个锁形状的图标, 然后你就来核对一下这个证书颁发的域名, 它是不是和现在你正在访问的这个域名是一样的。
对应修复方案
如果 DNS 记录有错误,需要在域名管理面板中修改对应的记录域名解析失败怎么办, 之后还得等待 TTL 过期, 通常需要花费 10 分钟到 48 小时的时间, 这样才会生效。
当域名过期的时候, 你就得赶紧去续费。好多域名注册商都给了30天的宽限期。在这段宽限时间里面进行续费的话, 就可以把解析功能恢复了。
如果发生本地DNS故障, 可以试着先清除一下缓存, 在Windows系统下输入ipconfig /flushdns, macOS和Linux系统则用sudo dscacheutil -flushcache, 除了清除缓存之外, 还可以考虑更换为其他的DNS服务器来解决这个问题。
如果出现了服务器问题, 你需要联系提供主机服务的商家, 然后去重启那个对应的服务, 同时还要去检查一下防火墙里面关于入站规则的设置情况。
发现证书不匹配的情况, 你需要去重新申请一个通配符证书或者是SAN证书, 用新获得的这个证书来覆盖所有的子域名。
预防建议
你可以把域名自动续费的这个开关给打开, 这样做的目的是为了要防止在到期的时候会出现失联的情况。
我们可以使用至少两家的DNS服务商来实现冗余部署, 这样做的目的主要是为了有效地避免单点故障现象的发生。
每个月要使用在线的DNS检测工具对解析记录进行一次检查。
把关键的业务接入到CDN里面, 在DNS出现故障的时候,边缘节点也还是能够兜底提供服务的。
通过一步一步地按照上面的步骤去仔细检查域名解析失败怎么办, 绝大部分的因为域名解析失败的这种情况, 都能在30分钟以内找到原因并把问题解决掉。

