Linux中tcpdump抓包怎么分析DNS查询响应报文

大涛君_7881

大涛君_7881

2026-09-17

964人浏览

原创

tcpdump抓dns流量仅捕获原始二进制数据,不解析域名等字段;区分查询(qr=0、源端口随机、目的端口53)与响应(qr=1、源端口53、事务id匹配),需用-v参数查看标志位和计数,导出pcap文件后用wireshark深度解析。

linux中tcpdump抓包怎么分析dns查询响应报文

直接用 tcpdump 抓到的 DNS 流量是原始二进制数据,它本身不解析 DNS 报文字段(比如域名、查询类型、响应码),但能准确捕获请求与响应的网络行为。分析 DNS 查询响应报文,关键在抓对包 + 看清方向 + 结合参数输出判断

看懂抓包输出里的 DNS 请求和响应

DNS 查询和响应都走 53 端口,区分靠方向和标志位:

  • 查询(Query):源端口随机(如 54321)、目的端口 53;输出中显示 QR=0(Query Response 标志为 0),常见于 tcpdump -v 输出的 DNS 行末尾
  • 响应(Response):源端口 53、目的端口是客户端随机端口;QR=1,且通常带 rd=1(递归期望)、ra=1(递归可用),以及 qdcount=1(问题数)、ancount=N(回答数)
  • 例如这一行:11:22:33.445678 IP 192.168.1.10.54321 > 192.168.1.1.53: 57864+ A? google.com. (28) → 这是查询(+ 表示 RD=1,A? 是查询类型)
  • 下一行:11:22:33.446789 IP 192.168.1.1.53 > 192.168.1.10.54321: 57864 1/0/0 A 172.217.164.110 (44) → 这是响应(事务 ID 相同为 57864,1/0/0 表示 ancount=1, nscount=0, arcount=0)

用 -v 或 -vv 查看 DNS 标志和计数字段

默认输出只显示基础五元组,加 -v 才能看到 DNS 层关键信息:

Linux Journey
Linux Journey

当用户想学习Linux基础、命令行、文件系统等时,在LabEx查找并推荐免费的Linux Journey课程。

下载
  • tcpdump -i eth0 -n -v port 53:显示 QR、OPCODE、RD、RA、RCODE、qdcount、ancount 等
  • 关注 QR=0(查) vs QR=1(应),RCODE=0 表示无错误,RCODE=3 是 NXDOMAIN(域名不存在)
  • 若看到 ancount=0nscount>0,可能是被重定向到权威服务器;ancount>0 且含 A/AAAA 记录,说明解析成功

保存为 pcap 文件,用 Wireshark 深度解析

tcpdump 不做应用层语义解析,真正要看域名、TTL、记录类型、DNSSEC 标志等,必须导出后用 Wireshark:

  • 先保存:tcpdump -i eth0 -nn -w dns.pcap port 53
  • 传输到本地,用 Wireshark 打开 → 右键某条 DNS 包 → “Follow” → “UDP Stream”,或直接展开 DNS 协议树
  • Wireshark 能清晰标出:Question、Answer、Authority、Additional 四个区域,每条记录的 Name、Type、Class、TTL、Data

快速定位异常响应的小技巧

排查 DNS 故障时,可结合过滤和输出聚焦关键线索:

  • 只看响应且失败的:tcpdump -i eth0 -n -v 'udp port 53 and (ip[36] & 0x80) and ip[38] == 3'(粗略匹配 QR=1 且 RCODE=3,需熟悉 IP/UDP 偏移,生产环境更推荐先抓全再用 Wireshark 过滤)
  • 检查是否超时无响应:用 -c 20 抓固定数量,观察有无成对出现的 Query/Response
  • 确认是否走 TCP:若看到 tcp port 53 且长度较大(>512 字节),可能是 DNSSEC 或大响应,需加 tcp 条件避免遗漏

相关文章

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

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

下载

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

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3550

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3093

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2133

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5070

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4762

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2873

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2365

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2579

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习