0%

iftop 使用

iftop 是一个带宽展示和监控的工具,提供图形化直观展示、并且提供针对不同网卡、地址段等的过滤筛选功能。

安装

可以使用 apt 或者 yum 等命令直接安装:

1
apt-get install iftop
1
yum install iftop

使用

界面说明

直接执行 iftop 就可以看当前的带宽使用情况。界面由几个部分组成:

  • 最上方是流量单位的刻度尺。下方连接的流量也会以条状图的形式直观展示出来,最长的长条消耗最多的带宽资源,刻度尺的数值也会适应性地变化,默认的单位 bit,可以通过 B 选项调整单位为 Byte。
  • 中间位置是主要板块,展示有网络交互的连接,从左到右分别显示
    • 主机名称(如果使用 P 选项也会显示使用的端口)
    • 对方的主机名或者 ip 地址,通过 <= or => 来标识流量方向
    • 最后三列分别是过去 2s、10s、40s 的流量,默认单位
  • 最下方是一个收发统计,TX 是发送统计,RX 是接收流量统计,TOTAL 则是总和。统计维度是:
    • cum:监控后到目前的总计流量
    • peak:监控后出现的峰值流量
    • rates 最后也有三列 2s、10s、40s 针对收发总和的速度统计

iftopP

常用选项

  • -B 默认流量单位 bit 切换为 Byte
  • -P 显示端口信息、连接协议信息等
  • -i 指定网卡监控,比如 iftop -i eth0
  • -F 指定网段监控(针对 ipv4),格式是 net/mask,比如 iftop -F 10.0.0.0/255.0.0.0 可以监控分析所有 10.* 网段的流量。使用 ipv6 地址时候用 -G 选项代替 -F
  • -f 指定流量包的过滤,具体语法下面详细说明

BPF 过滤规则

iftop 使用的过滤规则是 BPF(Berkeley Packet Filter),使用过 Wireshark 抓包的应该会感到熟悉。这套规则这里有一篇文档说明得很详细,下面简单的说一下:

1
[[proto] <direction>] <type> <id>

同时可以使用 andornot 以及括号来组合多个基本表达式,其中:

  • id 是筛选条件的值,以下其他部分只是对这个值的定义
  • type 筛选类型,常用的有 hostnetportportrange,分别标识主机名、网络号、端口、端口区间
  • direction 筛选的流量方向,一般使用 srcdst 来区分,默认不加的话就是 src or dst 不区分方向
  • proto 协议名称,比如 ipip6arptcp 等,如果不加的话默认所有都是合法的

更多的可选项,需要查阅文档,不一一枚举。这里举个例子,限定端口为 8080 的流量:

1
iftop -f 'port 8080'

限定端口为 8080 的接收的流量:

1
iftop -f 'dst port 8080'

限定为端口为 8080 接受的 TCP 流量:

1
iftop -f 'tcp dst port 8080'

交互式操作

在 iftop 流量监控面板可以想 top 一样执行一些过滤、显示切换等操作,在 h 或者 ? 进入帮助:
iftoph
外部的命令选项比如显示端口、过滤规则、域名 ip 切换之类的都可以通过交互操作完成。常用的是排序和冻结。

谢谢支持!