温馨提示×

Ubuntu Sniffer如何进行带宽测试

小樊
32
2025-12-19 21:34:02
栏目: 智能运维

Ubuntu Sniffer带宽测试与监控实操

一、概念澄清与总体思路

  • Sniffer(嗅探器)tcpdump、Wireshark/tshark 的职责是捕获与分析数据包,它们可以告诉你“此刻有多少数据在流动、从哪到哪、什么协议”,但并不直接给出“端到端可用带宽”的数值。
  • 要得到带宽/吞吐量,常用两类方法:
    • 主动测试:在两台主机间跑流量生成与测量工具(如 iperf3),得到链路可达带宽、抖动、丢包等。
    • 被动观测:用嗅探器或接口统计工具观察一段时间内的字节数变化,计算出平均速率(适合定位“谁在占用带宽”和“占了多少”)。

二、主动带宽测试 iperf3(推荐)

  • 场景:测量两台机器(例如 Ubuntu 客户端服务器/对端)之间的TCP/UDP 吞吐
  • 步骤:
    1. 在对端启动服务器
      • 安装:sudo apt-get install iperf3
      • 启动:iperf3 -s
    2. 在 Ubuntu 客户端发起测试(示例为 TCP,持续 30 秒
      • 安装:sudo apt-get install iperf3
      • 命令:iperf3 -c 192.0.2.10 -t 30
      • 关注结果中的 Sender/Receiver 吞吐(Mbits/sec)。
    3. 可选:UDP 测试(带带宽上限与抖动/丢包)
      • 服务端:iperf3 -s
      • 客户端:iperf3 -c 192.0.2.10 -u -b 100M -t 20
      • 关注 Jitter、Lost/Total Datagrams
  • 说明:主动测试能给出链路“上限”与质量指标,是评估带宽最直观的方法。

三、被动观测带宽 iftop nload nethogs bmon vnstat

  • 这类工具不主动发包,适合“此刻谁在吃带宽、接口速率多少、历史用了多少”。
  • 快速上手:
    • iftop(按连接实时速率)
      • 安装:sudo apt-get install iftop
      • 运行:sudo iftop -i eth0
      • 交互:P 显示端口,S/D 聚焦源/目的,B 切换单位。
    • nload(按接口入/出实时曲线)
      • 安装:sudo apt-get install nload
      • 运行:nload eth0(左右键切换接口)
    • nethogs(按进程占用带宽)
      • 安装:sudo apt-get install nethogs
      • 运行:sudo nethogs eth0
    • bmon(接口统计与图形)
      • 安装:sudo apt-get install bmon
      • 运行:bmon
    • vnstat(历史流量统计)
      • 安装:sudo apt-get install vnstat
      • 运行:vnstat;按接口:vnstat -i eth0
  • 适用:快速定位异常连接/进程、观察接口实时速率、查看历史使用趋势。

四、用 tcpdump 估算吞吐的实操步骤

  • 思路:在嗅探端抓取一段时间内的流量,统计总字节数,用“字节数/时间”换算为速率。
  • 示例(估算某接口的入站平均速率,抓取 10 秒):
    1. 捕获
      • sudo tcpdump -i eth0 -w capture.pcap -G 10 -W 1
      • 说明:-G 10 每 10 秒滚动一个文件,-W 1 只保留 1 个文件,便于计算。
    2. 统计
      • 方法 A(精确统计捕获文件):capinfos -T capture.pcap
        • 读取 “Capture duration” 与 “Data size (bytes)”,速率 ≈ Data size / Duration。
      • 方法 B(命令行):
        • tcpdump -r capture.pcap -q -nn | awk ‘{bytes += $NF} END {print “Bytes:”, bytes; system(“date”)}’
        • 速率 ≈ Bytes / 10 秒(按实际抓包时长替换)。
  • 提示:
    • 若只想看某方向/某主机/某端口,加过滤表达式,例如:
      • 仅某主机:sudo tcpdump -i eth0 -w cap.pcap ‘host 192.0.2.10’
      • 仅某端口:sudo tcpdump -i eth0 -w cap.pcap ‘port 80’
    • 该方法得到的是“被嗅探接口上观测到的应用层有效载荷+协议开销”的速率,适合定位与对比,不等同于 iperf3 的端到端极限带宽。

五、结果解读与注意事项

  • 结果解读
    • iperf3:给出端到端吞吐(Mbits/sec)、UDP 的抖动与丢包,适合评估链路能力。
    • iftop/nload/nethogs:反映“此刻/某接口/某进程”的实时速率,便于排查异常占用。
    • tcpdump 估算:验证某段时间真实流量构成与量级,可与 iperf3 结果交叉印证。
  • 合规与安全
    • 嗅探/抓包可能触及隐私与合规要求,务必在自有网络或取得授权的环境中使用,避免对生产业务造成干扰。

0