「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
Wireshark活用法3回目は「表示フィルタ」の活用法をお伝えします。
第1回「〜長時間モニタリングとデータ解析について〜」ではネットワークの問題を解決するために大量にパケットを集める方法をお伝えしました。
その中で大量に集めたパケットを絞り込んで表示する表示フィルタについて簡単に説明しました。
今回はその「表示フィルタ」の設定方法と使い方を詳しくお伝えします。
なお、使用するWireshark はVersion 3.0.2です。本稿執筆時点(2019年06月30日)で最新バージョンとなっています。
表示フィルタとはキャプチャしたパケットを絞り込んで表示する機能です。
例えば「tcp」と指定するとTCPプロトコルだけのパケットを表示してくれます。
フィルタツールバーはフィルタを入力する場所です。
入力して右側の⇒ボタンを押すとフィルタの条件に合うパケットのみが表示されます。
さらに便利な機能として、一度使ったフィルタを後から使う機能が2つ用意されています。
1つはドロップダウンリストです。バー右側の ボタンを押すと過去に入力したフィルタが表示されます。(図2参照)
もう1つはフィルタボタンです。 ボタンを押すとフィルタに名前を付けてツールバーに表示させることができますので指定してOKを押します。(図3参照)
図1. フィルタツールバー
図2. ドロップダウンリスト
図3. フィルタボタン
ここからはフィルタ条件の書き方を以下の6種類紹介します。
1,2,3は特定の相手との通信に絞り込む方法です。マウス操作のみの指定も可能です。
4と5はパケットの中身の一部を指定して絞り込む方法です。
例えば画面に表示されている値が現場のセンサーと異なるとき、表示の値がセンサーから送られたものなのか否かの切り分けに使えます。
6はデータサイズを指定して絞り込む方法です。時々異常なサイズのデータが送られてくるときは規定のサイズより長いパケットに絞り込むことで異常なパケットの調査をすることができます。
7はフィルタ条件を複数組み合わせるときに使う演算子の一覧を示します。適切な条件が増えるほど表示を絞り込むことができます。
以下に書き方を説明します。
様々なプロトコルのパケットから必要なプロトコルのパケットだけを見る設定です。
「Wireshark活用法その2〜専用プロトコルを表示させる〜」でご紹介した専用プロトコルもここへ指定して絞り込みできます。
フィルタ対象 | 書式 | 設定例 | 表示されるパケット |
---|---|---|---|
TCP | tcp | tcp | TCPプロトコルのみ |
UDP | udp | udp | UDPプロトコルのみ |
SOFTECH | softech | softech | softechプロトコルのみ |
表1. プロトコルフィルタの書式・設定例
キャプチャされたパケットに含まれるプロトコル一覧からフィルタを設定する方法です。
下図のようにメニュー[統計(S)]→[プロトコル階層]を選択し、キャプチャされたパケットに含まれるプロトコル一覧画面を表示します。
このなかからプロトコルを選択してフィルタに設定します。
図4. プロトコル一覧でフィルタ指定(キャプチャされたプロトコル一覧から選択)
特定IPアドレスのパケットに絞り込む設定です。
フィルタ対象 | 書式 | 設定例 | 表示されるパケット |
---|---|---|---|
送信元 | ip.src | ip.src == 192.168.11.5 | 送信元が192.168.11.5のみ |
宛先 | ip.dst | ip.dst == 192.168.11.1 | 宛先が192.168.11.1のみ |
宛先 (ネットワーク単位) |
ip.dst | ip.dst ip.src == 192.168.11.0/24 | 192.168.11.0のネットワークのみ。具体的には192.168.11.1〜192.168.11.254。 |
表2. IPアドレスフィルタの書式・設定例
下図のように「Source」や「Destination」列のIPアドレスをマウス右クリックで指定してフィルタに設定できます。キーボード操作は不要です。
図5. IPアドレスをクリックしてフィルタ指定
特定ポートのパケットに絞り込む設定です。
フィルタ対象 | 書式 | 設定例 | 表示されるパケット |
---|---|---|---|
TCPのパケット | tcp.port | tcp.port==44444 | TCPの送信元または宛先のポートが44444のみ |
UDPのパケット | udp.port | udp.port==54351 | UDPの送信元または宛先のポートが54351のみ |
TCPで送信元のポート番号 | tcp.dstport | tcp.dstport==44444 | TCPの送信元ポートが44444のみ |
UDPで宛先のポート番号 | udp.srcport | udp.srcport==54351 | UDPで宛先のポートが54351のみ |
表3. ポート番号フィルタの書式・設定例
下図のようにポート番号を右クリックしてフィルタ設定できます。
図6. IPアドレスをクリックしてフィルタ指定
16進数でバイト列を指定して絞り込む設定です。
検索対象をフレーム全体、アプリケーションデータのみ、と指定できますので絞り込む精度を上げることができます。
なお、一致しても表示されない注意点がありますので下表に示します。
書式 | 設定例 | 表示されるパケット |
---|---|---|
frame contains HH (HHは16進数) |
frame contains 0a.7a | フレーム全体のどこかに[0a.7a]のバイト列が含まれているパケット |
frame[m:n] contains HH m=起点位置(0起算) n=長さ(バイト) |
frame[0:5] contains 0a.7a | フレームの先頭から6バイトまでの間に[0a.7a] のバイト列が含まれているパケット |
data[m-n] contains HH m=起点位置(0起算) n=終点位置(0起算) |
data[0-9] contains 0a.0b.0c | Dataフィールドの先頭から10バイトまでの間に[0a.0b.0c]の並びのバイト列が含まれているパケット |
表4. バイト列フィルタの書式・設定例
注意:[]へ指定した分のデータがパケットにないとフィルタ対象外になります。
「data[0-9] contains 0a.0b.0c」ならdataフィールドが10バイト未満のパケットは一致するバイト列が含まれていても表示されません。
文字や文字列を指定して絞り込むための設定です。
探したい文字列データがわかっているときやドメイン名の検索などに使えます。
大文字・小文字は区別されません。
書式 | 設定例 | 表示されるパケット |
---|---|---|
frame matches *** | frame matches SFT | フレームのどこかに“SFT”が含まれているパケット。 |
data matches *** | data matches SFT | Dataフィールドのどこかに“SFT”が含まれているパケット。 |
tcp matches *** | data matches SFT | TCPプロトコルのパケットを対象に “SFT”が含まれているパケット。 |
data[m:n] matches *** m=起点位置(0起算) n=長さ(バイト) |
data[45:10] matches SFT | Dataフィールドの46バイトから10バイト(56バイト)の間に“SFT”が含まれているパケット。 |
data[m-n] matches *** m=起点位置(0起算) n=終点位置(0起算) |
data[45-55] matches SFT | Dataフィールドの46バイトから56バイトに“SFT”が含まれているフレーム。 |
表5. 文字列フィルタの書式・設定例
フレームやデータフィールドのデータ長を条件に絞り込みできます。
書式 | 設定例 | 設定例の説明 |
---|---|---|
len(frame) | len(frame) >= 101 | フレーム長が101バイト以上のフレーム |
len(data) | !(len(data) == 47) | データフィールドが47バイトのフレーム以外 |
表6. データ長フィルタの書式・設定例
フィルタを組み合わせる、値を比較するのに演算子が使えます。
1種類の演算子には2つの表記法がありますがどちらも同じ意味です。
論理演算子(複数フィルタを組み合わせて指定できる) | ||
---|---|---|
比較演算子(値の比較に使う) | ||
表7. 演算子一覧
今回は集めたパケットから解析に必要なパケットだけを表示させる表示フィルタの使い方をまとめました。
IPアドレスやポート番号で特定の相手とのやり取りを見るだけではなく、バイト列や文字列でデータを検索する使い方も出来るため、データがわかっている時や流れているデータを推測して検索することで再現性の低い不適合現象を調べるときに活用できます。
是非活用して頂きたいと思います。
なお、本レポートを書くにあたり普段使わないメニューや操作をしてマウス操作だけでフィルタを設定できるのは新しい発見でした。Wiresharkは効率よく使うために仕様をよく考えて作られているなと感じました。
今後も便利な機能を発見したら紹介したいと思います。
(N.K.)
関連ページへのリンク
関連するソフテックだより