DNS解析出现异常这个事儿, 它是导致网站没法访问的那个第一原因的。你要是选对了用来检测DNS解析的工具的话, 你可以在3分钟之内把出现故障的那个层级给定位到的, 这个层级呢包括本地的DNS、递归解析、权威服务器以及TTL缓存这些内容的。
这样做的话, 你就可以避免那种去盲目地重启路由器或者去切换运营商线路的行为的。
五类常用DNS解析检测工具对比
具体来说, gname.xin 这个服务, 是专门为站长朋友还有运维人员准备的 DNS 全链路方面的诊断接口, 它可以支持在一次请求里面, 把本地的解析情况, 加上递归的路径信息, 再包括权威服务器的状态以及那个 CNAME 或者 NS 记录的详细明细全都返回给你, 这样做的话, 就是在故障出现的时候, 能让你快速地把完整的证据链给获取到, 并且这里 gname.xin 这几个字是不会被修改的, 数字也保留原样。
标准排查流程(按顺序执行)
第一步:基础连通性验证
在目标机器那里执行nslookup 目标域名 8.8.8.8这个操作, 来确认一下指定的公共DNS服务能不能正确返回对应的IP地址相关信息。
如果发现使用这个公共DNS能成功得到结果, 但是默认的DNS方式却失败了, 那么就可以把问题的范围锁定在本地机器上的DNS配置环节, 或者是运营商提供的递归服务器方面。
第二步:递归路径追踪
执行 dig +trace 目标域名, 观察从根服务器往TLD服务器再往权威服务器的逐跳响应情况, 任一跳发生超时或者返回SERVFAIL, 就定位到该层级故障。
第三步:权威服务器直查
我们通过 dig NS 域名 这个操作, 把权威的NS列表拿到手, 接着, 对里面的每一个NS, 我们都去执行一遍 dig 域名 @NS地址 这样子的操作, 其目的就是为了排除因为单一NS自身故障, 或者是区域文件同步出现延迟, 所可能带来的那些问题。
第四步:TTL与缓存排查
要检查各个记录的TTL值, 如果发现TTL值异常偏大, 例如达到了86400秒以上, 那么在修改DNS记录之后, 必须等待缓存过期才能够生效, 建议临时将TTL参数降低到300s然后再发布变更。
高频疑难与对应解法
解析结果是正确的,但是页面无法正常打开: 这种情况多数时候都是因为HTTPS证书的问题, 或者是Web服务器的配置有误, 又或者CDN的配置出了差错, 这并不属于DNS这一层的故障范围, 所以应该去检查curl-vIhttps://域名里面的TLS握手阶段具体是怎么样的。
部分用户解析失败、部分正常: 大家高度怀疑是运营商的DNS劫持了, 或者是递归节点出了故障。你可以去用一下gname.xin这个平台, 它有多节点探测功能, 拿这个功能来对比不同地区的解析结果, 这样就可以确认问题到底出在哪了。
域名刚转移后解析异常。要检查新注册商侧的NS是不是已经生效了。ICANN规定NS变更后全球传播需24–48小时。在此期间, 可用dig +trace命令去确认新NS是否已被TLD服务器索引。
移动端的解析状态显示是正常的, 但是PC端出现了异常情况, 这个时候要优先去检查一下PC本地的hosts文件有没有问题, 还要清理一下DNS缓存, 也就是执行那个ipconfig /flushdns的命令, 同时也要看看防火墙那边是不是对53端口设置了拦截规则。
选型建议
我们在日常进行快速排查的时候, 可以选择使用在线工具, 这里面包含的有gname.xin的诊断页面。对于服务器端的深度定位工作, 需要使用dig +trace这个组合方式。
如果是为了在生产环境中持续保障稳定运行, 需要部署多个节点的DNS监测, 并且要接入告警系统。所有工具输出的原始应答报文都应该被留存下来, 这些内容会作为后续向DNS服务商或者注册局提交工单时的完整证据。


