温馨提示×

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:按接口分开展示入/出速率与简易图形,适合快速判断“是否跑满”。
      • 命令:nload(或 nload eth0
    • bwm-ng:简洁的总览+条形图,支持 curses2 输出。
      • 命令:bwm-ng -o curses2
    • iftop:按主机对/连接显示速率,支持 pcap 过滤,便于聚焦关键流。
      • 命令:sudo iftop -n(加 -n 不做 DNS 反查,减少额外流量与延迟)
  • 按进程定位
    • nethogs:直接显示进程/PID/用户的带宽占用,定位“哪个进程在打流量”。
      • 命令:sudo nethogs eth0
  • 抓包与回溯分析
    • 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(报表)。

三、用抓包精确计算吞吐

  • 步骤
    1. 抓取样本:sudo tcpdump -i eth0 -w flow.pcap -s 0 'tcp or udp' -G 10 -W 1(示例:每 10 秒生成一个滚动文件,便于计算窗口速率)。
    2. 用 Wireshark 打开 pcap,统计 → I/O Graphs:
      • 过滤表达式示例:ip.addr==<对端IP>tcp.port==<端口>
      • 设置 Interval=1 sec,查看 Bits per second 曲线,峰值与均值即瞬时/平均吞吐。
      • 如需按方向区分,分别观察 RX/TX 曲线。
    3. 命令行快速估算(已落盘 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 中精简列、隐藏不必要信息,提升分析效率。
  • 合规与授权:抓包涉及通信内容隐私,务必在获得明确授权的网络与主机上执行,避免违规采集与泄露。

0