tcpdump命令及例子
tcpdump 是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息;是一个网络数据包分析工具,用于在命令行中捕获和分析网络流量。它可以帮助你监视、记录和分析进出计算机的网络流量。
执行tcpdump命令需要root账号或者具备sudo权限的账号,否则执行tcpdump命令说,系统会提示tcpdump: no suitable device found。

以下是一些常用的tcpdump命令详解:
基本语法:
tcpdump [options] [expression]
一些常用选项:
- -i: 指定要监听的网络接口,如-i eth0。
- -n: 显示IP地址和端口号而不进行DNS解析。
- -c: 指定捕获的数据包数量。
- -s: 指定捕获的数据包的最大长度。
- -w: 将捕获的数据包写入文件。
- -r: 读取存储的捕获文件进行分析。
表达式示例:
host 192.168.1.1: 捕获与特定主机的通信。port 80: 捕获使用特定端口的流量。src 192.168.1.0/24: 捕获源IP地址在给定子网中的流量。dst 8.8.8.8: 捕获发送到特定目标IP地址的流量。icmp: 捕获ICMP流量。
一些示例命令:
1. 监听特定接口上的所有流量:
sudo tcpdump -i ens192
运行结果:

2. 捕获特定源IP的流量:
sudo tcpdump src 192.168.1.31
运行结果:

3. 保存捕获的数据包到文件:
sudo tcpdump -i ens192 -w capture.pcap
读取保存的数据包文件进行分析:
tcpdump -r capture.pcap
运行结果:

4. 抓取包含192.168.1.0/24网段的数据包
tcpdump -i ens192 -vnn net 192.168.1.0/24
运行结果:

4. 抓取源 ip192.168.1.100或者端口22
tcpdump -i ens192 -vnn src host 192.168.1.31 or port 22

请注意,使用tcpdump需要具有足够的权限,通常需要以管理员身份运行。在使用时要谨慎,以免在生产环境中引起不必要的问题。