iftop 是一款用于实时监控网络流量的命令行工具,它类似查看系统资源的 top 命令,可以让你直观地看到服务器上每个网络连接的带宽使用情况。
核心用途与特点
- 实时监控:动态显示每个连接的瞬时、平均流量。
- 按主机/连接排序:默认将流量最大的主机或连接排在最前,便于快速定位带宽消耗源。
- 可视界面:提供条形图、方向箭头等,流量情况一目了然。
安装 iftop
在大多数 Linux 发行版上,都可以通过包管理器轻松安装:
- Ubuntu/Debian:
sudo apt-get install iftop - CentOS/RHEL:
sudo yum install iftop
注:在较新的 CentOS/RHEL 上,可能需要先启用 EPEL 仓库再安装。
基本使用与界面解读
最简单的启动方式是直接运行 sudo iftop 命令,它会监控默认的网络接口(通常是 eth0 或 ens33)。
启动后的界面主要分为三个部分:
| 界面区域 | 关键信息说明 |
|---|---|
| 顶部刻度尺 | 条形图流量的比例尺,用于衡量下方各连接流量条的相对大小。 |
| 中部连接列表 | 核心区域,每一行代表一个活动连接,按流量排序。主要看三部分: 1. 左侧条形图:直观表示该连接的实时流量大小。 2. 中间主机信息:显示本地与远程主机(IP/主机名)。 => 表示发送,<= 表示接收。3. 右侧三列数字:分别代表过去 2秒、10秒、40秒 的平均流量速率。 |
| 底部统计行 | TX:发送总流量;RX:接收总流量;TOTAL:总流量。 rates:与顶部三列对应,是全局的 2s/10s/40s 平均速率。 peak:流量峰值;cum:从启动 iftop 至今的累计流量。 |
常用命令行选项
启动 iftop 时可以附加一些常用选项,帮助你更聚焦地查看信息。
| 选项 | 说明与用途 |
|---|---|
-i <网卡> | 指定监控的网卡,如 iftop -i eth1。 |
-n | 不进行主机名解析(DNS 查询),直接显示 IP,能加快显示速度。 |
-N | 不将端口号转换为服务名称(如 80 不显示为 http),直接显示端口号。 |
-P | 同时显示主机和端口信息,这是排查问题非常有用的选项。 |
-F <网段> | 仅显示指定本地 IPv4 网段的进出流量,如 iftop -F 192.168.1.0/24。 |
-B | 以 Byte(字节) 为单位显示流量,默认是 bit(比特)。1 Byte = 8 bits。 |
运行时交互命令
在 iftop 运行界面中,按下键盘上的特定键可以切换显示模式,这些功能在等来源中均有提及。下表列出最实用的几个:
| 按键 | 功能 |
|---|---|
h | 切换显示/隐藏帮助界面。 |
n | 切换显示主机名或 IP 地址。 |
P | 暂停/继续 刷新显示。暂停时方便仔细查看当前快照。 |
q | 退出 iftop。 |
1/2/3 | 根据右侧流量数据列(2s, 10s, 40s 平均)进行排序。 |
< / > | 根据左侧(源)或右侧(目标)的 IP/主机名排序。 |
实用场景案例
这里是一个结合了选项和交互命令的典型排查步骤:
-
初步定位:假设服务器网卡
eth0带宽异常跑满。你首先以详细模式启动 iftop:bashsudo iftop -i eth0 -n -P-i eth0:监控指定网卡。-n:直接显示 IP,避免 DNS 查询延迟。-P:显示端口,能知道是哪个应用的连接。
-
分析界面:启动后,流量最大的连接会排在最前面。观察中间列表,看是哪个远程 IP 和端口占用了最多带宽,以及方向是发送(
=>)还是接收(<=)。 -
进一步诊断:记下可疑的 IP 和端口号。例如,发现
10.0.0.5:5432这个连接流量巨大。可以打开另一个终端,使用netstat或ss命令查找使用该端口的进程:bashsudo netstat -tunap | grep 5432 # 或 sudo ss -tunap | grep 5432命令输出会显示是哪个进程(PID 和程序名)建立了这个连接,从而找到根源。
重要注意事项
- 权限要求:
iftop需要监听网卡数据包,因此通常需要sudo提权或以 root 用户身份运行。 - 工具定位:
iftop主要擅长实时流量展示和连接级别的排序。如果需要进行长期的流量统计、更深入的数据包分析或生成报告,可以将其作为快速排查的第一步,然后根据需要使用vnstat、nload或tcpdump等其他工具。
希望这个简单的指南能帮你快速上手 iftop!如果你在监控特定服务(比如 Web 服务器或数据库)的流量时遇到了具体问题
