[网络] [TOOL] iftop: 网络流量监控工具学习指南

ChatGPT生成(2025年10月26日00:34:39)

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 相同)直接捕获经过网卡的数据包。

  1. iftop 启动后,会调用 libpcap 监听指定的网络接口(如 eth0)。
  2. 它实时分析每个数据包的源地址和目的地址。
  3. 根据采样时间计算出每个连接的流量速率(上行 / 下行)。
  4. 在终端界面中滚动显示结果。

因此,iftop 属于 抓包式流量监控工具,精确度较高,但也会带来轻微的系统开销。


四、基本使用方法

1. 启动命令

sudo iftop

默认情况下,iftop 会监控系统的第一个网络接口(通常是 eth0ens33)。

如需指定网卡:

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)语法,可用来筛选特定流量。

示例:

  1. 仅查看与 192.168.1.10 通信的流量:

    sudo iftop -i eth0 -f "host 192.168.1.10"
    
  2. 仅查看 TCP 流量:

    sudo iftop -i eth0 -f "tcp"
    
  3. 仅查看 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);
  • 抓包分析协议内容(使用 tcpdumpwireshark);
  • 监控总体速率趋势(使用 nloadbmon)。

十一、总结

项目 内容
工具名 iftop
主要功能 实时显示每个连接(IP 对)的带宽使用情况
数据来源 libpcap(通过抓包获取数据)
权限要求 需要 root 权限
界面形式 ncurses 文本界面(动态刷新)
特点 精确、直观、适合排障
安装命令 sudo apt install iftop
类似工具 nload, bmon, vnstat, tcpdump
望我继续为你整理同系列的工具(例如 bmonvnstat)的学习指南?这样你可以拥有一套统一风格的 Linux 网络监控工具文档合集。
posted on 2025-10-26 00:38  风惊庭前叶  阅读(62)  评论(0)    收藏  举报