Wiresharkを使ってみよう
Wiresharkの持つさまざまな機能
Wiresharkには、パケット単位の処理に加えてさまざまな有用な機能が存在しています。
例えば、Wiresharkの「Statistics」メニューには監視結果に対するさまざまな統計情報を表示させるためのメニューが存在します。「Statistics」メニューの「Summary」では、監視期間中のコンピュータの平均転送レートが表示されます。また、「Protocol Hierarchy」では、コンピュータに到着したパケットをプロトコルごとに分類してその割合が表示されます。
Wiresharkは統計情報だけでなく、経過時間に対する変化もグラフとして表示する機能を持っています。例えば「Statistics」メニューの「TCP Stream Graph」では、Round Trip Time「RTT」やシーケンス番号など、TCPの各種情報の変化がグラフとして表示されます。プロトコルの挙動を解析する場合、これらの機能は大きな助けとなります。
また、Wiresharkの持つ非常に役立つ機能の1つとしてTCP Streamと言う機能があります。これは、複数のパケットを結合し、ユーザーが使用しているアプリケーションプログラムが送受信するデータの形に整形して表示する機能です。
例えば、図3はWebブラウザを用いてwww.thinkit.co.jpのWebページを閲覧したときの通信を監視したものです。パケット単位で細かいデータの破片を見るよりも、GETリクエストの送信からhtmlの受信までの様子が分かりやすく表示されます。
TCP Streamを使用する場合は、表示させたいデータの(一部となる)パケットを右クリックで選択し、表示されたメニューの中から「Follow TCP Stream」を選択します。
tcpdumpとの連携
最後に、Wiresharkとtcpdumpとの連携について触れておきます。WiresharkはGUIベースのツールであるため、直感的に操作を行うことはできますが、スクリプトなどとの連携は不得手となります。
例えば、毎日(あるいは、毎週、毎月)ある時刻に一定時間だけネットワーク上を流れるパケットを監視するような場合は、あらかじめスクリプトを記述しておいてスケジューラなどで自動的に実行させる方が楽で効率的ですが、そのような利用方法はWiresharkでは難しいです。
しかし、Wiresharkが出力するログの書式はtcpdumpと互換性があります(正確には、-wオプションを指定して出力したログ)。つまり、Wiresharkはtcpdumpが出力したログファイルを読み込むことができます。そのため、例えば、定時に行っているパケットの監視はtcpdump(とスクリプト)を用いて、出力結果をファイルとして保存しておき、解析はそのファイルをWiresharkで読み込んで行うなどパケットの監視と解析を独立して行うことで、作業の効率化、負担の軽減が期待できます。
コマンドラインベースのツールとGUIベースのツールは、それぞれに利点と欠点が存在しています。パケット解析を行う場合は、これらのツールを条件によってうまく使い分けることで、効率的に解析を進めていくことができるでしょう。