Linux如何使用dig和nslookup查询DNS_Linux dig与nslookup查询DNS实战

秋芳酱_9128

秋芳酱_9128

2026-04-13

627人浏览

原创

dig更可靠、信息更全,适合排查;nslookup更轻量、交互式强,适合快速查ip或脚本简单调用;两者不互斥,但别用nslookup做权威解析判断。

linux如何使用dig和nslookup查询dns_linux dig与nslookup查询dns实战

直接说结论:dig 更可靠、信息更全,适合排查;nslookup 更轻量、交互式强,适合快速查 IP 或脚本里简单调用。两者不互斥,但别用 nslookup 做权威解析判断。

dig 查询 A 记录和指定 DNS 服务器时怎么写

查域名对应的 IPv4 地址,最常用的是 dig example.com A —— 注意 A 必须大写,小写会报错或返回空结果。如果想绕过系统默认 DNS,直接问某个服务器(比如 Google 的 8.8.8.8),加 @ 符号:dig example.com @8.8.8.8。这个写法必须紧挨着,不能有空格,否则会被当成两个参数,dig 会忽略后半部分。

容易踩的坑:

  • dig example.com A @8.8.8.8 是错的顺序,dig 只认第一个 @ 后面的地址,其余会被丢弃
  • 没装 dnsutils(Debian/Ubuntu)或 bind-utils(RHEL/CentOS)时,直接报 dig: command not found,不是路径问题,是根本没安装
  • 用 +short 选项(如 dig example.com +short)能只输出 IP,但若域名有 CNAME 链,它可能只返回别名,不递归解析到底

nslookup 查 MX 或反向解析时的典型写法

nslookup 默认查 A 记录,要查邮件服务器就用 -type=mx:nslookup -type=mx example.com。注意等号不能省,也不能写成 -q=mx 或 -query=mx,老版本甚至不支持短选项,得用 nslookup -querytype=mx example.com。

反向解析(IP → 域名)直接跟 IP:nslookup 192.0.2.1,它会自动走 PTR 查询。但这里有个隐蔽陷阱:如果当前系统 /etc/resolv.conf 里配置的 DNS 服务器不支持或没配好反向域(比如没指向正确的 in-addr.arpa 授权服务器),结果就是 *** Can't find 1.2.0.192.in-addr.arpa.: Non-existent domain,不代表 IP 没 PTR,只是你问错了服务器。

实用建议:

onewo-rtlinux
onewo-rtlinux

Linux 实时编程助手。生成、审查并修改用于周期性控制任务和中断驱动程序的 C 代码。强制实施实时调度策略。

下载
  • 想确认是否真没 PTR,换一个已知支持反查的 DNS,比如 nslookup 192.0.2.1 8.8.8.8
  • nslookup 进入交互模式后输入 set type=txt 再输域名,能连续查不同记录,但脚本里不推荐——交互模式难捕获输出
  • 某些嵌入式或最小化系统里 nslookup 是 busybox 版本,不支持 -type,只能查 A 记录

为什么 dig +trace 和 nslookup -debug 输出差异很大

dig +trace 从根服务器开始逐级向下查询,每跳都显示响应来源和返回的 NS 列表,能看清整个解析链路是否断裂、某级 NS 是否返回错误或超时。而 nslookup -debug(或 -d)只显示一次查询的完整包结构(包括请求头、应答头、原始字节),并不做递归追踪。

这意味着:

  • 遇到“域名能 ping 通但网页打不开”,优先跑 dig +trace example.com,看卡在哪一级 NS
  • nslookup -debug 主要用在怀疑 DNS 报文被篡改、EDNS 支持异常或 TTL 字段异常时,普通排障几乎用不到
  • dig +trace 默认用 UDP,遇到大响应(如含大量 DNSSEC 记录)可能截断,加 +tcp 强制走 TCP:dig +trace +tcp example.com

脚本里该选 dig 还是 nslookup 获取 IP

如果目标只是取一个干净的 IPv4 地址,dig example.com +short | head -n1 比 nslookup example.com | grep "Address:" | tail -n1 | awk '{print $2}' 更稳定。因为 nslookup 输出格式随版本浮动大:有些版本把答案放最后,有些混在中间;而 dig +short 的输出始终是纯 IP(或空),没有标点、无前缀。

但要注意:

  • dig example.com A +short 和 dig example.com +short 效果一样,显式写 A 并不提升可靠性
  • 如果域名只有 AAAA 记录(IPv6),+short 会输出 IPv6 地址,脚本里需额外判断是否含冒号
  • nslookup 在 Windows cmd 下也能用,Linux 脚本若需跨平台,反而倾向用它,但得接受解析逻辑不如 dig 严谨

真正麻烦的从来不是命令怎么敲,而是当 dig @8.8.8.8 example.com 有结果,dig example.com 却超时——这时候问题大概率出在本地 /etc/resolv.conf 配置的 DNS 服务器本身不可达,或者被防火墙拦截了 UDP 53 端口,而不是工具用错了。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux dns

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.27

2320

5

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

2026.02.03

229

24

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

3019

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

2578

6

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

2023.08.01

1428

3

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2359

5

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.08

3210

4

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

1457

3

windows boot manager
windows boot manager

windows boot manager无法开机的解决方法:1、系统文件损坏,使用Windows安装光盘或USB启动盘进入恢复环境,选择修复计算机,然后选择自动修复;2、引导顺序错误,进入恢复环境,选择命令提示符,输入命令"bootrec /fixboot"和"bootrec /fixmbr",然后重新启动计算机;3、硬件问题,使用硬盘检测工具进行扫描和修复;4、重装操作系统。本专题还提供其他解决

2023.08.28

2377

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习