CPDump是网络分析和故障排查中最强大的工具之一。以下是必须掌握的核心技巧:
基础用法
基本抓包 - 捕获所有接口的流量
tcpdump -i any
指定网卡 - 只抓取特定接口的流量
tcpdump -i eth0
限制抓包数量 - 只抓取指定数量的包
tcpdump -c 100
过滤技巧
按IP过滤
tcpdump host 192.168.1.1
tcpdump src 192.168.1.1
tcpdump dst 192.168.1.1
按端口过滤
tcpdump port 80
tcpdump src port 22
tcpdump dst port 443
协议过滤
tcpdump icmp
tcpdump tcp
tcpdump udp
组合过滤 - 使用and/or/not
tcpdump 'port 80 and (src 192.168.1.1 or src 192.168.1.2)'
高级技巧
捕获特定大小的包
tcpdump greater 1000 # 大于1000字节
tcpdump less 500 # 小于500字节
捕获特定TCP标志
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'
十六进制和ASCII输出
tcpdump -XX
写入文件并读取
tcpdump -w capture.pcap
tcpdump -r capture.pcap
不解析主机名和端口名 (提高性能)
tcpdump -n
详细输出
tcpdump -v # 一般详细
tcpdump -vv # 更详细
tcpdump -vvv # 最详细
捕获特定VLAN流量
tcpdump -i eth0 vlan 100
按数据包内容过滤
tcpdump 'tcp[20:2]=0x4745 or tcp[20:2]=0x504f' # 捕获GET或POST请求
性能优化
限制抓包大小
tcpdump -s 96 # 只抓每个包的前96字节
使用BPF过滤器提高效率
tcpdump -p -s0 -w /tmp/capture.pcap 'port 80'
设置缓冲区大小 (防止丢包)
tcpdump -B 4096
抓包立即写入磁盘
tcpdump -i eth0 -U -w live.pcap
捕获特定主机的HTTP/HTTPS流量:
tcpdump -i eth0 -n 'src host 192.168.1.1 and (dst port 80 or 443) and tcp'
抓取来自源地址为192.168.1.100的主机发送的icmp报文
tcpdump -i eth0 -nn 'icmp and src host 192.168.1.100'
监控网卡 eth0,捕获IP 192.168.1.100 发出的、基于TCP协议的、HTTP流量(端口80),直接显示IP地址和端口号,并打印数据包中的明文内容
tcpdump -i eth0 -nnA 'port 80 and tcp and src host 192.168.1.100'
-Q (–direction):流量方向控制
只抓取进入网卡的流量 (Inbound)
tcpdump -i eth0 -Q in -nn 'tcp port 22'
抓取发送到主机192.168.1.100的icmp报文
tcpdump -i eth0 -Q out -nn 'host 192.168.1.100' and icmp
等同于
tcpdump -i eth0 -nn 'dst host 192.168.1.100' and icmp
-tttt:打印完整可读时间戳
捕获ssh连接流量,并使用标准时间格式输出
tcpdump -tttt -i eth0 'port 22'
-e 用来显示源、目标ip的mac地址
tcpdump -i eth0 -e 'arp'
协议与端口组合,抓取端口80或443且协议为TCP的报文
tcpdump -i eth0 -n 'tcp and (port 80 or port 443)' -vvv
-vvv:获取更详细的输出信息
抓取TCP握手异常 (SYN无响应)的报文
tcpdump -i eth0 -n 'tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0'
实时提取IP地址为192.168.1.100的HTTP报文
tcpdump -i eth0 -l -A -s0 'port 80' | grep -i '192.168.1.100'
捕获进出IP为192.168.1.100的HTTPS流量,每文件100MB,保留最后10个文件,带纳秒时间戳
tcpdump -i eth0 -Q inout -nn 'host 192.168.1.100 and port 443' \
-C 100 -W 10 -w https_trace.pcap \
--time-stamp-precision nano \
-z gzip # 自动压缩完成文件
掌握这些技巧后,你将能够高效地使用TCPDump进行网络流量分析和故障排查。