首页/网络/协议速查/抓包分析 DNS 流量
DNS 与域名解析60 条

抓包分析 DNS 流量

用 tcpdump 直接看 53 端口上发生了什么:谁在问、问什么类型、响应码与延迟,是排「解析慢/间歇失败」的终极手段。

协议速查网络更新于 2026-10-13

抓包能回答什么

用 tcpdump 直接看 53 端口上发生了什么:谁在问、问什么名字和类型、响应码是什么、延迟有多久。这是排查「解析慢、间歇失败、某台机器特别慢」的终极手段——应用日志通常只有结果,没有过程。

要覆盖两种传输

DNS 主要走 UDP 53;响应超过约定长度被截断时会改用 TCP 53 重试,区域传送也走 TCP。抓包时两个协议都要覆盖,否则会漏掉大响应和回退路径上的问题。

基本信息

关注端口UDP 53(常规查询)、TCP 53(截断回退与区域传送)
关键选项-nn 不做名字与端口反解、-A 打印载荷、-w 存盘给 Wireshark
常见用途排查解析慢、统计重复查询、确认实际使用的解析器
配合工具Wireshark 的 dns 过滤器与服务响应时间统计

典型使用场景

  • 应用报 DNS 超时但日志没有细节:抓包确认对端有没有回包
  • 怀疑大量重复查询:按名字统计出现次数,找出没有缓存的那一类查询
  • 确认容器实际用的是哪个解析器(很容易与宿主机不一致)
  • 验证截断后的回退行为:看是否如期改用 TCP 重试

抓 DNS

抓 DNS
tcpdump -i any -nn port 53 -c 100                   # 先看概况
tcpdump -i any -nn 'udp port 53' -A -c 20           # 直接看载荷,肉眼可读
tcpdump -i any -nn port 53 -w dns.pcap              # 存盘交给 Wireshark
tcpdump -i eth0 -nn 'port 53 and host 10.0.0.9'     # 只盯某一台解析器

关注点

看什么判断
查询名字与类型业务是否在反复查同一个名字
响应码SERVFAIL、NXDOMAIN 的占比是否异常
响应延迟超过一秒的对端就是问题源
重传与重复UDP 丢包,或上层在无脑重试
源与目的地址实际用的是哪个解析器,是否符合预期
配合 Wireshark 的 DNS 服务响应时间统计,可以按解析器排序,直接找出哪一台最慢。
容器与虚拟化环境要在网桥或 veth 侧抓包:只抓物理网卡会漏掉容器发出的 DNS 流量,容易误判成「根本没有发起查询」。

易错点

  • 在容器环境只抓物理网卡:容器内 DNS 流量完全看不到
  • 抓包不加 -nn:动态端口反解自身又发起 DNS 查询,观测行为污染被测对象
  • 只抓 UDP 53:漏掉截断后走 TCP 重试的路径,把问题归错方向
  • 抓包文件长期留存:内网域名与拓扑信息留在磁盘上,形成信息泄露面
  • 在高流量生产机上长期开启宽泛过滤:抓包本身会消耗 CPU 与磁盘

数据来源与参考

  • tcpdump man page
  • Wireshark DNS 解析文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌