实战计算机网络问题排查(二) -- tcpdump 的过滤指令

2022-06-27 15:00:56 浏览数 (1)

1. 引言

上一篇文章中,我们详细介绍了 tcpdump 的各种使用参数:

计算机网络问题排查(一) -- tcpdump 原理与基础参数

运用这些参数,tcpdump 指令就可以输出你想要的信息了。

然而除了这些参数,更为重要的是如何在茫茫的输出结果中过滤出你最为关心的信息呢?这就需要使用过滤指令了。

本文,我们就来详细介绍一下 tcpdump 的过滤指令。

2. 地址过滤

2.1 抓取特定来自/发往特定主机的请求

最基本的过滤器就是按照地址来选择数据流(host 关键字可以省略):

tcpdump host 205.153.63.30

这个命令抓取了所有来自和发往 205.153.63.30 这个 IP 地址主机的请求。

你也可以通过 MAC 地址进行过滤:

tcpdump ether host 0:10:5a:e3:37:c

2.2 单向过滤

可以通过添加 src 或 dst 关键字来过滤来自或发往指定主机的单向请求:

tcpdump dst host 205.153.63.30

3. 广播与多播

tcpdump 也支持对广播与多播报文进行过滤:

  • 以太网广播数据包

tcpdump ether broadcast

  • IPv4 广播数据包

tcpdump ip broadcast

  • 以太网多播数据包

tcpdump ether multicast

  • IPv4 多播数据包

tcpdump ip multicast

4. 协议及端口过滤

4.1 抓取固定协议数据流

tcpdump ip

这个指令中,关键字 ip 可以换成 igmp、tcp、udp、icmp 来实现对应协议数据流的抓取。

除了上述五种已知的协议外,通过协议编号,tcpdump 可以支持更多协议的过滤,例如 ospf 协议:

tcpdump ip proto 89

4.2 基于端口过滤

下面的指令过滤了指定端口上的数据:

tcpdump port 53

5. 基于报文特征的过滤

  • 收集长度大于200字节的报文

tcpdump greater 200

  • ip 协议头指定位过滤

我们知道,ip 协议头的第 10 字节是网络层协议代码,因此下面表示抓取 tcp 协议:

tcpdump "ip[9] = 6"

参考资料

https://www.tecmint.com/12-tcpdump-commands-a-network-sniffer-tool/

https://www.bookstack.cn/read/network-basic/17.md

0 人点赞