TCPDump 完全指南:从入门到抓包分析实战

TCPDump 是 Linux/Unix 系统下的一个强大的命令行网络抓包工具,它能够捕获流经网络接口的数据包,并以可读的形式显示出来。

它支持丰富的过滤规则,可以精确抓取特定协议、IP、端口的数据包,是网络故障排查、安全分析、协议学习的利器。

1. 安装 TCPDump

在部分 Linux 发行版中TCPDump 已经预装。如果没有,可以使用包管理器安装:

复制
# Debian/Ubunt sudo apt install tcpdump # CentOS/RHEL sudo yum install tcpdump # macOS (通过 Homebrew) brew install tcpdump1.2.3.4.5.6.7.8.9.10.

验证安装:

复制
tcpdump --version1.
2. 基本用法

(1) 查看可用网络接口

复制
tcpdump -D1.

输出示例:

复制
1.eth0 2.wlan0 3.lo (Loopback)1.2.3.

(2) 捕获所有网络流量

复制
sudo tcpdump -i eth01.
-i eth0:指定网卡(默认是第一个非 loopback 接口)按 Ctrl+C 停止抓包

(3) 保存抓包数据到文件

复制
sudo tcpdump -i eth0 -w capture.pcap1.

-w capture.pcap:保存为 .pcap 文件(可用 Wireshark 分析)

(4) 读取抓包文件

复制
tcpdump -r capture.pcap1.
3. 过滤数据包

TCPDump 支持 BPF(Berkeley Packet Filter)语法,可以精确过滤数据包。

(1) 按 IP 过滤

复制
# 抓取来自 192.168.1.100 的流量 sudo tcpdump -i eth0 host 192.168.1.100 # 抓取目标 IP8.8.8.8 的流量 sudo tcpdump -i eth0 dst 8.8.8.8 # 抓取源 IP192.168.1.1 的流量 sudo tcpdump -i eth0 src 192.168.1.11.2.3.4.5.6.

(2) 按端口过滤

复制
# 抓取 80 端口的 HTTP 流量 sudo tcpdump -i eth0 port 80 # 抓取目标端口 443 (HTTPS) sudo tcpdump -i eth0 dst port 443 # 抓取源端口 22 (SSH) sudo tcpdump -i eth0 src port 221.2.3.4.5.6.7.8.9.10.

(3) 按协议过滤

复制
# 抓取 ICMP (Ping) 流量 sudo tcpdump -i eth0 icmp # 抓取 TCP 流量 sudo tcpdump -i eth0 tcp # 抓取 UDP 流量 sudo tcpdump -i eth0 udp1.2.3.4.5.6.7.8.9.10.

(4) 组合过滤

复制
# 抓取来自 192.168.1.10080 端口流量 sudo tcpdump -i eth0 "host 192.168.1.100 and port 80" # 抓取非 HTTP/HTTPS 的流量 sudo tcpdump -i eth0 "not (port 80 or port 443)"1.2.3.4.5.6.
4. 高级用法

(1) 限制抓包数量

复制
# 只抓 10 个包后停止 sudo tcpdump -i eth0 -c 101.2.

(2) 显示数据包内容(十六进制 + ASCII)

复制
sudo tcpdump -i eth0 -X1.

(3) 抓取 HTTP 请求(显示 URL)

复制
sudo tcpdump -i eth0 -A "tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)"1.

(4) 抓取 DNS 查询

复制
sudo tcpdump -i eth0 port 531.
5. 结语

TCPDump 是网络工程师、安全研究员、运维人员的必备工具,结合 Wireshark 可以更直观地分析数据包。掌握它,你就能像黑客一般洞察网络流量!

阅读剩余
THE END