iftop 是一个类似于 top 的实时流量监控工具,主要用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。
在大多数 Linux 发行版中,可以通过包管理器安装:
sudo apt-get install iftop
sudo yum install epel-release
sudo yum install iftop
# 或者使用CentOS 8+的dnf
sudo dnf install iftop
sudo dnf install iftop
iftop [选项] [参数]
| 选项 | 说明 |
|---|---|
-i |
指定要监控的网卡 |
-n |
不进行主机名解析 |
-N |
不将端口号转换成服务名称 |
-B |
以字节为单位显示流量(默认是比特) |
-p |
混杂模式,监控所有网络流量 |
-P |
显示端口号 |
-F |
显示特定网段的流量 |
-h |
显示帮助信息 |
# 监控eth0网卡
sudo iftop -i eth0
运行后会显示一个实时界面,包含以下信息:
# 显示端口号,不转换服务名称
sudo iftop -P -N
# 只监控192.168.1.0/24网段的流量
sudo iftop -F 192.168.1.0/24
sudo iftop -B
在 iftop 运行界面中,可以使用以下快捷键:
| 按键 | 功能 |
|---|---|
h |
显示帮助 |
n |
切换是否解析主机名 |
s |
显示源主机 |
d |
显示目标主机 |
t |
切换显示格式(单行/两行) |
N |
切换端口解析 |
S |
显示源端口 |
D |
显示目标端口 |
p |
暂停刷新 |
q |
退出iftop |
iftop 界面上会显示三列数值,分别表示:
箭头 ⇒ 和 ⇐ 表示流量的方向。
sudo iftop -n -N -P
这样可以直接显示IP和端口,方便找出占用带宽的源头。
可以编写脚本循环监控多个网卡:
#!/bin/bash
for interface in eth0 eth1 wlan0; do
echo "监控网卡: $interface"
sudo iftop -i $interface -t -s 10
done
# 运行10秒后退出并输出简要信息
sudo iftop -t -s 10 -i eth0 > network_traffic.log
A: 检查网卡名称是否正确,可以使用 ip addr 或 ifconfig 查看可用网卡。
A: iftop 默认监控第一个非回环接口。要监控所有流量,可以使用:
sudo iftop -i any
A: iftop 更侧重于显示具体的连接信息(哪个IP在和哪个IP通信),而 nload 更侧重于显示总体带宽使用情况图表。
-n 选项避免DNS解析延迟