深色模式
带宽观测 iftop/nload
摘要:机器网卡打满却不知道被谁占了?
iftop看「每条连接/对端」的实时速率,nload看「整卡进出」的总带宽曲线。两个配合最好用。
适用环境
bash
which iftop || sudo apt install iftop
which nload || sudo apt install nload
# 都需要 root 才能抓接口流量1
2
3
2
3
操作步骤
1. nload:看整卡带宽曲线(最直观)
bash
sudo nload
# 上下分屏:Incoming / Outgoing;左右可切换网卡(按 < > 或上下键选)1
2
2
顶部显示当前速率与峰值,适合一眼判断「卡是不是满了」。
2. iftop:看每条连接的速率
bash
sudo iftop -i eth0 -n -P
# -i 网卡 -n 不解析主机名 -P 显示端口1
2
2
界面三列:<= 进、=> 出、<=> 双向,右侧带进度条,按 h 看帮助。
3. 只看某个对端/端口
bash
sudo iftop -i eth0 -n -P -f "port 443" # 只看 443
sudo iftop -i eth0 -n -f "host 10.0.0.50" # 只看某 IP1
2
2
4. 找出 Top 流量来源
bash
# iftop 中按 T 切换累计发送/接收总量排序,直观看谁最费流量1
验证
bash
# 制造流量,观察能否被观测到
dd if=/dev/zero bs=1M count=50 2>/dev/null | curl -T - http://speedtest.example.com/up &
# 同时看 nload 总带宽上扬、iftop 出现对应对端的大速率行1
2
3
2
3
nload 曲线明显上扬且 iftop 能定位到具体对端 IP:端口,即观测有效。
常见坑
WARNING
iftop/nload 看的是接口层流量,不含已卸载(offload)前的精确计数;虚拟网卡、容器 veth 的流量要对应到正确接口才看得到。先看 ip -br link 确认接口名再指定 -i。
DANGER
iftop 默认会做反向 DNS 解析(-n 关闭),在 DNS 慢的环境会卡且暴露对端域名。生产排错一律加 -n;另外抓流量属敏感操作,注意合规。