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,否则只统计到容器自身。另外它只能看到本机视角的报文,交换机没有配置镜像口时,无法看到其他主机之间的点对点流量。