首页/网络/抓包与流量分析速查/tcpdump 管道与远端联动

tcpdump 管道与远端联动

tcpdump -w - 把 pcap 流写到标准输出,可经 ssh 传回本地直接给 Wireshark/tshark 实时分析;适合无 GUI 的生产机。

管道与远端联动是什么

tcpdump -w - 把 pcap 格式的数据流写到标准输出,配合 ssh 就能把远端机器的抓包结果实时送到本地,直接交给 Wireshark 或 tshark 分析。只有命令行访问、又不想在生产机上落地大文件的场景里,这种方式最省事。

基本信息

适用平台本地与远端均为类 Unix 系统,远端需有抓包权限
语法ssh 远端 "tcpdump -w - 选项 过滤" | wireshark -k -i -
关键选项-U 让每个包尽快写出,保证下游实时性
替代做法先落盘再用 scp 取回,适合大数据量场景
注意-w - 时 tcpdump 不再打印文本摘要

典型使用场景

  • 生产机上只有命令行,需要在本机用图形工具实时分析
  • 不想在生产环境留下大体积抓包文件
  • 边抓边看,抓完即弃,避免磁盘占用
  • 临时排查时按过滤条件只把关心的包传回来
  • 把远端抓包结果直接交给命令行工具做实时统计

常用示例

常用示例
ssh root@10.0.0.9 "tcpdump -i eth0 -nn -U -w - 'tcp port 443'" | wireshark -k -i -   # 实时图形分析
ssh root@10.0.0.9 "tcpdump -i eth0 -nn -s 0 -w - port 80" | tshark -i - -Y 'http.response.code >= 500'   # 实时筛选错误响应
ssh root@10.0.0.9 "tcpdump -i eth0 -nn -w - 'host 10.0.0.20'" > /tmp/peer.pcap   # 落盘留档

各环节要点

环节要点影响
远端抓包-w - 输出到标准输出终端不再打印摘要
传输通道ssh 带宽与稳定性流量大可致丢包
本地接收-k -i - 直接读管道实时看到报文
数据量控制先加过滤表达式瘦身降低链路与内存压力
-U 让数据尽快写出,缺少它时缓冲区会让下游出现明显延迟。
管道里是二进制数据,不要与文本处理命令混用,否则会破坏文件结构。

补充要点

  • 在生产环境使用前先评估传输通道的带宽与稳定性
  • 只把过滤命中的报文传回来,是控制链路压力的关键
  • 需要长期留存时改用先落盘再传输的方式,避免通道中断导致证据丢失
  • 把命令写成脚本并记录参数,便于他人复现同一次抓包
现场排障往往只能单手操作,提前把常用命令保存成短别名能显著提高效率。

易错点

  • ssh 链路带宽不足时抓取高速流量,会因传不动而在远端丢包,最终样本不完整
  • 忘记 -U 导致下游迟迟看不到数据,被误判为「没有流量」
  • 把 -w - 的输出再经过文本管道处理,得到的文件无法被分析工具打开

数据来源与参考

  • man 8 tcpdump(-w - 用法)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌