tcpdump
是一个强大的命令行工具,用于在网络接口上抓包和分析网络流量。以下是如何使用 tcpdump
抓包的基本步骤和示例:
基本使用步骤
-
安装
tcpdump
-
在大多数 Linux 发行版上可以用以下命令安装:
1 2
sudo apt-get install tcpdump # 对于Debian/Ubuntu sudo yum install tcpdump # 对于CentOS/RHEL
-
-
查看网络接口
-
使用
1
-D
参数列出所有可用的网络接口:
1
tcpdump -D
-
输出示例:
1 2 3
1.eth0 2.lo 3.wlan0
-
选择你要抓包的接口(例如
eth0
)。
-
-
抓取所有流量
-
使用
1
tcpdump
抓取接口上的所有流量:
1
sudo tcpdump -i eth0
-
按
Ctrl + C
停止抓包。
-
常用选项和示例
-
保存抓包文件
-
将抓包结果保存为
1
.pcap
文件,方便后续用 Wireshark 等工具分析:
1
sudo tcpdump -i eth0 -w capture.pcap
-
-
读取抓包文件
-
读取已保存的
1
.pcap
文件:
1
tcpdump -r capture.pcap
-
-
抓取特定协议的流量
-
抓取 HTTP 流量:
1
sudo tcpdump -i eth0 tcp port 80
-
抓取 HTTPS 流量:
1
sudo tcpdump -i eth0 tcp port 443
-
-
抓取特定主机的流量
-
抓取发送到或来自某个 IP 的流量:
1
sudo tcpdump -i eth0 host 192.168.1.1
-
仅抓取发送到该 IP 的流量:
1
sudo tcpdump -i eth0 dst 192.168.1.1
-
仅抓取来自该 IP 的流量:
1
sudo tcpdump -i eth0 src 192.168.1.1
-
-
抓取特定端口的流量
-
抓取 TCP 80 端口(HTTP):
1
sudo tcpdump -i eth0 tcp port 80
-
抓取 UDP 53 端口(DNS):
1
sudo tcpdump -i eth0 udp port 53
-
-
过滤指定的协议
-
过滤仅 IPv4 流量:
1
sudo tcpdump -i eth0 ip
-
过滤仅 IPv6 流量:
1
sudo tcpdump -i eth0 ip6
-
-
限制抓包数据量
-
只抓取每个包的前 100 字节(减少文件大小):
1
sudo tcpdump -i eth0 -s 100
-
-
实时显示抓包的详细信息
-
显示更详细的包信息:
1
sudo tcpdump -i eth0 -v
-
显示最大详细信息:
1
sudo tcpdump -i eth0 -vv
-
组合使用
|
|
- 解释:抓取来自
192.168.1.1
的流量,并且该流量使用 TCP 80 端口。
注意事项
- 权限问题
tcpdump
通常需要 root 权限运行,因此建议使用sudo
。 - 抓包流量大
抓包可能会生成大量数据,建议使用过滤条件(如
host
、port
)来减少无关流量。 - 实时分析压力 如果抓包流量过多,可将数据保存为文件后,用 Wireshark 或其他工具分析。