ChatGPT生成(2025年10月26日00:34:39)
- iftop 网络流量监控工具学习指南
- 一、简介
- 二、安装方法
- 三、工作原理
- 四、基本使用方法
- 1. 启动命令
- 五、界面说明
- 说明:
- 六、常用参数与选项
- 七、交互操作键
- 八、过滤功能
- 九、iftop 与其他工具对比
- 十、使用场景
- 十一、总结
iftop 网络流量监控工具学习指南
一、简介
iftop 是 Linux 系统中一个非常常用的 实时网络流量监控工具。
它的作用类似于 top 命令,但监控对象是网络流量而非 CPU 或内存。
iftop 能够显示当前系统中各个 网络连接(IP 对/IP 对之间) 的实时带宽使用情况,帮助用户快速判断:
- 哪些主机(IP 地址)正在与本机通信;
- 每个连接的实时流量(上行 / 下行速率);
- 当前带宽使用的总量;
- 哪些连接占用了主要带宽。
iftop 特别适合在服务器或网络排障场景下使用,用于分析 “是谁在占带宽”。
基本使用方法为:
# 统计指定网卡eth0上的流量
sudo iftop -i eth0
注意:
因为是使用抓包机制实现,在高流量场景下会对机器带来一定的负担:
- CPU 开销:每个数据包都需要经过内核到用户空间的上下文切换
- 内存开销:维护流量统计表和连接状态信息
- 系统调用频繁:持续的数据包捕获和解析
二、安装方法
iftop 在大多数 Linux 发行版中都可以直接安装。
| 系统 | 安装命令 |
|---|---|
| Ubuntu / Debian | sudo apt install iftop |
| CentOS / RHEL | sudo yum install iftop |
| Fedora | sudo dnf install iftop |
| Arch Linux | sudo pacman -S iftop |
注意:
iftop需要 root 权限 才能正常捕获网络数据包。
建议使用sudo iftop启动。
三、工作原理
iftop 并不是从 /proc 文件系统读取统计数据,而是使用 libpcap 库(与 tcpdump 相同)直接捕获经过网卡的数据包。
iftop启动后,会调用libpcap监听指定的网络接口(如 eth0)。- 它实时分析每个数据包的源地址和目的地址。
- 根据采样时间计算出每个连接的流量速率(上行 / 下行)。
- 在终端界面中滚动显示结果。
因此,iftop 属于 抓包式流量监控工具,精确度较高,但也会带来轻微的系统开销。
四、基本使用方法
1. 启动命令
sudo iftop
默认情况下,iftop 会监控系统的第一个网络接口(通常是 eth0 或 ens33)。
如需指定网卡:
sudo iftop -i eth0
五、界面说明
运行 iftop 后,会进入一个动态更新的终端界面。典型显示如下:
10.0.0.5 => 10.0.0.10 2.50Mb 2.30Mb 2.20Mb<= 1.20Mb 1.10Mb 1.00Mb
----------------------------------------------------------------------------------------------
TX: 2.5Mb RX: 1.2Mb TOTAL: 3.7Mb
Peak: 4.0Mb Rates: 2s 10s 40s
说明:
| 区域 | 含义 |
|---|---|
| 左侧 | 本机 IP 地址 |
| 右侧 | 通信对端 IP 地址 |
=> 行 |
表示本机发送(出站流量) |
<= 行 |
表示本机接收(入站流量) |
| 三列速率 | 分别代表过去 2 秒、10 秒、40 秒 的平均速率 |
| 底部统计 | 显示总发送速率、总接收速率、峰值速率等信息 |
六、常用参数与选项
iftop [参数]
| 参数 | 说明 |
|---|---|
-i <interface> |
指定要监听的网络接口(如 eth0) |
-B |
以 字节(Bytes) 而非比特(bits)为单位显示带宽 |
-n |
不进行 DNS 反解析(仅显示 IP 地址,提高性能) |
-N |
显示端口号(如 80, 443) |
-P |
显示完整的主机名 + 端口号 |
-F <filter> |
设置过滤规则(使用 tcpdump 风格) |
-t |
非交互模式输出(适合脚本或日志记录) |
示例:
sudo iftop -i eth0 -B -n -P
含义:
在网卡 eth0 上监听,以字节单位显示速率,不做 DNS 解析,显示端口号。
七、交互操作键
iftop 支持实时交互操作。运行中直接按键即可修改显示内容。
| 按键 | 功能说明 |
|---|---|
h |
显示帮助信息 |
n |
开关主机名解析 |
s |
显示发送流量 |
r |
显示接收流量 |
t |
显示发送 + 接收流量 |
p |
切换显示端口信息 |
b |
切换单位(bit/s 或 byte/s) |
l |
锁定当前显示顺序 |
q |
退出程序 |
八、过滤功能
iftop 支持 tcpdump 风格的 BPF(Berkeley Packet Filter)语法,可用来筛选特定流量。
示例:
-
仅查看与 192.168.1.10 通信的流量:
sudo iftop -i eth0 -f "host 192.168.1.10" -
仅查看 TCP 流量:
sudo iftop -i eth0 -f "tcp" -
仅查看 80 端口(HTTP)相关流量:
sudo iftop -i eth0 -f "port 80"
九、iftop 与其他工具对比
| 工具 | 功能特点 | 数据来源 | 适用场景 |
|---|---|---|---|
iftop |
显示每个连接的实时带宽使用情况 | libpcap(抓包) |
诊断谁在占带宽 |
nload |
显示网卡总体上下行速率 | /proc/net/dev |
观察整体流量趋势 |
ip -s link |
显示接口统计信息 | Netlink | 快速查看接口数据 |
bmon |
多接口带宽可视化图表 | /proc/net/dev + Netlink |
查看多接口汇总流量 |
vnstat |
记录长期流量统计 | /proc/net/dev |
流量历史分析 |
十、使用场景
适合:
- 网络带宽使用异常时排查;
- 分析特定主机或端口的带宽占用;
- 判断服务器是否被大量外部连接占用;
- 实时监控特定接口流量。
不适合:
- 长期统计流量(推荐使用
vnstat); - 抓包分析协议内容(使用
tcpdump或wireshark); - 监控总体速率趋势(使用
nload或bmon)。
十一、总结
| 项目 | 内容 |
|---|---|
| 工具名 | iftop |
| 主要功能 | 实时显示每个连接(IP 对)的带宽使用情况 |
| 数据来源 | libpcap(通过抓包获取数据) |
| 权限要求 | 需要 root 权限 |
| 界面形式 | ncurses 文本界面(动态刷新) |
| 特点 | 精确、直观、适合排障 |
| 安装命令 | sudo apt install iftop |
| 类似工具 | nload, bmon, vnstat, tcpdump |
望我继续为你整理同系列的工具(例如 bmon 或 vnstat)的学习指南?这样你可以拥有一套统一风格的 Linux 网络监控工具文档合集。 |