抓包就靠 tcpdump?别只会

你说得对!虽然 `tcpdump` 是一个非常强大且广泛使用的网络抓包工具,尤其在 Linux/Unix 环境下,但它绝不是唯一的工具,也不能满足所有场景下的需求。过分依赖 `tcpdump` 有时确实会“别只会”。
以下是一些 `tcpdump` 之外的重要网络抓包和分析工具,各有侧重:
"1. Wireshark:"
"类型:" 图形化网络协议分析器 (GUI) "优点:" "用户友好:" 提供直观的图形界面,易于上手。 "强大的解码能力:" 支持数千种网络协议的深度解码和显示。 "交互式过滤:" 可以在捕获过程中或捕获结束后使用 Display Filter (基于 Lua) 实时过滤和分析数据包。 "统计功能:" 提供各种统计视图,如协议分布、连接列表、流量图等。 "颜色编码:" 自动或手动对数据包进行颜色编码,便于快速识别问题。 "跨平台:" Windows, macOS, Linux。 "缺点:" 相对于 `tcpdump`,资源消耗(CPU/内存)稍高。 在极高速网络或需要处理海量数据时,实时分析能力可能受限。 "适用场景:" 大部分日常网络故障排查、协议学习、教学、需要直观展示

相关内容:

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部


说到抓包,很多人第一反应是 Wireshark,图形界面点两下就能用。

但在真实生产环境里,服务器没图形界面、内网出问题得现场排障,这时候你要是真不会 tcpdump,那就真的玩不转。

tcpdump工具命令选项:

所以今天就不整基础语法了,来点实在的 ——

tcpdump 抓包的核心技巧与真实场景用法,一篇打包带走!


1. 抓指定 IP 的包:问题定向排查第一步

tcpdump -i eth0 host 192.168.10.10

还能更精准:

tcpdump -i eth0 src 192.168.10.10 # 抓源地址
tcpdump -i eth0 dst 192.168.10.10 # 抓目的地址

用来确认某个主机是否真的有发/收到包,常用于 ping 不通、连接失败的初查。


2. 抓指定端口的流量(TCP/UDP)

tcpdump -i eth0 port 443 # 抓 HTTPS 流量
tcpdump -i eth0 tcp port 22 # 抓 SSH
tcpdump -i eth0 udp port 53 # 抓 DNS

网络访问慢、卡顿、服务连接不上时,看看有没有 TCP 三次握手或是否有重传。


3. 抓指定协议,判断是应用、网络还是链路问题

tcpdump -i eth0 icmp # 抓 ping 包
tcpdump -i eth0 arp # 抓 ARP 请求/响应
tcpdump -i eth0 ether proto 0x88cc # 抓 LLDP 报文(交换机信息)

能快速判断:

  • 是 ARP 不通,还是 IP 不通?
  • 是没收到回应,还是发包压根没出去?


4. 只抓包头:排障看结构足够,别把服务器搞炸了

tcpdump -i eth0 -s 96 -c 100 -w arp.cap

解释一下:

  • -s 96:每包只抓 96 字节头,够看 IP/TCP/UDP头信息
  • -c 100:抓 100 个包就停,避免抓爆磁盘
  • -w:写入文件供 Wireshark 后续分析

实战中你不可能无限抓,总得控制节奏,别光顾着抓包把现场搞炸。


5. 抓两台主机之间的通信 + 写文件

tcpdump -i eth0 host 10.1.1.1 and host 10.1.1.2 -w test.cap

常用于分析双向交互,比如:

  • TCP连接卡在哪一步?
  • 有发没回?回的包有没有异常?


6. 抓 vlan tag 包:做园区网排障绕不开

tcpdump -i eth0 vlan

如果你已经知道 VLAN ID:

tcpdump -i eth0 vlan 20

常用于:

  • 判断 VLAN tag 是否打上了
  • trunk 链路有没有 strip VLAN tag
  • VLAN 间是否真能互通


7. 抓 DNS 报文看解析过程

tcpdump -i eth0 udp port 53 -vvv

看得出来:

  • 具体发了哪个域名?
  • 有没有被 DNS Server 正确回复?
  • 是不是本地 DNS 没配置?


8. 抓 TCP 三次握手:连不上服务必查这一段

tcpdump -i eth0 tcp & 0x02 != 0 # SYN 报文
tcpdump -i eth0 'tcp & tcp-syn != 0'

进阶组合:

tcpdump -i eth0 'tcp & (tcp-syn|tcp-ack) != 0'

一看就能知道:

  • 客户端有没有发 SYN?
  • 服务端有没有回 SYN-ACK?
  • 有没有 ACK 丢了?


9. 和 grep 联动,实时排查更丝滑

tcpdump -i eth0 -nn -l | grep 192.168.1.100

如果你在排查混杂的服务请求流量,这一招比你手动翻 .cap 文件快得多。


10. 排查广播风暴、环路问题?

tcpdump -i eth0 broadcast
tcpdump -i eth0 multicast

用来定位:

  • ARP 广播是否异常频繁?(局域网互 ping 一下有无回应)
  • STP/BPDU 是否被错误转发(可能导致环路)
  • 某交换机口是否在无脑转发广播?


原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章