Wiresharkのキャプチャフィルタについて

Wiresharkにはそもそもフィルタが2種類あることをご存じだろうか?
一つはみなさんご存じかと思うが、表示フィルタであり取得したパケットキャプチャについて、表示されるパケットをフィルタリングするものになります。
そして、もう一つが今回紹介させていただくキャプチャフィルタになります。

表示フィルタとの違いについて

表示フィルタが取得したパケットキャプチャの中から、該当するパケットのみを表示する機能であるのに対し、キャプチャフィルタは取得するパケットをフィルタリングする機能になります。
そのため、表示フィルタのみを設定したパケットキャプチャに対し、キャプチャフィルタを設定したパケットキャプチャはファイルサイズを小さくすることが可能です。

なぜあまり知られていないのか

簡潔に言ってしまうと、扱いが難しいからになります。
何も考えずにキャプチャフィルタを設定してしまうと、実は取得が必要であったパケットまで取りこぼす可能性があるからになります。

特に障害解析などの場合、問題となるパケットを探すところからになりますので、キャプチャフィルタを設定しないことが多いです。
ただし、特定のサーバとの通信のみに問題がある場合に該当サーバとの通信のみを取得するようにキャプチャフィルタを設定するなど、一部有効な場合があります。

パケットキャプチャのファイルサイズが肥大化すると、そもそもファイルを開くことができなくなる場合ものありますので、そういったことが想定される場合はフィルタの内容を検討したうえで適用するとファイルサイズを小さく収めることができたりします。

どうやって設定するのか?

Wiresharkのメニューにあるキャプチャオプション(黒い2重丸みたいなアイコン)から、キャプチャインターフェースの設定画面を呼び出し、設定画面上の「選択したインターフェースのキャプチャフィルタ」の部分に設定します。
ただし構文が表示フィルタのものとは異なり、Linuxtcpdumpコマンドなどと同じ構文になります。

以下にいくつかサンプルを記載します。

8080番ポートを利用したパケットをキャプチャする。

port 8080

送信元もしくは送信先が192.168.100.1であるパケットをキャプチャする。

host 192.168.100,1

送信元もしくは送信先が192.168.100.1かつ、8080番ポートを利用したパケットをキャプチャする。

host 192.168.100.1 and port 8080

80番ポートもしくは443番ポートを利用したパケットをキャプチャする。

port 80 or port 443

送信元もしくは送信先が192.168.100.1かつ、80番ポートもしくは443番ポートを利用したパケットをキャプチャする。

host 192.168.100.1 and (port 80 or port 443)

3389番ポート以外のパケットをキャプチャする。

port not 3389

以上になります。