Unix-like OSユーザならば、topコマンドにはいつもお世話になっているというかたが多いのではないでしょうか。この「いろんなTop系コマンドを使ってみる」シリーズでは、topに名前を借りたいろいろなコマンドを紹介しています。

前回の記事では、ホストの死活監視を行なうsntopコマンドを紹介しました。このコマンドを使うと、あらかじめ設定ファイルに登録してあるホストマシンの生死状況を一度に確認できます。

シリーズ五回めの本記事では、ホストのネットワーク通信状況を監視するiftopコマンドを紹介します。本コマンドは、ネットワークインターフェイスを流れるパケットをリアルタイムにキャプチャして、通信相手のホストごと、あるいはポート番号ごとの帯域幅使用状況(= 通信速度)を表示してくれるツールです。

Google検索してみてわかったのですが、このiftopコマンドはtop系コマンドの中でもかなりメジャーなようですね。いろいろなところで取り上げられています。たとえば、以下に挙げる三つの記事で紹介されています。

こうなると、あらためて紹介する必要はないような気がしますが、上に挙げた記事はいずれもLinux向けの紹介記事となっています。ここではFreeBSD向けということで、やはり紹介しておきたいと思います。とはいっても、インストール方法が少し違うだけで、コマンドの使い方はおそらく共通なのですけれどもね😉

まず、以下のコマンドを実行してパッケージをインストールします。

pkg install iftop

インストールが終わったらコマンドを起動してみましょう。

: 本コマンドはネットワークパケットのキャプチャを行ないますので、/dev/bpfへアクセスできるユーザで起動してください。つまり、root権限で起動する必要があります。

注2: 以下の例ではIPアドレスからのホスト名逆引きを行わない(-n)、またポート番号からのサービス名逆引きを行わない(-N)ようにオプションを付加して起動しています。

iftop -nN

コマンドを起動すると、通信しているソースとデスティネーションアドレスの組ごとに、送信および受信に使用している帯域幅(通信速度)が表示されます(下図)。ひと組の通信あたり、送受信それぞれ一行ずつの計二行で表示されていることがわかりますね。画面に入りきらない部分は、jおよびkキーで上下にスクロールして確認できます。

本画面はかなり盛りだくさんですので、ひとつずつ表示内容を見ていきたいと思います。

FreeBSD - iftop - メイン

画面の最上部には、通信速度を示す目盛が表示されています。この目盛の用途については後ほど説明します。

目盛の下部には、ホストの現在の通信状況がソースとデスティネーションの組ごとに表示されます。左からソースアドレス、通信の向き(送信あるいは受信)、デスティネーションアドレス、および通信速度(過去2秒間、過去10秒間、および過去40秒間の平均の三項目)となっています。また、それぞれの行にはその行の通信速度を示すバーがオーバーレイ表示されます。最上部の目盛は、このバーグラフの値を読み取るために用います。

個別の通信状況の下には、ホストの現在の通信をすべて合計した使用帯域幅情報が表示されます。表示内容は左から、コマンド起動から現在までの累積通信量、これまでの最大使用帯域幅(ピークレート)、および平均使用帯域幅(2秒間、10秒間、および40秒間の平均)となっています。

通信速度はいずれもビット毎秒(bps, bits per second)で表示されていることに注意してください。これをバイト毎秒(Bps, bytes per second)表示にしたい場合は、コマンド起動時に-Bオプションを付加します。

次は主なキーバインドを紹介します。

まず、ポート番号の表示・非表示の切り替えです。(下図ではソースおよびデスティネーションポートを両方とも表示。)

FreeBSD - iftop -  ポート番号表示

次に、IPアドレスの表示・非表示の切り替えです。(下図ではソースおよびデスティネーションアドレスを両方とも非表示。)

FreeBSD - iftop - アドレス非表示.

今度は、ソースとデスティネーションの組の表示切り替えです。デフォルトでは、ソースとデスティネーションの組ごとに送受信それぞれ一行の計二行で表示します。tキーで本表示を切り替えられます。キーを押下するごとに、送受信をまとめて一行表示、送信のみ表示の一行表示、受信のみ表示の一行表示、およびデフォルトの二行表示を切り替えられます。

下図では送受信をまとめて一行に表示しています。

FreeeBSD - iftop - SD組一行表示.

その他にも以下のようなキーバインドがあります。詳しくは、hあるいは?で表示されるキーバインド一覧を参照してください。

以上、本記事ではホストのネットワーク通信状況を一覧表示できるiftopコマンドを紹介しました。

参考文献

  1. iftop: display bandwidth usage on an interface, http://www.ex-parrot.com/~pdw/iftop/
  2. iftopコマンドの使い方, https://qiita.com/hana_shin/items/bbf8e2f705d0237874b3
  3. 便利ツール(3)iftopを試してみた, http://techblog.clara.jp/2015/02/iftop/
  4. Linux - iftop コマンドでネットワークトラフィックの監視!, https://www.mk-mode.com/octopress/2017/07/18/linux-check-network-traffic-by-iftop/