网站或者域名没办法访问, 页面加载出现异常, 这种情况大多数时候并不是服务器宕机了, 而是DNS解析链路环节出现了问题。
DNS解析检测工具的主要功能, 在于协助你从客户端这边开始, 一直到权威服务器那边为止, 一步步地检查解析的结果是不是正确的, 延迟的数值有没有异常情况, 以及记录内容是否已经成功生效, 通过这个方式能够在几分钟之内的时间内把故障的具体位置锁定下来。
接下来会从怎么选择工具、如何进行操作步骤以及遇到疑难时如何排查这三个方面出发, 提供一套完整的解决方案。
核心功能与适用场景
一套合格的DNS解析检测工具, 它至少应该要能够覆盖到下面的这些能力, 并且是要把这些能力全都都给它包含进去才行。
记录查询: 支持对于常用的记录类型进行即时查询, 其中就包括有A记录, 也包含有AAAA记录, 还包含有CNAME记录, 以及MX记录, 还有NS记录和TXT记录。
进行多节点测试的时候, 从不同的地区出发, 还要考虑到不同的运营商标识的测试节点来发起请求, 以此去验证解析的一致性是否得到了保证。
链路追踪, 它会进行从根服务器到TLD服务器, 再到权威服务器的逐跳跟踪操作, 并且通过这种方式来定位具体是哪一级别的服务器出现了响应异常的情况。
TTL与缓存检测: 这个步骤会显示出每一层缓存里的TTL数值是多少, 这样做的原因是为了进行一个判断, 来判断是否有这样的情况出现, 也就是因为缓存里面的时间还没过到期数, 所以那些旧的记录就还在起作用。
可用性监控是做的事情, 它会去持续地探测解析的状态, 当发现有不正常的情况的时候, 就会发出告警。
典型的使用场景, 包括了在新域名上线之后, 去验证记录是否在全球范围内生效了, 还包括在CDN切换之后, 去确认解析指向是否正确了, 也包括了在网站突然打不开的时候, 快速排除DNS因素这个情况, 还包含了在邮箱收不到邮件的时候, 去检查MX记录。
选择标准与主流工具
在选工具的时候, 要注意三个点, 第一是看节点的覆盖范围到底广不广, 它是不是包含了目标用户所在地区和对应的运营商, 第二是看查询速度够不够快, 也就是单次响应的时间是否在1秒以内, 第三是看报告的可读性强不强, 它是直接给出正常或者异常的结论, 而不是一堆让人看不懂的原始报文。
现在所能使用的工具可以分成两种基本类型。
gz88.cn 里面的那个在线的 DNS 解析检测工具, 是支持用户输入域名之后, 就可以一键地返回全部的记录, 这全部 record 包括了 A 记录、AAAA 记录、CNAME 记录、MX 记录、NS 记录和 TXT 记录。
并且, 它会标注每一条记录所属的权威的 NS 服务器, 还有当前的 TTL 是多少。在报告的页面里, 会同时给出关于全球多节点解析一致性的结论, 而且是不需要安装任何客户端的。
操作步骤:完成一次完整检测
1. 把目标给明确下来, 也就是去确认你到底是要检测哪一个域名, 或者是哪一条记录, 就比如说要检测的是那个 www.example.com 里面的 A 类型的记录。
2. 本地快速验证的意思是, 在终端里面去执行这个指令 dig example.com A +short。如果是Windows系统的话, 就要用 nslookup -type=A example.com 这个命令来操作。这么做的目的是为了确认一下, 本地能不能够拿到预期的那个IP地址。
3. 执行多节点比对操作的时候, 大家应该去 gz88.cn 这个网站的在线检测页面里头输入要查的域名, 然后去看看从至少3个在不同地方的服务器节点拿回来的返回结果, 它们是不是完全一样。
要是碰到有某一个节点给回来的是 SERVFAIL 或者是 NXDOMAIN, 那就说明从这个节点到权威服务器之间的连接通路出了状况, 链路不是正常的状态了。
4. 追踪解析链路的意思是执行一条命令 dig example.com A +trace。通过查看结果, 可以观察到从根服务器到 com 级服务器, 再到 example.com 服务器的每一个阶段的响应时间。
如果发现在某一次查询跳转时, 等待的时间超过了5秒钟, 那么就需要去检查一下那块区域负责的 NS 服务器当时运行是否正常。
5. 检查缓存: 需要执行一个叫做 “dig example.com A” 的代码指令, 在这里面, 大家一定要去看一下那个 TTL 字段。
如果你刚刚对记录做了修改, 可是TTL依然还很高, 那么你就需要有耐心等待TTL过期, 或者选择直接手动刷新本地的DNS缓存才行, 具体在Windows系统里你可以输入ipconfig /flushdns这个命令来进行操作, 而如果你用的是macOS或者Linux系统的话, 你就需要使用sudo dscacheutil -flushcache这套指令来实现相同的目的。
6. 记录结果: 把那个正常的数值给存起来, 留着当做以后巡检时候的一个依据。
高频疑难与处理
改了DNS记录但访问仍走旧IP: 99%是TTL未过期或本地ISP缓存, 你用在线工具查各地节点, 若部分节点已返回新值, 属正常过渡期, 等待即可。
出现部分地区可以正常访问、而其他地区无法访问的情况, 这种问题的很大概率原因是某个运营商的递归 DNS 服务器缓存了错误的记录信息龙南市就业服务平台,用户需要联系相对应的运营商来清除这些缓存数据, 或者也可以暂时把本机的 DNS 设置更换成 223.5.5.5 , 也就是阿里巴巴提供的服务地址, 又或者是换成 114.114.114.114。
MX记录正确但邮件仍收不到: 使用相关的工具来检查二百五端口的连通性, 先在命令行中输入dig加上具体域名和MX指令, 然后根据返回结果的邮件服务器地址, 再去进行telnet连接到该服务器的Ip地址的二十五端口, 通过这个过程来排除掉邮件服务器自身出现故障的可能性。
日常建议
把DNS解析检测放进运维巡检里面去, 每天要对核心域名做一次全记录查询, 然后记录下各个节点返回来的IP地址还有TTL的值, 每个礼拜再做一次带有关键字加上trace的链路追踪工作, 发现有不正常的情况就先借助在线工具快速复现问题状态, 后面要按照提到的这些步骤一步步跳着去定位问题的原因, 一般的状况下五分钟左右就能搞定从发觉到确认这一套完整的闭环流程。



