Linux Sniffer如何评估网络带宽
小樊
40
2025-12-23 04:23:51
Linux Sniffer评估网络带宽的实用方法
一、评估思路与工具选择
- 明确目标:是看整机的实时吞吐(接口级)、按连接/进程的分布(谁在吃带宽)、还是端到端可达带宽(链路能力)。
- 工具分层:
- 实时总览与按连接:iftop、nload、bwm-ng、iptraf-ng(适合“此刻有多忙”)。
- 按进程:nethogs(定位到具体进程/PID/用户)。
- 抓包与回溯分析:tcpdump、Wireshark(适合“为什么这么忙/慢”的细粒度诊断)。
- 历史统计:vnstat(长期趋势与报表)。
- 端到端测速(非抓包):iperf3、Speedtest CLI(评估链路可达带宽上限)。
二、快速上手命令与判读要点
- 实时接口吞吐
- nload:按接口分开展示入/出速率与简易图形,适合快速判断“是否跑满”。
- bwm-ng:简洁的总览+条形图,支持 curses2 输出。
- iftop:按主机对/连接显示速率,支持 pcap 过滤,便于聚焦关键流。
- 命令:
sudo iftop -n(加 -n 不做 DNS 反查,减少额外流量与延迟)
- 按进程定位
- nethogs:直接显示进程/PID/用户的带宽占用,定位“哪个进程在打流量”。
- 抓包与回溯分析
- tcpdump:抓取指定流量到文件,后续用 Wireshark 分析吞吐、重传、RTT、窗口等。
- 命令:
sudo tcpdump -i eth0 -w flow.pcap 'tcp or udp'(示例:仅抓取 TCP/UDP)
- 命令:
sudo tcpdump -i any -w capture.pcap -W 10(示例:循环写入 10 个文件,便于分段分析)
- 历史统计
- vnstat:守护进程持续记录,生成日/月报表;也可进实时模式观察当下速率。
- 命令:
vnstat -l -i eth0(实时),vnstat(报表)。
三、用抓包精确计算吞吐
- 步骤
- 抓取样本:
sudo tcpdump -i eth0 -w flow.pcap -s 0 'tcp or udp' -G 10 -W 1(示例:每 10 秒生成一个滚动文件,便于计算窗口速率)。
- 用 Wireshark 打开 pcap,统计 → I/O Graphs:
- 过滤表达式示例:
ip.addr==<对端IP> 或 tcp.port==<端口>。
- 设置 Interval=1 sec,查看 Bits per second 曲线,峰值与均值即瞬时/平均吞吐。
- 如需按方向区分,分别观察 RX/TX 曲线。
- 命令行快速估算(已落盘 pcap):
- 统计总字节数:
capinfos -T flow.pcap(查看“Data Size”)
- 结合抓包时长估算平均速率:
平均速率 ≈ Data Size / 抓包时长
- 判读要点
- 关注重传率、乱序、TCP 窗口大小与RTT,这些往往比“带宽数字”更能解释“慢”的根因。
- 若需按主机/端口聚合,可在 Wireshark 中使用 IO Graphs 的显示过滤器或 tshark 聚合统计。
四、端到端带宽上限测试(补充手段)
- iperf3(推荐)
- 服务端:
iperf3 -s -i 1
- 客户端:
iperf3 -c <服务端IP> -i 1 -t 10 -P 4
-P 4 使用4 条并发流更易打满高带宽链路;加 -u 可做 UDP 测试(观察抖动/丢包)。
- Speedtest CLI(公网可达带宽)
- 安装:
curl -s https://install.speedtest.net/app/cli/install.deb.sh | sudo bash && sudo apt install speedtest
- 运行:
speedtest --server-id <ID>(先用 speedtest --servers 选节点)
- 适用场景
- iperf3 更适合内网/同域链路能力评估;Speedtest CLI 反映到公网节点的端到端能力。
五、实践建议与合规提示
- 采样与过滤:优先用BPF 过滤表达式聚焦目标主机/端口/协议,减少无关流量干扰与性能开销(如
tcpdump -i eth0 'host 1.2.3.4 and port 80')。
- 精度与开销:抓包会带来CPU/内存/磁盘 I/O压力;长时采样建议分片(如
-G 10 -W N)并限制抓包大小(-s 0 抓取完整帧,必要时改为合适 snaplen)。
- 版本与显示优化:保持 tcpdump/Wireshark 为最新版本;在 Wireshark 中精简列、隐藏不必要信息,提升分析效率。
- 合规与授权:抓包涉及通信内容与隐私,务必在获得明确授权的网络与主机上执行,避免违规采集与泄露。