真正会抓包的网工,早把 tcpdump 玩明白了

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


你可能早就知道 tcpdump 是命令行抓包神器,

但真到现场排障,能灵活用这个工具的网工,真不多。

今天就来一篇全面实战文,把 tcpdump 的语法结构、常用参数、过滤表达式、典型排障套路 都讲清楚。


一、tcpdump 的语法结构长啥样?

标准格式如下:

tcpdump [参数] [过滤表达式]

  • 参数:控制抓包行为(接口、输出方式、数量等)
  • 过滤表达式:控制抓什么(指定协议/IP/端口/方向等)

非常好,你提供的内容很细致,补充得非常实用。下面我将原文章中【“二、常用参数一览(建议熟到写代码一样)”】部分进行结构优化+内容融合,将你列的各项参数统一合并,条理更清晰、内容更完整,确保整体风格一致且便于读者理解:


二、tcpdump 常用参数全解

真正会用 tcpdump 的人,参数都烂熟于心,不靠百度。

📌 组合用法示例:

tcpdump -i eth0 -s 0 -c 100 -w test.pcap
tcpdump -i eth0 -nn -l | grep 192.168.10.1
tcpdump -r test.pcap -nn -X


三、过滤表达式怎么写?这些组合得会背

tcpdump 最强大的地方,其实在于它灵活的 过滤表达式(filter expression)

会不会写过滤,直接决定你抓不抓得到想看的东西。

基本语法结构:

[协议] [方向] [对象]

举个例子:

tcpdump -i eth0 src host 192.168.1.10 and dst port 80

翻译一下: 抓“源地址为 192.168.1.10 且目的端口是 80 的包”。

常用过滤表达式分类梳理:

1. IP 地址相关过滤:

host 192.168.1.10                 # 源或目的地址是它
src host 192.168.1.10             # 源地址
dst host 192.168.1.10             # 目的地址

2. 端口相关过滤:

port 80                           # 抓 HTTP 流量
src port 53                       # DNS 响应
dst port 22                       # SSH 登录请求

3. 协议类型过滤:

tcp                              # 抓 TCP 协议(比如网页、SSH)
udp                              # 抓 UDP 协议(比如DNS、DHCP)
icmp                             # ping 包
arp                              # ARP 包,排查网关、IP冲突

4. 组合过滤(逻辑运算):

host 192.168.1.10 and port 443
src 192.168.1.10 and dst port 80
not port 22
tcp and dst port 3306 and not src net 192.168.1.0/24

常用于细化抓包范围,比如只抓“不是内网发起的 MySQL 请求”。


四、典型抓包场景举例

光会写命令不够,要知道什么时候用哪个组合最管用。

场景 1:某设备无法访问,怀疑网络不通

tcpdump -i eth0 host 192.168.1.10

看这个 IP 有没有进出流量:

  • 没有请求 → 应用没发包 / 配置问题
  • 有请求没响应 → 网关/链路问题

场景 2:网页打不开,是 DNS 解析失败吗?

tcpdump -i eth0 udp port 53 -nn -vvv

看是否有 DNS 请求发出、服务端有没有回复。 还能看到具体查询了哪个域名。

场景 3:应用连接超时,是 TCP 三次握手没完成?

tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0' -nn

快速观察:

  • 有没有 SYN 发出去?
  • 有没有回 SYN+ACK?
  • 客户端有没有发 ACK?

场景 4:怀疑某接口 VLAN tag 被剥了?

tcpdump -i eth0 -e vlan

加 -e 能显示 VLAN ID,检查看有没有 tag。 可配合抓广播流验证二层隔离。

场景 5:网络剧烈抖动,怀疑是广播风暴?

tcpdump -i eth0 broadcast
tcpdump -i eth0 arp

看是否存在大量重复广播(ARP 洪泛、未知单播泛洪等)。

场景 6:用 hybrid 接口承载多个 VLAN,是否有异常流量串 VLAN?

tcpdump -i eth0 vlan and not vlan 10 and not vlan 20

排查非预期 VLAN 出现的情况(比如 VLAN tag 错位、ACL 配置问题)


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值