対照的な2つのネットワークトラフィック監視ツール:NetHogsとIPTraf
私がLinuxディストリビューションを新規インストールした際に必ず行う作業は、Network MonitorアプレットをGNOMEパネルに追加しておくことだ。それはブルーのインジケータの点滅により、ネットワークトラフィックの有無を簡単に確認できるからである。ただし、帯域幅を専有しているアプリケーションは何かや、どのネットワークインタフェースが使われているかといった、より詳細なネットワーク情報を取得したいのであれば、 NetHogs や IPTraf などの専用ツールを利用しなくてはならない。このうちNetHogsは非常に独特な機能を有すツールとして作成されており、もう一方のIPTrafはサーバおよびホームユースの双方に適した汎用ツールとして作られている。
NetHogs
多くの帯域幅監視ツールにて提示されるのがIPアドレスやプロトコル別のネットワーク使用率であるのに対して、NetHogsによるネットワークの監視情報としては、帯域幅のアプリケーション別使用率が示されるようになっている。つまりこのツールを使えば、RSSアグリゲータ、Webブラウザ、ソフトウェアアップデータはもとより、IRCやIMクライアントなどが消費する帯域幅すらも個別に把握できるのだ。
NetHogsは、多くのディストリビューションのソフトウェアリポジトリに収録されているが、あるいはtarボールをダウンロードしてソースからインストールすることもできる。インストール後の起動手順としては、ターミナルを開いてrootユーザ権限を取得し、nethogs
と入力すればいい。これによりネットワークを介して送信および受信されたデータ量が、topコマンドの情報画面とよく似た形式にて、アプリケーション名とそのPID別に表示されるはずだ。この情報はリアルタイムで更新されるので、新規のアプリケーションを起動させるごとにNetHogsを再起動させる必要はない。
NetHogsのデフォルト更新頻度は1秒とされているが、この間隔は-d
コマンドオプションを用いることで任意の値に変更できる。同様にKBps(kilobytes per second)がデフォルトの単位表示である転送速度についても変更は可能だ。この場合はnethogsの実行中にmキーを押し下げると、データ転送速度の表示単位が、KBps、Bps、MBpsの間でサイクリックに切り替わるようになっている。
IPTraf
このようにNetHogsは単一機能のみに絞り込んだ簡易ツールという作りとなっているが、それとは対照的な多機能型のネットワーク監視ツールも、グラフィカルおよびコマンドライン双方の操作方式を含めて多数存在している。そうした中でも、簡単な操作にてネットワークインタフェース別の帯域幅使用率に対する統計情報を取得可能なツールが欲しいのであれば、IPTrafの使用を検討すべきだろう。
IPTrafはncursesベースのユーティリティであるが、装備されている機能はここで一覧するのが不可能なくらい多岐にわたっているので、その詳細については同ツールのAboutページ を参照していただきたい。このページには、その他の有用な情報も掲載されている。
IPTrafも、先のNetHogsと同様に多くのディストリビューションにてソフトウェアリポジトリへの収録が行われているのでyumやapt-getを用いたインストールができるが、必要であればソースのtarボールも公開されている。またIPTrafによるネットワークの監視にスーパーユーザ権限が必要な点も、NetHogsと同様だ。
コマンドオプションを何も指定することなくIPTrafを起動すると、メニュー操作形式のインタフェースが表示される。ここでのインタフェース操作は、矢印キーで上下の移動、Enterキーでメニュー項目の選択を行うという方式だ。各メニュー項目には名称そのものの機能が割り当てられており、例えばIPトラフィックを監視したければIP traffic monitorを選択すればよく、また特定インタフェースにおけるトラフィック情報を取得したければ、一覧されるインタフェースカードの中から目的のものを選べばいい。
IPTrafの動作設定はConfigureメニューにて行う。使用可能な設定オプションについては多少分かりにくいかもしれないが、その場合はオンライン公開されているIPTrafのユーザマニュアルを参照すれば、個々のオプションの有す機能が簡単に確認できるはずだ。その中には、パケット中の各IPアドレスに対応するホストをIPTrafに特定させるReverse DNS Lookup関連のオプションも存在し、ログ機能の有効化、すべてのトラフィックをキャプチャする無制限モードへの移行なども行える。ここでのオプション切り替えも、矢印キーでの上下移動とEnterキーでの選択にて行えばいい。例えばこの方式でログ機能を有効化すると、画面右側のCurrent Settingsにおける設定内容が、ログ設定の変更に応じてOffからOnに変更されるはずだ。その後IPトラフィックの監視および実行対象となるインタフェースを選択すると、ログの格納ファイルの指定が求められるが、デフォルト設定下でのログファイルの格納先は/var/log/iptrafディレクトリである。ここでのログファイルは、下記のエントリにて構成されている(項目間の配置はこの順序で固定)。
Time stamp: month, day, time, year Protocol: TCP, UDP, etc. Interface: eth0, eth1, localhost, etc. Packet size in bytes Addresses: The for and from keywords denote whether the address is a destination or a source address. It can be either IP or MAC address.
IPTrafの特長の1つは、IPトラフィックの監視時に取得される各種情報に混じって、キャプチャした各TCPパケットのフラグ情報も確認できるようになっている点だ。こうして得られるフラグを調べると、例えば接続を確立したのはどちらの側なのか、接続はいつクローズないしリセットされたかといった詳細な情報を特定することができる。
このようにIPTrafは、IPトラフィックの簡易的な監視ツールとして利用できるのと同時に、ネットワークトラフィックをTCP/UDPポート別やパケットサイズ順に並び替えて、その統計情報を解析するといったより高度な使用法にも耐えられるのである。こうして得られる情報を活用すれば、手元のマシンにて送受信されるネットワークトラフィックの詳細を把握したいという、たいていの要望はかなえられるだろう。
まとめ
データ転送に関する情報をネットワークインタフェース別やプロトコル別に解析するツールは多数存在しているが、そのすべてが操作性に優れているとは限らない。そうした中でもIPTrafは、最新バージョンのリリースが3年前に行われたきりであるにもかかわらず、現在もこの分野における人気ツールにランクインし続けている。対するNetHogsの魅力は、同種ツールが見落としている機能を装備しているの1点に尽きるだろう。それは帯域幅の使用率をアプリケーション別に集計するという機能であり、これは非常に有益な情報と成り得るにもかかわらず、ネットワーク監視という分野においては何故か無視され続けてきたものなのだ。
Shashank Sharmaは、フリー/オープンソース系ソフトウェアの初心者向け記事の執筆およびLinux.comフォーラムボードの管理を行なっており、Apress社から刊行されている『Beginning Fedora』の共著者でもある。