本連載を読むような人なら、インターネットはある種の生命線になっていることでしょう。普段から様々なネットワーク通信ソフトウェアにお世話になっているはずです。ある日突然、通信が遅くなった、何かが負荷をかけているかもしれない、今回はそんな状況を気軽に調べられるRust製のGUIアプリケーション
Rust製の高速なネットワークモニタリングツールであるSniffnet
ネットワークに接続されたコンピューター上のソフトウェアは、日々何らかのマシンと通信を行っていることが一般的です。特にデスクトップマシンなら、ソフトウェアのアップデートやDHCPによるアドレスの確保、arp/
これはコンピューターでの作業中も同じで、何気なくブラウジングしている時にもあるページを開いた途端、バックグラウンドでばばばばーっと通信が始まります。ただコンテンツを表示するだけでなく、広告を表示したり、その広告が動画だったりと想像以上に通信を行っていますし、さらにそのアクセス先は国外にも及んでいます。
SniffnetはRust製のネットワークモニタリングツールです。GUIアプリケーションであるため、デスクトップからも気軽に閲覧できます。何かネットワークが重いなあと思ったタイミングで起動し、トラフィックの様子を眺めてみるというのが、主な使い方です。
具体的には、次の機能を主に備えています。これはバージョン1.
- トラフィック量のリアルタイムなグラフ表示
- 通信先ホストの通信量によるランキング
- 通信プロトコルの通信量によるランキング
- 宛先ホストのポート番号やプロトコルさらには国情報の表示
- 特定の宛先ホストを
「お気に入り」 に追加してフィルタリング - プロトコルや国などでのフィルタリング
- 通信ログのファイルへの保存
- 通信パケット数・
バイト数がしきい値を超えたら通知する機能 - 「お気に入り」
のホストとの通信を開始したら通知する機能 - テーマの切り替え
- 多言語対応
(日本語は未対応)
あくまで簡易的なモニタリングにとどめており、そこまで柔軟にカスタマイズできるわけではありませんが、それ故にUIは初心者にも使いやすくなっています。とりあえず
さっそくインストールしてみましょう。Sniffnetは残念ながらaptリポジトリにもsnapリポジトリにもパッケージは用意されていません。しかしながらプロジェクトのGitHubページでは、debパッケージを配布しているため、それをインストールすれば良いだけです。
SniffnetのリリースページからSniffnet_
」Sniffnet_
」
$ sudo apt install ./Sniffnet_Linux_DEB_amd64.deb $ sniffnet -v sniffnet 1.2.2 $ sniffnet -h Application to comfortably monitor your Internet traffic Usage: sniffnet [OPTIONS] Options: -h, --help Print help -v, --version Print version info (Run without options to start the app)
これだけでインストールは完了です。ちなみに現在のSniffnetはCLIが存在せず、せいぜいバージョンとヘルプを表示できるくらいです。よってSuperキーでDashから
モニタリングを開始してから数秒の間、最低限の情報収集のためのパケットのキャプチャ期間が存在します。少し待つと次のようなトラフィック情報が表示されます。
左上がキャプチャ情報、右上がトラフィックの流量グラフ、左下が対向のネットワークホストごとの通信量ランキング、右下がプロトコルごとの通信量ランキングです。ネットワークホストのランキングは対向ホストのアドレスと流量だけでなく、MaxMind DBを利用したホストの推定場所の国旗を表示しています。左端の星マークをクリックすることで特定のホストを
Inspectタブでは、送受信パケットを宛先ごとにリアルタイムで表示しています。グラフと同じく青色が外向きのパケットで、茶色が内向きのパケットです。
表示するパケットはいくつかの値でフィルタリング可能です。たとえばOverviewタブでお気に入りにしたホストのみを表示することができます。ちなみに右端のダウンロードボタンを押すことで、表示中のログをファイルに落とすことが可能です。これはpcapフォーマットではなく、テキストベースのログとなります。将来的にpcapフォーマットのダウンロードも予定しているようです。
Notificationsタブは通知領域です。ただし初期状態だと何も設定されていません。
通知の条件を設定してみましょう。Notificationsタブか画面右上の設定アイコンを押すと、設定画面が表示されます。設定画面のNotificationsでは、3種類の通知条件を設定できます。
一番上から、次の内容になっています。
- 1秒あたりパケット数が指定した数を超えたら通知
- 1秒あたりのバイト数が指定した値を超えたら通知
- 「お気に入り」
のホストと新しいデータのやり取りを開始したら通知
通知の条件については、これら設定項目の
Sniffnetのテーマは少し渋い色合いですが、もっとファンキーな色合いにも変更可能です。なぜかグラディエーションにも対応しています。このあたりはv1.
説明内容の短さからもわかるように、非常にシンプルな作りになっています。それ故にちょっと確認したい程度であれば何も悩むことなく利用できるため、カスタマイズ性が高いものの複雑な設定を持ったツールを使いこなすことがしんどくなってきた年齢層にとっては、大変ありがたいことでしょう。
CLI向けなら多士済済
ちなみにCLI向けは、昔からたくさん存在します。たとえばifstatやiftop、bmonやiptraf-ngなど様々です。第697回の
今回はせっかくなので、Sniffnetと同じRust製のCLIツールであるbandwhichを紹介しましょう。bandwhichは残念ながらaptからはインストールできませんが、snapからなら比較的新しいバージョンをインストール可能です。
$ sudo snap install bandwhich $ bandwhich -h Usage: bandwhich [OPTIONS] Options: -i, --interface <INTERFACE> The network interface to listen on, eg. eth0 -r, --raw Machine friendlier output -n, --no-resolve Do not attempt to resolve IPs to their hostnames -p, --processes Show processes table only -c, --connections Show connections table only -a, --addresses Show remote addresses table only -t, --total-utilization Show total (cumulative) usages -s, --show-dns Show DNS queries -d, --dns-server <DNS_SERVER> A dns server ip to use instead of the system default -h, --help Print help
bandwhichは起動したら表示するものを切り替えるか
実際にbandwhichを起動してみましょう。bandwhichの場合は、パケットキャプチャのために管理者権限が必要になります。-i INTERFACE
」
$ sudo bandwhich
プロセス名が上手く取れていないようです。これはsnap版の制約です。一応依存関係がないため、/snap/
」
Sniffnetに比べるとフィルタリングやアラートもなく、さらにシンプルなUIとなっています。ちなみにプロジェクトとしては、積極的な貢献者を募集中というステータスのようです。