Linux - tcpdump 使用方法

时间:2022-01-15 00:35:02

tcpdump可以将网络中传送的数据包完全截获下来提供分析

安装 tcpdump

yum install tcpdump*  # radhat/centos
dnf install tcpdump   # arch
apt-get install tcpdump  # debian/ubuntu

常用参数

-s 指定抓包的大小,0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。
-i 表示连接的接口,any代表所有的接口 
-w 表示抓的包写到指定path中。文件为.pcap
-vv 输出详细的报文信息
-c 指定抓包数量,到达数量后自动终止
-n 不把网络地址转换成名字
-nn 直接以IP和端口号显示,而非主机与服务器名称
-D 列出可用于抓包的接口
-p 不让网络界面进入混杂模式

表达式分类 协议包括:tcp、udp、icmp,如果为空则可以匹配所有协议。 目标包括:src、dst、src or dst、src and dst。 类型包括:host、net、port、portrange。 表达式之间可以使用逻辑语句进行连接。

使用案例

# 所取所有数据包
tcpdump -w sult.pcap

# 抓取所有经过eth0网卡的数据包
tcpdump -i eth0 -w sult.pcap

# 抓取源ip地址192.168.1.100的数据包
tcpdump src host 192.168.1.100 -w sult.pcap

# 抓取目的ip地址192.168.1.100的数据包
tcpdump dst host 192.168.1.100 -w sult.pcap

# 抓取主机192.168.1.100的所有数据
tcpdump host 192.168.1.100 -w sult.pcap

# 抓取网段的数据包
tcpdump -i eth0 -nvv net 192.168.1.0/24

# 抓取指定协议格式的数据包
tcpdump udp|tcp|icmp|arp|ip -i eth0 -vnn

# 抓取源目的端口是22的数据包
tcpdump -i eth0 src port 22

# 抓取目的端口是22的数据包
tcpdump -i eth0 dst port 22

# 抓取端口是22的数据包
tcpdump -i eth0 port 22

# 抓取源ip192.168.1.100且端口是22的数据包
tcpdump -i eth0 src host 192.168.1.100 and dst port 22 与

# 抓取源ip192.168.1.100或端口是22的数据包
tcpdump -i eth0 src host 192.168.1.100 or port 22 或

# 抓取源ip192.168.1.100且端口不是22的数据包
tcpdump -i eth0 src host 192.168.1.100 not port 22 非

# 抓取源ip是192.168.1.100且目的端口是22的数据包,或源IP是192.168.1.102且目的端口是80的数据包
tcpdump -i eth0 (src host 192.168.1.100 and dst port 22) or (src host 192.168.1.102 and dst port 80)

# 把抓取的数据包记录存到sult.pcap文件中,当抓取100个数据包后就退出程序
tcpdump -i eth0 -w /tmp/sult.pcap -c 100

# 从sult.pcap记录中读取tcp协议的数据包
tcpdump -i eth0 tcp -vnn -r /tmp/sult.pcap

# 获取主机收到和发出的所有数据包
tcpdump host 192.168.1.100

# 如果想要获取主机接收或发出的telnet包
tcpdump tcp port 23 host 192.168.1.100 

# 监听 eth1 网卡上的所有数据包 
tcpdump -i eth1

# 监听某个IP上的所有数据包,适合有多个IP的设备的场景
tcpdump host 10.208.0.10

# 监听两个IP之间通信的数据包
tcpdump host 10.208.0.10 and \( 10.208.1.10 \)

# 监听主机与某个IP之外的所有IP数据包
tcpdump ip host 10.208.0.10 and ! 10.208.1.10

# 监听某个IP所有80端口的流量
tcpdump tcp port 80 and host 10.208.0.10