TCPDump 完全指南:从入门到抓包分析实战
TCPDump 是 Linux/Unix 系统下的一个强大的命令行网络抓包工具,它能够捕获流经网络接口的数据包,并以可读的形式显示出来。
它支持丰富的过滤规则,可以精确抓取特定协议、IP、端口的数据包,是网络故障排查、安全分析、协议学习的利器。
在部分 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.
(1) 查看可用网络接口
复制
tcpdump -D1.
输出示例:
复制
1.eth0
2.wlan0
3.lo (Loopback)1.2.3.
(2) 捕获所有网络流量
复制
sudo tcpdump -i eth01.
(3) 保存抓包数据到文件
复制
sudo tcpdump -i eth0 -w capture.pcap1.
-w capture.pcap:保存为 .pcap 文件(可用 Wireshark 分析)
(4) 读取抓包文件
复制
tcpdump -r capture.pcap1.
TCPDump 支持 BPF(Berkeley Packet Filter)语法,可以精确过滤数据包。
(1) 按 IP 过滤
复制
# 抓取来自 192.168.1.100 的流量
sudo tcpdump -i eth0 host 192.168.1.100
# 抓取目标 IP 是 8.8.8.8 的流量
sudo tcpdump -i eth0 dst 8.8.8.8
# 抓取源 IP 是 192.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.100 的 80 端口流量
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.
(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.
TCPDump 是网络工程师、安全研究员、运维人员的必备工具,结合 Wireshark 可以更直观地分析数据包。掌握它,你就能像黑客一般洞察网络流量!
阅读剩余
THE END