当下大家普遍使用的那些DNS解析检测工具, 这里面有命令行方面的nslookup、dig以及host, 也有图形界面方面或者在线方面的工具比如说DNSChimp和DNSPod提供的在线诊断功能。

再具体一点说, Windows系统这个是默认就自带着nslookup的, 而Linux系统和macOS系统是默认就自带着dig还有host的。这些东西都是不需要额外进行安装的, 打开就能直接使用。

一、各工具功能与适用场景

1. nslookup

它支持的系统包含Windows系统, 还有Linux系统, 以及macOS系统。

核心功能是去查询那些域名解析的A记录, 还有AAAA记录, 或者CNAME别名记录, 以及MX邮件交换记录什么的, 而且呢, 用户可以在操作的时候自己动手指定要用哪一个DNS服务器来进行查询。

典型命令:nslookup example.com 8.8.8.8(使用Google DNS解析)

它的优势主要体现在以下几个方面, 就是能够跨平台使用, 并且是系统自带的, 而且操作起来是最简单的。

2. dig

适用平台包括 Linux 和 macOS, 如果使用的是 Windows 系统, 则需要用户自行手动完成相关操作。

核心的功能方面, 会提供非常完备的DNS报文分析能力, 并且支持像是加短标签的那种详细模式, 还有那个像追踪记录一样的那种详细模式等等这些方式。

使用这个典型的命令, 也就是输入 dig example.com +trace , 它的作用是追踪从开始到结尾的完整解析链条。

在优势这一方面, 信息的内容可以说是最为详尽的, 这种特点使得它非常适合被用来排查以及解析有关链路的一些具体问题。

3. host

适用的系统是 Linux, 另外也包括 macOS。

核心功能是轻量级查询, 这个功能适合用于快速验证解析结果。

典型的命令就是host -t MX example.com, 它的作用是去查邮件交换记录。

它的优势在于输出得十分简洁, 所以特别适合在脚本里面进行调用。

DNS解析工具有哪些?5款主流工具对比与使用指南(图1)

4. DNSChimp(在线工具)

它的核心功能是把批量查询做到位了, 还让用户可以对多地域的情况进行对比, 并且把TTL检测也包含了进去。

这个情况是, 当人们需要去对比位于全球不同地方的节点所产生的解析结果的时候。

5. DNSPod在线诊断(DNSPod控制台)

核心功能是专门针对国内DNSPod用户的解析生效情况去进行检测, 并且支持通过递归查询的方式, 对各个运营商的出口进行检查。

在适用场景这一个维度上面来讲, 如果是那些使用国内DNS服务的用户, 那么就可以通过这种方式进行排查工作, 而所要排查的具体问题, 指的是部分地区无法访问这种情况。

二、工具选择建议

场景 推荐工具
快速查某域名IP nslookup
排查解析链路/递归过程 dig +trace
写自动化脚本 host(输出易解析)
全球多节点对比 DNSChimp
国内DNS服务商生效验证 DNSPod控制台诊断

三、常见问题与解决

Q:nslookup提示"Non-existent domain"?

A说的情况是域名没有被注册, 或者是输入的单词拼错了, 所以第一步需要先核实这个域名是不是有效的存在。也有可能是提供核心解析服务的那种DNS服务器还没有完成相关的设置步骤, 因此建议去用带有dig这个标签标识的工具来查询并观察其返回的全部详细回复信息。

Q:dig查询结果为SERVFAIL?

一般来说, 这是由于权威DNS服务器的配置存在异常情况, 或者是网络连接出现问题所导致的, 因此必须要对相关情况进行检查, 具体需要去查看域名注册商那一侧的DNS服务器所处的运行状态。

Q:解析结果与预期IP不一致?

A:检查是否命中了本地DNS缓存(ipconfig /flushdns),或CDN/全球负载均衡策略未更新。

四、补充说明

之前说的那些工具, 大家现在都可以在操作系统里或者对应的官方网站上免费拿到手。如果你是需要去做企业级别的那种大批量的DNS健康监控工作, 我们建议你最好把dig还有host这两个东西集成到你的自动化巡检脚本里面去用, 而且要配合好那个告警机制来一起使用。

至于更多跟DNS解析有关的技术文档以及操作示例这些内容的话, 你可以去参考一下由gz88.cn所提供的那个网络诊断资料库里面的相关信息。