Tcpdump

基础说明

tcpdump 是 Linux 系统中强大的网络抓包工具,支持按 IP 地址、端口号、协议类型等条件过滤数据包,适用于网络故障排查、流量分析等场景。

示例

1. 抓取指定 IP 的数据包

tcpdump host 10.0.0.5

2. 抓取指定网段的数据包

tcpdump net 192.168.1.0/24

3. 抓取指定端口的数据包

tcpdump port 80

4. 抓取多个端口的数据包

tcpdump port 80 or port 443 or port 8080

5. 抓取指定 IP + 端口的数据包

tcpdump host 192.168.1.10 and port 8080

6. 抓包内容保存到文件

tcpdump host 192.168.1.10 and port 8080 -w /tmp/test.cap

7. docker容器内容抓包

# 获取容器PID
docker inspect --format "{{ .State.Pid }}" f6b48371b16d

# 根据容器PID抓网卡eth0包
nsenter -n -t 25235 tcpdump -i eth0 -w /tmp/test.cap

常用辅助选项(提升抓包效率)

选项 作用 示例
-i 指定抓包网卡(如 eth0、ens33,any 表示所有网卡) tcpdump -i eth0 port 80
-w 将抓包结果保存到文件(后续可用 Wireshark 分析) tcpdump -i any host 192.168.1.10 -w capture.pcap
-r 读取保存的抓包文件 tcpdump -r capture.pcap
-n 不解析域名(显示 IP 地址,加快抓包速度) tcpdump -n port 443
-nn 不解析域名和端口名称(显示原始端口号) tcpdump -nn host 203.0.113.5
-v 显示详细抓包信息(-vv 更详细,-vvv 最详细) tcpdump -v tcp port 22
-c 指定抓包数量(抓够指定数量后自动退出) tcpdump -c 100 port 80(抓取 100 个包)
-A 以 ASCII 格式显示数据包内容(方便查看 HTTP 等明文数据) tcpdump -A host 192.168.1.10 and port 80