缩略图

最近网站流量有些异常 记录下抓包 tcpdump使用方法

2026年04月01日 文章分类 会被自动插入 会被自动插入
本文最后更新于2026-04-01已经过去了9天请注意内容时效性
热度45 点赞 收藏0 评论0

TCPdump 使用详解

一、基本语法

tcpdump [选项] [过滤表达式]

二、常用选项(Options)

选项 说明 示例
-i 指定监听的网络接口 -i eth0, -i wlan0, -i any
-n 不解析主机名 显示 IP 而非域名
-nn 不解析主机名和端口名 显示数字端口(如 80 而非 http)
-v 显示详细信息(叠加 -vv, -vvv
-q 快速模式(减少输出)
-c num 只捕获前 num 个包后停止 -c 10
-s num 设置捕获包长度(字节),-s 0 表示完整包 -s 0
-w file 将捕获包写入文件 -w capture.pcap
-r file 从文件读取包 -r capture.pcap
-X 十六进制+ASCII 显示包内容
-XX 包含以太网头部
-e 显示数据链路层(MAC)头部

三、常见用法示例

1. 抓取指定接口流量

tcpdump -i eth0

2. 高效输出(推荐)

tcpdump -i any -nn

3. 限量抓包

tcpdump -i wlan0 -c 10 -nn

4. 保存原始包

tcpdump -i any -nn -s 0 -w capture.pcap

5. 分析已保存包

tcpdump -r capture.pcap -nn

6. 按协议过滤

tcpdump -i any 'tcp'      # TCP 流量
tcpdump -i any 'udp'      # UDP 流量
tcpdump -i any 'icmp'     # ICMP(ping)

7. 按主机过滤

tcpdump -i any 'host 192.168.1.100'

8. 按端口过滤

tcpdump -i any 'port 80'  # HTTP
tcpdump -i any 'port 22'  # SSH

9. 组合过滤

tcpdump -i any 'host 192.168.1.100 and port 443'
tcpdump -i any 'not port 22 and not port 53'

10. HTTP 请求分析

tcpdump -i any -A 'tcp port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

11. ICMP 抓包

tcpdump -i any 'icmp'

四、过滤表达式语法(BPF)

基础语法

[原语] [逻辑操作符] [原语]...

常用原语类型

1. 协议类型

表达式 说明
tcp 仅 TCP
udp 仅 UDP
icmp ICMP(ping)
ip IPv4
ether 以太网帧

2. 主机过滤

表达式 说明
host 192.168.1.1 双向通信
src host 1.1.1.1 源 IP 过滤
dst host 8.8.8.8 目标 IP 过滤

3. 网络过滤

表达式 说明
net 192.168.1.0/24 子网过滤
src net 10.0.0.0/8 源网络过滤

4. 端口过滤

表达式 说明
port 80 TCP/UDP 80 端口
src port 53 DNS 源端口
portrange 80-8080 端口范围

5. 方向标识

表达式 说明
src 源方向
dst 目标方向
src or dst 双向

6. 数据内容匹配

表达式 说明
tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 HTTP GET 首部
tcp[tcpflags] & tcp-syn != 0 SYN 包

7. 广播/多播

表达式 说明
broadcast ARP 请求
multicast 多播流量

8. 包长度过滤

表达式 说明
greater 100 包长 >100
less 500 包长 <500

逻辑运算符

运算符 优先级
not
and
or

组合示例

# 源 IP 192.168.1.100 且目标端口 443
tcpdump 'src host 192.168.1.100 and dst port 443'

# 抓 HTTP/HTTPS 流量
tcpdump 'port 80 or port 443'

# 抓 DNS 查询
tcpdump 'udp port 53 and dst port 53'

五、实际应用场景

场景 | 命令示例

场景 命令
网页打不开 tcpdump -i any -nn 'host example.com'
检查防火墙 drop 查找请求无响应
分析 DNS 查询 tcpdump -i any -nn 'port 53'
查看广播流量 tcpdump -i any 'broadcast'
抓手机 App 流量 tcpdump -i wlan0 -w app.pcap

六、保存与分析

抓包保存

tcpdump -i any -s 0 -w debug.pcap -c 100

分析工具

工具 描述
Wireshark 图形化分析
tshark 命令行分析
CloudShark 在线分析

七、注意事项

权限要求

sudo tcpdump -i any -nn

性能影响

  • 长时间抓包可能导致系统性能下降
  • 生产环境需谨慎使用

其他注意事项

  1. 使用单引号包裹过滤表达式
  2. 复杂逻辑需用括号明确优先级
  3. -s 0 可捕获完整包(避免数据截断)
  4. 敏感数据抓包后及时清理
  5. BPF 表达式学习建议参考[官方文档]

(注:此版本通过以下优化提升阅读体验)

  1. 采用表格化展示核心参数
  2. 增加代码块高亮和注释说明
  3. 使用场景化表格快速查找
  4. 补充官方文档链接等实用信息
  5. 优化标题层级(# > ## > ###)
  6. 增加数据内容匹配的详细示例
  7. 完善逻辑运算符优先级说明
  8. 补充保存分析的完整工具链说明
正文结束 阅读本文相关话题
相关阅读
评论框
管理员开启登录后评论
评论列表

暂时还没有任何评论,快去发表第一条评论吧~

空白列表