Wiresharkのキャプチャフィルタ ~設定方法と注意点~

エンジニアノート

 

Wiresharkでは、フィルタが2種類存在します。ひとつは、表示フィルタであり、以前の記事でご紹介しました。今回は、もうひとつのフィルタである「キャプチャフィルタ」について説明します。
キャプチャフィルタは、条件に合致したパケットのみキャプチャを実施します。

今回の記事を書いている最中にWiresharkのアップデートがありましたので、最新版のVer.3.6.3で検証しました。

キャプチャフィルタの設定

キャプチャフィルタの設定は、[Capture] menu > Options > [Input] で設定します。
下図の赤枠にキャプチャフィルタのパラメータを入力して、キャプチャをスタートします。

Wiresharkキャプチャフィルタ

キャプチャフィルタのパラメータ

キャプチャフィルタのパラメータは、Berkeley Packet Filter(BPF)構文となっています。
BPFは、パケットフィルタリング機構です。多くのパケット解析ツールがこの構文に対応したライブラリを使用しています。
tcpdumpもこの構文を採用していますので、馴染みがある方も多いと思います。

Wiresharkキャプチャフィルタパタラメータ

BPF構文は、1つ以上の「プリミティブ(要素)」で構成されています。プリミティブは、1つ以上の修飾子とその後に続くID文字列または数値のセットから構成されます。

修飾子は、以下の3種類があります。

修飾子の種類 説明
Type ID文字列や数値の意味 ether、host、net、port
なにも指定しない場合はhostが指定されたとみなされる
Dir ID文字列や数値の方向 src、dst
なにも指定しない場合は"src or dst"、つまり双方向で指定たとみなされる
Proto プロトコル名 ether、arp、ip、icmp、tcp、udp

論理演算子を使ってプリミティブを組み合わせて、複数の条件を指定することが可能です。
使える演算子は以下のとおりです。

論理結合 指定方法
AND結合 and (&&)
OR結合 or (||)
NOT結合 not (!)

複雑な条件の設定

キャプチャフィルタは、表示フィルタに比べ表現方法が少ないため、複雑な条件の設定をするためには少し工夫が必要です。実例でよく使う表現を説明します。

宛先MACアドレスが00:00:5e:00:53:01のパケットをフィルタ

ether src host 00:00:5e:00:53:01

この場合、MACアドレスでフィルタする場合のType修飾子は"ether host"となります。
単に"host"と指定した場合は、IPアドレスでの指定となります。

送信元か宛先にポート80番か443番が含まれるパケットをフィルタ

port 80 || port 443

修飾子にDirを指定しない場合は、双方向となります。

ICMパケットをフィルタ

icmp

ポートによる指定ができないアプリケーション層によるフィルタは、Proto修飾子を使用します。

Ping要求とPing応答のパケットをフィルタ

icmp[0] ==  0x08 || icmp[0] == 0x00

複雑な設定を行う場合は、オフセットとデータパターンで設定します。
Ping要求(Echo Request)は、ICMPヘッダのオフセット"O"バイトのパターンが16進数で"08"です。
Ping応答(Echo Reply)は、ICMPヘッダのオフセット"O"バイトのパターンが16進数で"00"です。
16進数を指定する場合は、パターンの先頭に"0x"を指定します。

キャプチャフィルタを使う際の注意点

キャプチャフィルタを使用する一番の目的は、リソースの節約です。
解析するパケットがあらかじめわかっている場合は、無駄なパケットを排除することができます。
また、大量のトラフィックで必要なパケットに限定して調査ができるため、解析作業を高速化できます。

しかしながら、キャプチャフィルタは慎重に設定すべきです。これはWiresharkに限らずパケットキャプチャ製品全般に当てはまります。
トラブルシューティングのような目的でパケットキャプチャを行う場合は、どの通信に原因があるかは特定できない場合が多いです。その場合は、パケットをすべてキャプチャし、そこから表示フィルタで排除していくほうが合理的です。

当社では、パケットキャプチャ製品「SYNESIS」を開発、販売しています。Wiresharkでキャプチャが困難な高速回線、高トラフィックな状況でもロスなくキャプチャが可能です。
パケットキャプチャの手段や方法は、状況に応じて適切に選択、設定することが重要です。

関連記事

Wiresharkべしべからず集

Wiresharkのおすすめ表示設定

Wiresharkの表示フィルタ ~基本操作編~

Wiresharkの表示フィルタ ~複数条件設定編~

Wiresharkのキャプチャフィルタ ~設定方法と注意点~(本記事)