tcpdump是功能强大的命令行网络抓包分析工具,特别适合在服务器或无图形界面的环境中使用。掌握其核心用法能高效定位网络问题。
这里总结了从基础到进阶的核心命令速查表:
| 能力分类 | 常用命令示例 | 作用说明 |
|---|---|---|
| 基础抓包 | tcpdump -i eth0 |
在eth0网卡上抓包并实时显示。 |
tcpdump -i any |
抓取所有网卡的流量。 | |
| 主机/网络过滤 | tcpdump host 10.0.0.1 |
抓取与主机10.0.0.1相关的所有流量。 |
tcpdump net 192.168.1.0/24 |
抓取整个网段的流量。 | |
| 端口过滤 | tcpdump port 80 |
抓取端口80的流量(如HTTP)。 |
tcpdump src port 12345 |
抓取源端口 为12345的流量。 |
|
| 协议过滤 | tcpdump icmp |
抓取ICMP流量(如ping)。 |
tcpdump arp |
抓取ARP协议流量。 | |
| 逻辑组合 | tcpdump 'host 10.0.0.1 and port 80' |
抓取主机10.0.0.1在80端口的流量。 |
tcpdump 'src net 192.168.1.0/24 and not dst port 22' |
抓取来自该网段且目标不是SSH端口的流量。 | |
| 高级筛选 | `tcpdump 'tcp[tcpflags] & (tcp-syn | tcp-fin) != 0'` |
tcpdump 'src 10.0.0.1 and greater 1000' |
抓取来自10.0.0.1且长度大于1000字节的包。 |
|
| 输出控制 | tcpdump -n |
禁用主机名解析,显示IP,提升速度且清晰。 |
| `tcpdump -l | tee file.log` | |
tcpdump -w file.pcap |
原始数据包 保存为pcap文件,供Wireshark详细分析。 |
|
tcpdump -r file.pcap |
读取 并分析已保存的pcap文件。 |
📝 详细使用场景与技巧
1. 基础抓包与查看
tcpdump -D:列出所有可用网卡。tcpdump -i eth0 -c 10:在eth0网卡上抓取10个包后自动停止。tcpdump -i any -c 50 -nn:抓取所有网卡的前50个包,不进行主机名和端口号解析 (-nn),效率最高、最准确。
2. 解读输出格式
一个典型的TCP输出如下:
10:20:30.123456 IP 192.168.1.100.54321 > 203.0.113.1.80: Flags [S], seq 1234567890, win 64240, options [mss 1460], length 0
10:20:30.123456:时间戳。IP:网络层协议。192.168.1.100.54321 >:源IP和源端口。203.0.113.1.80::目标IP和目标端口。Flags [S]:TCP标志位,[S]是SYN(发起连接),[.]是ACK,[P]是PSH(推送数据),[F]是FIN(结束连接),[R]是RST(重置连接)。seq 1234567890:序列号。length 0:数据段长度。
3. 保存与分析
强烈建议 将复杂分析保存为pcap文件,用Wireshark进行图形化深入分析。
tcpdump -i eth0 -w capture.pcap:将原始数据包保存到capture.pcap。tcpdump -r capture.pcap -nn 'tcp.port == 80':从文件中读取并过滤出80端口的流量。
4. 实用命令组合
- 抓取HTTP GET请求 :
tcpdump -i eth0 -s 0 -A 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
(0x47455420是 "GET " 的16进制) - 抓取DNS查询 :
tcpdump -i eth0 -nn 'udp port 53' - 排除自身SSH连接干扰 :
tcpdump -i eth0 'not (src host 你的IP and dst port 22) and not (dst host 你的IP and src port 22)'
💡 核心建议
- 权限 :tcpdump需要
root权限,通常需加sudo。 - 从简开始 :先用
-c限制包数,用-nn避免解析,快速验证命令。 - 组合使用 :复杂过滤用单引号
''括起,逻辑运算符and、or、not灵活组合。 - 最终武器 :
-w保存,-r读取,结合Wireshark进行深度分析是黄金组合。