在互联网的庞大架构中,域名系统扮演着“电话簿”的角色,负责将我们易于记忆的域名(如 www.google.com)翻译成机器能够理解的IP地址,虽然这个过程对大多数用户是透明的,但对于网络管理员、开发人员和系统爱好者来说,掌握命令行下的DNS查询工具是进行网络诊断、安全分析和性能优化的必备技能,这些工具能提供比图形界面更深入、更原始的信息,帮助我们洞察网络连接的每一个细节。

nslookup - 经典的查询工具
nslookup(Name Server Lookup)是最为人熟知且历史悠久的DNS查询工具之一,几乎在所有主流操作系统(Windows, macOS, Linux)上都默认安装,它的功能强大,既支持交互模式,也支持非交互模式。
基本用法:
直接在命令行中输入 nslookup [域名] 即可查询该域名的A记录(IPv4地址)。
nslookup google.com
系统会返回解析该域名的DNS服务器信息以及对应的IP地址。nslookup 的一个显著优点是它的交互模式,仅输入 nslookup 并回车,就会进入一个专门的提示符,在此可以连续执行多个查询,而无需重复输入命令,它还可以查询其他类型的DNS记录,例如查询邮件交换记录(MX记录):
nslookup -type=MX google.com
尽管nslookup非常普及,但一些开发者认为其输出格式有时不够清晰,并且在脚本自动化方面不如其他工具灵活。
dig - 功能强大的信息挖掘机
dig(Domain Information Groper)是一款功能更现代、信息更丰富的DNS查询工具,它在Linux和macOS系统上是网络工具箱中的标准配置。dig的默认输出非常详细,结构分明,清晰地展示了查询的各个阶段,这对于问题诊断极有帮助。
基本用法:
最简单的用法与nslookup类似:dig [域名]。

dig google.com
其输出分为几个关键部分:
- QUESTION SECTION:明确显示了查询的请求。
- ANSWER SECTION:包含查询到的资源记录。
- QUERY time:记录查询所花费的时间,是性能分析的有用数据。
dig的灵活性极高,使用 +short 选项可以获得一个非常简洁的答案,仅返回IP地址,非常适合在脚本中使用:
dig +short google.com
查询特定记录类型也更为直观:
dig google.com MX
甚至可以指定使用特定的DNS服务器进行查询,这对于判断是本地DNS服务器问题还是权威DNS服务器问题至关重要:
dig @8.8.8.8 google.com
host - 简洁高效的查询工具
host工具介于nslookup和dig之间,它旨在提供一种快速、简洁的查询体验,它的输出比nslookup更清爽,又不像dig那样包含过多默认的调试信息,非常适合快速获取核心信息。
基本用法:
它的语法非常直接:host [域名]。

host google.com
输出会直接显示域名对应的IPv4和IPv6地址,查询特定记录类型也很方便:
host -t MX google.com
对于只需要快速验证一个域名是否能正常解析的场景,host是一个理想的选择。
三大命令对比
为了更直观地理解它们的区别,下表对这三个工具进行了小编总结:
| 特性 | nslookup |
dig |
host |
|---|---|---|---|
| 默认输出 | 较为简洁,但格式略显过时 | 非常详细,结构化信息 | 极其简洁,只显示核心结果 |
| 易用性 | 高,交互模式对新手友好 | 中等,功能丰富但选项多 | 高,语法最简单 |
| 信息详细度 | 中等 | 高 | 低 |
| 平台支持 | Windows, macOS, Linux | 主要在 macOS, Linux | 主要在 macOS, Linux |
| 推荐场景 | 快速跨平台检查、Windows环境 | 深度分析、脚本编写、Linux/macOS环境 | 快速验证、获取最简答案 |
相关问答 (FAQs)
Q1: nslookup 和 dig 有什么主要区别?我应该优先使用哪个?
A1: dig是更现代、功能更强大的工具,其输出信息更结构化、更详细,尤其是在诊断复杂的DNS问题时非常有用,并且它更适合在脚本中自动化使用。nslookup则是一个更传统、几乎无处不在的工具,适合进行快速、非正式的检查,尤其是在Windows系统上,如果你使用的是Linux或macOS,并且需要进行深入的网络分析,强烈推荐优先使用dig。
Q2: 当网站无法打开时,如何利用DNS命令进行初步排查?
A2: 排查步骤可以如下:使用 ping [网站域名] 查看是否能获得IP地址,如果ping显示“无法找到主机”,则DNS问题嫌疑最大,使用 dig [网站域名] 或 nslookup [网站域名] 来明确查询,如果这两个命令无法返回正确的IP地址,说明DNS解析环节出了问题,你可以尝试使用公共DNS服务器(如Google的8.8.8.8)进行查询,命令如 dig @8.8.8.8 [网站域名],如果此时能解析成功,则问题可能出在你的本地网络或ISP提供的DNS服务器上,如果能解析但IP地址不正确,则可能是域名的权威DNS配置有误或被劫持。