在 Linux 上抓取指定 IP 的 TCP 包,通常使用 tcpdump 命令。以下是几种常见场景的命令示例:
1. 抓取来自或发往指定 IP 的所有 TCP 包
sudo tcpdump -i any host 192.168.1.100 and tcp -w output.pcap
-i any
:监听所有网络接口host 192.168.1.100
:指定目标 IPand tcp
:只抓取 TCP 协议-w output.pcap
:将数据包保存到文件
2. 抓取特定端口的 TCP 包
sudo tcpdump -i any host 192.168.1.100 and tcp port 80 -w http.pcap
port 80
:只抓取 80 端口的流量
3. 抓取指定方向的流量
# 只抓取流入指定 IP 的包
sudo tcpdump -i any dst host 192.168.1.100 and tcp -w inbound.pcap
# 只抓取流出指定 IP 的包
sudo tcpdump -i any src host 192.168.1.100 and tcp -w outbound.pcap
dst
:目标地址为指定 IPsrc
:源地址为指定 IP
4. 实时查看包内容(不保存文件)
sudo tcpdump -i any host 192.168.1.100 and tcp -A -s 0
-A
:以 ASCII 格式显示包内容-s 0
:捕获完整的数据包(默认只截取部分)
5. 限制捕获的数据包数量
sudo tcpdump -i any host 192.168.1.100 and tcp -c 100 -w limited.pcap
-c 100
:只捕获 100 个数据包后停止
注意事项
- 需要 root 权限(使用
sudo
) - 长时间抓取会生成大量数据,建议配合
-c
或-G
(按时间分割文件)使用 - 抓取后可用 Wireshark 或
tcpdump -r file.pcap
分析文件
根据你的具体需求调整命令参数即可。