好的,阿杰,我给你整理一份 全网最详细的 tcpdump
使用指南,从基础到高级用法都涵盖,方便你在 Linux 或 macOS 下抓包和分析网络流量。
TCPDUMP 使用指南
1️⃣ TCPDUMP 简介
- 作用:在终端抓取网络数据包,实时分析 TCP/IP 协议栈流量。
- 特点:
- 支持过滤器,抓取指定流量。
- 可以保存抓包文件(.pcap)供 Wireshark 分析。
- 常用于故障排查、网络监控和安全分析。
- 安装:
# Ubuntu / Debian
sudo apt-get install tcpdump
# CentOS / RHEL
sudo yum install tcpdump
# macOS (brew)
brew install tcpdump
- 注意:抓包需要 root 权限或 CAP_NET_RAW 权限。
sudo tcpdump -D # 查看可用网卡
2️⃣ 基本抓包命令
sudo tcpdump -i eth0
-i
指定抓包网卡- 默认抓取所有数据包,输出信息包括:
- 时间戳
- 源 IP:端口 → 目的 IP:端口
- 协议类型
- 简要数据内容
限制抓包数量
sudo tcpdump -i eth0 -c 10
-c 10
:抓 10 个数据包后退出
显示详细信息
sudo tcpdump -i eth0 -vvv
-v
/-vv
/-vvv
增加详细级别,包括 TTL、长度、标志位等
3️⃣ 常用过滤表达式
过滤 IP
# 指定源 IP
tcpdump src 192.168.1.10
# 指定目的 IP
tcpdump dst 192.168.1.20
# 源或目的 IP
tcpdump host 192.168.1.30
过滤端口
# TCP 端口 80
tcpdump tcp port 80
# UDP 端口 53
tcpdump udp port 53
# 指定源端口
tcpdump src port 22
# 指定目的端口
tcpdump dst port 443
组合条件
# 源 IP + TCP 端口 80
tcpdump tcp port 80 and src 192.168.1.10
# HTTP 流量排除 ICMP
tcpdump tcp port 80 and not icmp
- 支持逻辑运算符:
and
/or
/not
/()
括号组合
4️⃣ 抓包保存与读取
保存抓包到文件
sudo tcpdump -i eth0 -w capture.pcap
-w
:写入文件(原始二进制数据)
读取抓包文件
sudo tcpdump -r capture.pcap
-r
:读取 pcap 文件
只显示部分内容
sudo tcpdump -r capture.pcap -n -tttt
-n
:不解析域名-tttt
:显示完整时间戳
5️⃣ 实用选项
参数 | 作用 |
---|---|
-n | 不解析主机名 |
-nn | 不解析主机名和端口号 |
-X | 显示包内容(十六进制 + ASCII) |
-XX | 显示链路层头 + 内容 |
-s 0 | 抓取完整包(默认只抓前 262 字节) |
-q | 简化输出,只显示重要信息 |
-e | 显示链路层地址(MAC) |
-tttt | 显示时间戳,精确到微秒 |
-D | 列出可用网卡 |
6️⃣ 高级用法
1. 抓取 HTTP 流量
sudo tcpdump -i eth0 -s 0 -A 'tcp port 80'
-A
:以 ASCII 输出内容,方便查看 HTTP 请求/响应
2. 抓取 HTTPS 流量(只看 TLS 握手,不解密内容)
sudo tcpdump -i eth0 -s 0 -n 'tcp port 443'
3. 抓取指定网段流量
tcpdump net 192.168.1.0/24
4. 抓取特定协议
tcpdump icmp # ping 报文
tcpdump arp # ARP 报文
tcpdump udp # UDP 报文
5. 限制抓包大小
tcpdump -s 128 -i eth0
- 只抓前 128 字节,减少资源消耗
6. 配合 Wireshark 分析
sudo tcpdump -i eth0 -w capture.pcap
# 然后在 Wireshark 打开 capture.pcap
7. 持续抓包
tcpdump -i eth0 -G 60 -w 'dump-%Y-%m-%d_%H:%M:%S.pcap'
-G 60
:每 60 秒生成一个新文件- 可实现长期监控
7️⃣ 抓包性能优化
- 避免抓全量,使用过滤表达式减少数据量
- 调整抓包缓存:
tcpdump -i eth0 -B 4096
-B
:设置内核缓冲区大小(KB)- 使用
-n
避免 DNS 解析,提高抓包速度
8️⃣ 总结
tcpdump
是终端抓包利器- 基础抓包:
tcpdump -i eth0
- 过滤指定流量:
host
/port
/net
/proto
- 保存分析:
-w capture.pcap
- 查看内容:
-X
/-A
- 性能优化:过滤 + 缓冲区 + 限制抓包长度
发表回复