当前位置: 首页 > news >正文

tcpdump 与 Wireshark 网络抓包实战:远程抓包、过滤表达式、流量分析

tcpdump 与 Wireshark 网络抓包实战:远程抓包、过滤表达式、流量分析

网络抓包是排查网络故障、分析协议行为、定位性能瓶颈的核心技能。tcpdump 是 Linux 下轻量的命令行抓包工具,Wireshark 则是功能强大的图形化协议分析利器。两者结合使用——在服务器上用 tcpdump 抓包,在本地用 Wireshark 分析——能覆盖绝大多数网络问题的排查场景。本文将系统讲解从基础抓包到高级流量分析的完整流程。


环境要求

本教程适用于以下环境:

  • 服务器:Linux(Ubuntu 20.04+ / Debian 11+ / CentOS 7+)
  • 本地:Windows / macOS / Linux(需安装 Wireshark)
  • 工具:tcpdump(服务端)、Wireshark 4.x(本地)

推荐使用雨云服务器 rainyun-com作为实验环境,注册填优惠码2026off领 5 折优惠券。推荐机型:1 核 2GB Linux 云服务器,运行 tcpdump 完全足够,适合网络抓包学习与日常运维使用。


核心概念

数据包捕获原理

tcpdump 基于 libpcap 库,通过将网卡设置为混杂模式(Promiscuous Mode),捕获经过该网卡的所有数据帧。捕获的数据以 PCAP 格式保存,Wireshark 可直接读取该格式进行可视化分析。

BPF 过滤器

Berkeley Packet Filter(BPF)是 tcpdump/Wireshark 的过滤语言,分为两层:

  • 内核层 BPF:在内核层面过滤,性能高,tcpdump-f参数使用
  • 应用层显示过滤器:Wireshark 专有,语法更丰富,在应用层过滤

抓包文件格式

格式扩展名说明
PCAP.pcap最通用格式,tcpdump 默认
PCAPng.pcapng新一代格式,支持多接口、注释
ERF.erfEndace 专有格式

配置步骤

第一步:安装 tcpdump

# Ubuntu/Debiansudoaptupdate&&sudoaptinstall-ytcpdump# CentOS/RHELsudoyuminstall-ytcpdump# 验证安装tcpdump--version

第二步:基本抓包命令

# 查看可用网络接口sudotcpdump-D# 在 eth0 上抓包,显示详细内容,限制 100 个包sudotcpdump-ieth0-v-c100# 抓包并保存到文件(不解析主机名和端口,速度更快)sudotcpdump-ieth0-nn-w/tmp/capture.pcap# 抓包同时显示内容(调试用)sudotcpdump-ieth0-nn-v-w/tmp/capture.pcap# 指定抓包文件大小(每 100MB 自动切割)sudotcpdump-ieth0-nn-C100-w/tmp/capture_%Y%m%d_%H%M%S.pcap

第三步:BPF 过滤表达式详解

# 只抓 HTTP 流量(80 端口)sudotcpdump-ieth0-nnport80# 抓指定 IP 的流量sudotcpdump-ieth0-nnhost192.168.1.100# 抓指定 IP 和指定端口的组合sudotcpdump-ieth0-nnhost192.168.1.100 and port443# 抓 TCP SYN 包(分析连接建立)sudotcpdump-ieth0-nn'tcp[tcpflags] & tcp-syn != 0'# 抓 TCP RST 包(排查连接重置)sudotcpdump-ieth0-nn'tcp[tcpflags] & tcp-rst != 0'# 抓大于 1000 字节的包sudotcpdump-ieth0-nn'greater 1000'# 排除 SSH 流量(避免抓包自身操作产生干扰)sudotcpdump-ieth0-nnnot port22# 抓 ICMP 包sudotcpdump-ieth0-nnicmp# 抓 DNS 查询sudotcpdump-ieth0-nnport53# 抓特定网段的流量sudotcpdump-ieth0-nnnet10.0.0.0/24# 复合条件:抓来自 10.0.0.1 到 8.8.8.8 的 UDP 流量sudotcpdump-ieth0-nn'src host 10.0.0.1 and dst host 8.8.8.8 and udp'

第四步:远程抓包并实时在 Wireshark 中分析

这是生产环境中最常用的工作流:在远程服务器上实时抓包,通过 SSH 管道传输到本地 Wireshark。

方法一:SSH 管道实时分析

# macOS/Linux 本地执行sshuser@your-server"sudo tcpdump -i eth0 -nn -U -w - not port 22"|wireshark-k-i-# Windows(需要安装 Wireshark 并配置 PATH)# 在 PowerShell 中执行:sshuser@your-server"sudo tcpdump -i eth0 -nn -U -w - not port 22"|"C:\Program Files\Wireshark\Wireshark.exe"-k-i-

参数说明:

  • -U:packet-buffered 模式,每抓到一个包立即输出,保证实时性
  • -w -:输出到标准输出(stdout)
  • Wireshark-k:立即开始捕获
  • Wireshark-i -:从标准输入读取

方法二:抓包后下载分析

# 服务器端抓包 60 秒sudotimeout60tcpdump-ieth0-nn-w/tmp/capture.pcap not port22# 下载到本地scpuser@your-server:/tmp/capture.pcap ~/Desktop/# 本地用 Wireshark 打开wireshark ~/Desktop/capture.pcap

实战示例

场景一:分析 HTTP 请求响应时延

# 抓取 HTTP 流量,含时间戳sudotcpdump-ieth0-nn-ttttport80-w/tmp/http.pcap# 用 tcpdump 快速查看 HTTP 请求头(ASCII 模式)sudotcpdump-ieth0-nn-Aport80|grep-E"GET|POST|HTTP|Host:"

在 Wireshark 中分析:

  1. 打开http.pcap
  2. 菜单 → 统计 → HTTP → 请求
  3. 右键任意 HTTP 流 → 追踪 → TCP 流,查看完整对话
  4. 统计 → 服务响应时间 → HTTP,分析各接口延迟

场景二:排查 TCP 连接异常重置

# 专门抓取 RST 包sudotcpdump-ieth0-nn'tcp[tcpflags] & tcp-rst != 0'-w/tmp/rst.pcap# 实时显示 RST 连接信息sudotcpdump-ieth0-nn'tcp[tcpflags] & tcp-rst != 0'|\awk'{print $3, "->", $5, $6}'

Wireshark 显示过滤器(在顶部过滤栏输入):

# 过滤 RST 包 tcp.flags.reset == 1 # 过滤 TCP 重传 tcp.analysis.retransmission # 过滤延迟超过 100ms 的 ACK tcp.analysis.ack_rtt > 0.1 # 过滤 HTTP 错误响应 http.response.code >= 400

场景三:DNS 解析故障排查

# 抓取 DNS 流量sudotcpdump-ieth0-nnport53-w/tmp/dns.pcap# 实时显示 DNS 查询和响应sudotcpdump-ieth0-nnport53|\grep-oP'(?<=A\? )[^ ]+|(?<=A )[0-9.]+'

Wireshark 中分析 DNS:

  • 过滤器:dns
  • 统计 → DNS,查看各域名解析时延
  • 检查dns.flags.rcode != 0的失败查询

场景四:统计流量 Top N

# 安装 ngrep 辅助分析sudoaptinstall-yngrep# 用 tcpdump + awk 统计各 IP 流量sudotcpdump-ieth0-nn-q|\awk'{print $3}'|\cut-d. -f1-4|\sort|uniq-c|sort-rn|head-20

常见问题

Q:tcpdump 提示 “Permission denied” 无法抓包?

A:需要 root 权限或为用户添加cap_net_raw能力:

# 方法一:使用 sudosudotcpdump-ieth0# 方法二:给 tcpdump 添加 capability(不推荐生产环境)sudosetcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

Q:抓包文件太大,如何分割?

# 按文件大小分割(每 100MB 一个文件)sudotcpdump-ieth0-nn-C100-w/tmp/cap.pcap# 按时间分割(每 300 秒一个文件)sudotcpdump-ieth0-nn-G300-w'/tmp/cap_%Y%m%d_%H%M%S.pcap'

Q:Wireshark 如何解密 HTTPS/TLS 流量?

A:需要服务器的 TLS 会话密钥文件(SSLKEYLOGFILE)。在应用侧设置环境变量SSLKEYLOGFILE=/tmp/tls.log后,Wireshark → 编辑 → 首选项 → Protocols → TLS → 设置密钥日志文件路径。

Q:抓包对服务器性能影响大吗?

A:使用 BPF 过滤表达式可以大幅降低开销。生产环境建议:加-nn避免 DNS 解析、加精确过滤条件、用-C限制文件大小、高流量时使用-s 64只抓包头。

Q:tcpdump 能抓 lo 回环接口的流量吗?

A:可以。使用sudo tcpdump -i lo即可抓取本机进程间通信(如应用访问本地数据库的流量)。


tcpdump 和 Wireshark 的组合是每个运维和开发工程师工具箱中不可或缺的利器。熟练掌握 BPF 过滤表达式和 Wireshark 分析技巧,能让你在遇到复杂网络问题时快速定位根因。

http://www.gsyq.cn/news/1489236.html

相关文章:

  • g3800,g3810,ip2700,g5080,g1800,ts3470,TS8380,ts6480报错5B00,P07,E08,5b02,1704,1700,5b04废墨垫清零,亲测有用。
  • 83万人缺口+31%薪资涨幅:2026高考志愿填报,金融数据赛道到底怎么选?
  • WaveTools终极指南:如何轻松解锁鸣潮120帧并优化游戏体验
  • C# + Modbus TCP + 西门子S7-1200:1000点位工业数据采集系统稳定运行12个月总结
  • Outline 自托管团队知识库/Wiki 搭建教程(Notion 替代方案)
  • 职场工作总结appAI能力比拼哪个好?2026实测多款对比后结果超出多数人预期
  • 从Notebook到生产:机器学习模型落地的七道生死关
  • 终极Windows 11系统优化指南:如何用Win11Debloat免费打造纯净高效系统
  • Plain Craft Launcher 2:高效实用的Minecraft启动器深度解析与实战指南
  • CompressO:3分钟学会如何将大文件压缩到极致,释放90%存储空间!
  • 同一个 AI,为什么到你项目里就开始自作主张——CLAUDE.md 到底该写什么
  • 2026年厦门二手专用车/特种车推荐榜:二手环卫洒水车、扫路车、垃圾车、高空作业车厂家选购指南 - 品牌发掘
  • 错过标讯、筛选太累?2026招投标团队如何摆脱无效搜索
  • 我用了半年只留下这1个,2026职场视频总结效率准确率胜出工具真心太香了
  • 基于NXP多PMIC的Zynq UltraScale+ MPSoC高可靠电源与功能安全设计
  • 京东天猫苏宁商品数据抓取工具包+京东评论情感打分脚本(含Scrapy/Requests双实现、词典规则分析、多平台适配)
  • 026 文件搜索高级技巧:正则表达式深度使用、多行模式、文件类型过滤与上下文控制
  • 律师拜访客户整理视频2026年5款提升视频内容整理效率与准确率工具,省下90人工核对时间
  • 百度网盘macOS版终极加速指南:免费解锁全速下载体验
  • 从Eclipse到IDEA:iObjects Java组件在不同IDE下的环境配置差异与实战技巧
  • WarcraftHelper:魔兽争霸终极优化指南 - 解锁地图限制、宽屏支持与性能提升
  • 刚跑完2026一季度区域客户拜访 测了十多款视频号内容总结工具终见产品胜出
  • 告别双系统!保姆级教程:在Windows上用WSL2+PyCharm配置CUDA深度学习环境(含镜像源加速)
  • 2026内衣模杯/胸垫/文胸/无缝胸围实力厂家排行榜:东莞市昌鸿服装辅料有限公司为何稳居行业前列 - 变量人生001
  • 27考研资料|免费全套|电子版
  • 欧盟商标转让服务机构盘点:核心维度客观对比分析 - 互联网科技品牌测评
  • Zotero-Style:让你的文献管理变得简单高效又美观
  • i.MX 8M Mini到8M Nano硬件兼容性设计实战指南
  • 2026年 3,3-亚戊基丁内酰胺厂家最新推荐榜单:高纯度合成与工业应用的核心优势深度解析 - 品牌发掘
  • 2026成都二手房装修公司权威指南:严选“零增项”与“环保标杆”十大实力公司 - 推荐官