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