iftop:按连接看实时带宽
更新时间:2026-09-19。nload 回答「网卡总流量多大」,iftop 回答「具体是哪些连接/主机在收发、各占多少带宽」,是定位异常外连、带宽被谁打满的首选交互工具。
一、基本用法
bash
sudo iftop # 默认监听第一块网卡
sudo iftop -i eth0 # 指定网卡
sudo iftop -n # 不做 DNS 反解(更快、更干净)
sudo iftop -N # 端口显示数字不解析服务名
sudo iftop -F 10.0.0.0/24 # 只统计该网段流量
sudo iftop -f "udp port 53"# 用 bpf 过滤(等同 tcpdump 过滤表达式)界面分三列速率,分别是 2s、10s、40s 滑动平均,=> 表示本机发出、<= 表示接收;底部有 TX(发)/RX(收)/TOTAL 的累计与峰值。
二、交互按键
| 键 | 作用 |
|---|---|
n | 切换 DNS 解析(看 IP 还是主机名) |
s/d | 是否显示源/目的主机 |
S/D | 显示源/目的端口 |
t | 切换显示方式(双向/只发/只收,循环) |
p | 显示端口 |
</> | 按源/目的排序 |
1/2/3 | 按 2s/10s/40s 列排序 |
P | 暂停 |
q | 退出 |
排障常按 -nN 启动后按 p 看端口、t 切到只看某个方向,快速锁定「哪台远端、哪个端口在持续传大数据」。
三、典型场景
- 带宽突然被打满:iftop 直接看顶部速率最高的主机对,若是外发到陌生公网 IP,结合 ss 看是哪个进程的连接,警惕数据外传/被入侵。
- 区分内外部流量:
-F限定内网网段,判断是东西向备份/同步还是南北向上行。 - 验证限流/整形:做了 tc 限速后,用 iftop 看该连接是否被压到目标速率。
- 大对象下载/同步定位:定位是哪个对端在拉日志、拖备份导致拥塞。
四、与同类工具分工
| 工具 | 维度 |
|---|---|
| iftop | 按主机对/连接实时看带宽 |
| nload | 只看网卡总速率的大图 |
| nethogs | 按进程看带宽(哪个 PID 占用) |
| ss/lsof | 看连接状态、重传、缓冲、进程对应关系 |
组合打法:iftop 发现异常远端 IP → nethogs/ss 找到对应进程 → 必要时 tcpdump 抓内容。
坑
- 不做权限处理:抓包类需要 root(Linux)/管理员(Windows 用 Npcap),普通用户看不到数据。
- 开 DNS 反解导致界面卡顿、显示一堆无关主机名,排障建议
-n。 - 只看瞬时 2s 列被毛刺误导,结合 10s/40s 平均判断持续性。
- iftop 看的是「主机对」,看不到进程名时要换 nethogs,不要误判归属。
总结
iftop 以 2s/10s/40s 滑动平均按主机对实时展示每条连接的上下行带宽与累计流量,用 -i 指定网卡、-nN 关闭解析、-F/-f 过滤网段和协议,交互键可显示端口和切换排序方向,是定位带宽被谁打满和异常外连的第一手工具;它回答「哪些连接在传」,再配合按进程的 nethogs、看连接状态的 ss 和抓内容的 tcpdump 形成完整排障链路。