首页/系统/Linux 运维命令速查/iftop 实时带宽监控(按连接)
网络命令82 条

iftop 实时带宽监控(按连接)

以「连接对」为单位看实时带宽(哪两个地址在刷流量、跑什么端口),排查带宽占用第一步。

Linux 运维命令速查系统更新于 2026-10-13

iftop 是什么

iftop 基于 libpcap 抓包,把流量按「主机对(会话)」聚合并实时显示带宽,界面上每一行是一条会话的对端地址与端口。它回答的是「此刻哪两个地址在刷流量」。同类工具有明确分工:nethogs 按进程统计、iptraf-ng 按协议与端口统计、ss -s 给的是连接数而不是带宽。

基本信息

适用平台Linux(依赖 libpcap;Debian/Ubuntu 系需 apt install iftop)
命令语法iftop [选项]
常用选项-i 指定接口 -n 不解析主机名 -N 不解析端口 -P 显示端口 -B 以字节显示 -f 过滤表达式 -t 文本模式
权限说明需要 root 或 CAP_NET_RAW 抓包权限;容器要 --net=host 并授予 NET_RAW
界面含义顶部刻度条是速率量程;2s/10s/40s 三列为不同时间窗的滑动平均速率

典型使用场景

  • 出口带宽被占满:先确认是哪个接口、哪条会话在跑,再决定限流还是查业务
  • 异常外联排查:本机持续连向陌生公网地址且有大流量,需要进一步核实
  • 验证限速效果:调整策略前后对比同一会话的速率变化
  • 备份与同步窗口:观察 rsync、scp 是否跑满出口带宽影响其他业务
  • 容器网络排查:配合 --net=host 观察宿主机接口上的实际流量

常用示例

常用示例
iftop -i eth0                                        # 指定接口,注意区分 bond 与物理网卡
iftop -nN -i eth0                                    # 不解析主机名与端口,显示更快
iftop -P -nN -i eth0                                 # 额外显示端口号
iftop -i eth0 -f 'tcp port 443'                      # 只看 443 相关会话
iftop -i eth0 -f 'host 10.0.0.9'                     # 只看与某台主机的流量
timeout 30 iftop -t -nN -i eth0 > /tmp/iftop.txt     # 文本模式落盘,事后分析

界面字段读法

项含义正常与异常
顶部刻度条当前显示的速率量程,随峰值自动缩放量程突然变大说明出现突发流量
=> 与 <=方向:=> 本机发出,<= 对方发来据此区分上传与下载,判断是拉取还是推送
2s/10s/40s三个时间窗的滑动平均速率2s 与 40s 相差大说明流量阵发
cum该会话累计传输量长期高位累积说明持续大量传输
peak该会话出现过的峰值速率与业务峰值对账,识别异常突发
端口(-P)会话两端的端口号443 与 80 多为 Web,非常规高端口值得留意
顶部三行的 2/10/40 秒是平滑均值,瞬时尖峰会被人为压低。接口名先用 ip -br link 认准:bond0、物理网卡与 VLAN 子接口的统计并不相同,选错接口会得出错误结论。
iftop 需要抓包权限,普通用户直接报错;容器里必须 --net=host 才能看到宿主机流量,且要显式授予 CAP_NET_RAW,否则只统计到容器自身。另外它只能看到本机视角的报文,交换机没有配置镜像口时,无法看到其他主机之间的点对点流量。

易错点

  • 数值包含链路层 ACK、重传等全部流量,与业务口径对不上很正常,不能当计费依据
  • 没有 root 或 CAP_NET_RAW 会直接失败;容器缺 --net=host 时看到的是空列表或只有自身流量
  • -f 的过滤表达式是 pcap-filter 语法,端口要写成 'tcp port 443' 这类形式,直接写端口号不生效
  • 加密流量(HTTPS)只能看到地址、端口与速率,看不到 URL 与内容
  • 排序是按当前选中时间窗的速率,观察突发流量前先确认排序维度,否则会误判谁是流量大户

数据来源与参考

  • man 8 iftop(iftop 官方手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌