Linux抓包工具tcpdump
tcpdump 是 Linux/Unix 系统中最强大的网络抓包分析工具之一
一.参数
1.基础参数
-i <interface>: 指定监听的网络接口
-c <count>: 抓取指定数量的数据包后停止
-w <file>: 将抓包结果写入文件*.pcap
-r <file>: 从文件读取数据包进行分析
-v / -vv / -vvv: 显示详细程度递增的输出信息
2.过滤和选择
-n: 不将 IP 地址解析为域名(加快显示速度)
-nn: 不解析 IP 地址和端口号(显示纯数字)
-s <length>: 设置抓取数据包的长度(snaplen),-s 0 表示抓取完整数据包
3.主机过滤
host <ip>: 特定过滤
src host <ip>: 源地址的主机
dst host <ip>: 目的地址主机
4.端口过滤
port <port>: 特定端口
portrange 1000-2000 端口范围
src port <port>: 源端口
dst port <port>: 目的端口
5.协议过滤
tcpdump icmp # ICMP 包(ping)
tcpdump tcp # TCP 包
tcpdump udp # UDP 包
tcpdump arp # ARP 包
6.其他
-C <size>: 配合 -w 使用,按大小(MB)轮转文件
-G <seconds>: 每隔指定秒数轮转一次输出文件,配合 -w 使用
-W <count>: 配合 -C 使用,限制轮转文件数量
二.实用示例
1)常用示例
1. 抓eth0网口的数据,显示ip和端口
tcpdump -i eth0 -nn
2. 抓eth0网口的数据,显示ip和端口,写入文件eth0.pcap
tcpdump -i eth0 -nn -w eth0.pcap
3. 定时抓2分钟的包,写入文件capture.pcap
tcpdump -i eth0 -G 120 -W 1 -w eth0.pcap
timeout 120 tcpdump -i eth0 -w eth0.pcap
3. 筛选出来10条源地址192.168.206.22源端口22的tcp包
tcpdump -i eth0 -nn -c 10 'tcp and src host 192.168.206.22 and src port 22'
4.读文件数据
tcpdump -r eth0.pcap
5.读文件数据,筛选出来源地址192.168.206.22源端口22的tcp包
tcpdump -r eth0.pcap -nn 'tcp and src host 192.168.206.22 and src port 22'
2)其他示例
1. 抓取 eth0 网卡的前 100 个 HTTP 包并保存
tcpdump -i eth0 -c 100 -w http.pcap port 80
2. 监听所有网卡,显示完整数据包内容(排查问题时常用)
tcpdump -i any -s 0 -X -nn
3. 抓取与特定主机的通信,不解析域名,显示时间差
tcpdump -i eth0 host 8.8.8.8 -nn -ttt
4. 抓取 DNS 查询(UDP 53 端口)
tcpdump -i any -nn port 53
5. 抓取 TCP 握手和挥手包(用于排查连接问题)
tcpdump 'tcp[tcpflags] & tcp-syn != 0 or tcp[tcpflags] & tcp-fin != 0'
6. 抓取 HTTP GET 请求
tcpdump -i eth0 -s 0 -A 'tcp[20:2]=0x4745 or tcp[20:2]=0x4854' # "GE" 或 "HT"
7. 每 60 秒(1分钟)生成一个新文件,文件名包含时间戳
tcpdump -i eth0 -w 'capture_%H%M%S.pcap' -G 60
8. 排除 SSH 流量
tcpdump not port 22
三. 流量分析
1.tcpdump -i eth0 -nn 数据分析
时间戳 协议类型 源地址:端口 > 目的地址:端口 TCP 标志 序列号 确认号 窗口大小 TCP选项 数据长度
09:02:41.389837 IP 192.168.206.22.5261 > 192.168.206.2.5088: Flags [.], seq 6658415:6659863, ack 1057, win 33, options [nop,nop,TS val 640432404 ecr 1000362918], length 1448

浙公网安备 33010602011771号