
1、介绍tcpdump是 Linux/Unix 系统下最强大的命令行网络抓包工具。它能够实时捕获网络接口上的数据包并支持强大的过滤表达式非常适合用于网络故障排查、安全分析和协议调试。Linux安装yum install -y tcpdump2、基础语法tcpdump [选项] [过滤表达式]选项控制抓包行为如接口、数量、输出格式。过滤表达式决定抓取哪些包如主机、端口、协议。最常用场景场景命令查看可用网卡tcpdump -D指定网卡抓包如 eth0tcpdump -i eth0只抓 10 个包tcpdump -c 10抓取特定主机的流量tcpdump host 192.168.1.100抓取特定端口HTTPtcpdump port 80抓取特定协议ICMP/Pingtcpdump icmp抓取来源 IP 的包tcpdump src 192.168.1.1抓取目标 IP 的包tcpdump dst 8.8.8.8抓取除 SSH 外的所有包避免干扰tcpdump not port 22核心常用选项详解选项作用示例-i指定网卡any表示所有网卡tcpdump -i any-c抓到指定数量后自动停止tcpdump -c 50-n不解析域名IP 直接显示强烈建议加tcpdump -n-nn不解析域名且不解析端口服务名tcpdump -nn-v / -vv显示更详细的包信息Verbosetcpdump -vv-s抓取每个包的长度0表示抓完整包tcpdump -s 0-w写入文件.pcap 格式可用 Wireshark 分析tcpdump -w capture.pcap-r读取之前保存的 pcap 文件tcpdump -r capture.pcap-A以 ASCII 格式显示包内容适合看 HTTP 文本tcpdump -A-X以 Hex ASCII 显示适合看二进制细节tcpdump -X过滤表达式BPF 语法tcpdump使用BPF (Berkeley Packet Filter)语法可以组合条件。类型语法示例主机host IPhost 10.0.0.1网络net 网段net 192.168.1.0/24端口port 数字port 443端口范围portrange 起始-结束portrange 8000-9000协议tcp,udp,icmp,arp等tcp逻辑组合与、或、非与(and或)host 1.1.1.1 and port 53或(or或||)port 80 or port 443非(not或!)not arp高级过滤针对 TCP 标志位抓取 SYN 包用于排查握手问题tcp[tcpflags] tcp-syn ! 0抓取 RST 包查看连接被重置tcp[tcpflags] tcp-rst ! 03、使用示例抓取 HTTP GET 请求tcpdump -i any -nn -A -s 0 tcp port 80 and (tcp[((tcp[12:1] 0xf0) 2):4] 0x47455420)排查 Nginx 连接问题抓 100 个 80 口包不解析域名tcpdump -i eth0 -nn -c 100 -s 0 port 80 -w nginx_debug.pcap排除本地 SSH 干扰抓取除 22 端口外的所有包tcpdump -i any -nn not port 22抓取两台服务器之间的所有通信tcpdump -i any -nn host 10.0.0.2 and host 10.0.0.3输出字段解释15:30:01.123456 IP 10.0.0.10.54321 180.101.49.11.80: Flags[S], seq 12345, win 65535, length 015:30:01.123456时间戳IP三层协议10.0.0.10.54321源 IP. 源端口方向180.101.49.11.80目的 IP. 目的端口Flags[S]SSYNAACKFFINRRSTPPSH.无标记