Ubuntu Sniffer 远程监控实现指南
一、方案总览
- 在目标 Ubuntu 上用抓包工具(如 tcpdump)抓取并导出流量,在本地或集中端进行分析与展示。
- 常用路径:
- 实时远程查看:SSH 隧道转发到本地 Wireshark(推荐,图形化强)。
- 实时图形化:SSH 远程执行 tcpdump,本地 EtherApe 直接读取。
- 离线分析:远程保存 pcap 文件,拷回本地用 Wireshark 打开。
- 持续自动化:远程按时间/数量轮转抓包,集中收集与归档。
二、前置条件与权限
- 目标主机抓包需 root 或具备 CAP_NET_RAW/CAP_NET_ADMIN 能力;远程登录建议使用 SSH 密钥 并限制 sudo 到必要命令。
- 合规要求:仅在自有网络或取得明确授权的主机上抓包,避免违反隐私与法律。
三、方法一 SSH 隧道 + Wireshark 实时分析(推荐)
- 在 Ubuntu 安装 Wireshark(可选,本地分析端):sudo apt-get install wireshark
- 建立 SSH 本地端口转发,将远程网卡流量经 SSH 隧道送到本地 localhost:2002:
- ssh -f -N -L 2002:localhost:2002 user@remote-host
- 在本地 Wireshark 中捕获接口选择 “Loopback: lo”,在捕获过滤器输入:
- 在远程主机启动抓包并转发到隧道端口(需 root):
- sudo tcpdump -i any -U -s 0 -w - ‘not port 22’ | nc -l -p 2002
- 说明:
- -U 使输出为“无缓冲”,-s 0 抓取完整包,-w - 写到 stdout,nc 将流量经 SSH 隧道送到本地 Wireshark。
- 过滤掉 port 22 可避免 SSH 自身流量干扰;如需更细粒度,可在 tcpdump 表达式里加 host/port 条件。
- 若远程主机无法直连外网或仅允许跳板机访问,可在跳板机上再转发一次端口。上述流程基于 tcpdump 的远程抓包与 Wireshark 远程捕获能力实现。
四、方法二 远程 tcpdump + 本地 EtherApe 图形化
- 在本地安装 EtherApe:sudo apt-get install etherape
- 通过 SSH 直接在远程执行 tcpdump,把 pcap 流实时送入本地 EtherApe:
- ssh remote-host sudo tcpdump -n -w - ‘not port 22’ | etherape -m ip -r -
- 说明:
- -n 不做 DNS 解析,-w - 输出到 stdout,etherape -r - 从标准输入读取 pcap 流并实时渲染主机/协议拓扑与流量粗细。
- 适合需要“看图识流量”的场景;如需长期运行,建议配合 screen/tmux 或 systemd 服务托管。EtherApe 支持从活动网络或文件读取,并可用 tcpdump -n -w 生成文件后再离线打开。
五、方法三 离线抓包与自动化轮转
- 远程按时间/数量自动轮转抓包(便于事后分析):
- 每 10 秒生成一个 pcap,最多保留 10 个文件:
- sudo tcpdump -i any -w capture_%Y%m%d_%H%M%S.pcap -G 10 -W 10
- 将 pcap 文件安全拷回本地(示例):
- scp user@remote-host:/path/capture_*.pcap /local/analysis/
- 本地用 Wireshark 打开分析;如需批量统计,可结合 tshark(Wireshark 命令行):
- tshark -r capture_20251225_103000.pcap -q -z io,stat,1
- 自动化与归档建议:
- 使用 cron 定时执行抓包脚本并同步到对象存储/集中服务器。
- 为抓包目录设置磁盘配额与日志轮转,避免磁盘被占满。上述 tcpdump 写文件、读取与分析流程可直接用于离线场景。