管道直通是什么用法
远端主机没有图形界面、又不方便先落盘时,可以让采集工具把 pcap 流写到标准输出,经 ssh 管道送到本地,由本地 Wireshark 边收边解析:dumpcap 用 -w - 输出到标准输出,本地以 -k 立即开始抓取、-i - 从标准输入读取。它适合短时间的现场观察,长时间任务改用远端落盘再取回更可靠。
基本信息
| 适用平台 | 远端 Linux / macOS;本地 Wireshark 桌面版 |
|---|---|
| 远端命令 | dumpcap -i <网卡> -f <过滤> -w -,把流写到标准输出 |
| 本地命令 | wireshark -k -i -,-k 立即开始、-i - 读标准输入 |
| 通道限制 | 受 ssh 与网络带宽限制,丢包不可见 |
| 平台差异 | Windows 版对标准输入管道支持有限,跨平台场景建议远端落盘 |
| 替代方案 | 远端直接跑 tshark 出统计,只把结果与关键片段传回 |
典型使用场景
- 临时观察:在跳板机后面的服务器上确认某服务是否在发包,不需要先申请磁盘空间
- 受控环境:只能在远端执行抓包、但需要在本机用 Wireshark 的图形能力逐帧看
- 教学演示:当场把远端流量投到本地界面,直观说明封装与握手过程
- 快速定位:确认问题方向后再决定是否长时间落盘采集
- 设备调试:对只能通过 ssh 访问的嵌入式设备做短时观察
命令与限流
命令与限流
# 远端抓 443 的流量, 流经 ssh 到本地 Wireshark 实时显示
ssh ops@host "dumpcap -i eth0 -f 'tcp port 443' -w -" | wireshark -k -i -
# 加上时长限制, 避免忘记停止
ssh ops@host "dumpcap -i eth0 -f 'tcp port 443' -w - -a duration:60" | wireshark -k -i -
# 更稳的姿势: 先在远端落盘, 再取回分析
ssh ops@host "dumpcap -i eth0 -w /var/tmp/cap.pcapng -a duration:60"
scp ops@host:/var/tmp/cap.pcapng .参数与限制
| 项 | 说明 | 注意 |
|---|---|---|
| -w - | 把采集流写到标准输出 | 远端磁盘不落盘, 但也没有本地副本 |
| -k | Wireshark 启动即开始抓取 | 少了这一步界面停在欢迎页 |
| -i - | 从标准输入读取 | Windows 桌面版支持有限 |
| -f 过滤 | 采集期过滤, 减少通道压力 | 写法与显示过滤不同, 不可混用 |
| -a duration | 按时长自动停止 | 管道断了进程也应设上限 |
| ssh 通道 | 受带宽与延迟限制 | 拥塞时先丢的是抓到的包, 无从得知 |
管道模式下看不到远端采集侧的统计(收到的包数、内核丢弃数),分析结论的完整性没有保障;要出正式结论时以远端落盘文件为准。
ssh 会话断开时管道即终止,采集随之结束。用脚本或跳板机转发时给远端命令加时长参数,避免进程留在远端持续抓包。