当前位置: 首页 > news >正文

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

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

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

  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 网络监控工具文档合集。