Windows のクライアントツールで有名な Wireshark のコマンドライン版について、IT 系のサイトで触れていたのでメモ。
Wireshark はパケットキャプチャソフトで、Windows 上の PC でネットワークの疎通確認などによく使います。
Windows のクライアントツールでは、取得したパケットの流れをグラフ化して接続やタイムアウトの原因を調べられるなど便利なソフトです。
今回はこちらのソフトウエアを紹介していきます。
Wiresharkの使い方
サイトにはコマンドラインの基本的な使い方やオプションを使った応用が書かれていました。
内容的にはこれだけでも十分ですが、その中でパケットのフィルタ方式に「WireShark互換」を使って説明していたので、「Libpcap形式」に置き換えて備忘録にしたいと思います。
「Libpcap形式」は tcpdump の時と同じ形式なので、Linux 上などで応用がしやすいのです。
ちなみに、Wireshark のコマンドライン版も Linux 用があるので、そちらで統一したい人は「WireShark互換」がいいのかも。
Wiresharkの実行
Wireshark をインストールした Windows PC のコマンドプロンプトで、下記のサンプルを実行するとパケットの流れを確認することができます。
まずは、tshark コマンドのヘルプから。サンプルで使用するものだけピックアップしました。
1 2 3 4 5 6 7 8 | $ tshark --help -a <autostop cond.> ... duration:NUM - stop after NUM seconds filesize:NUM - stop this file after NUM KB files:NUM - stop after NUM files -i <interface> name or idx of interface (def: first non-loopback) -f <capture filter> packet filter in libpcap filter syntax -D print list of interfaces and exit -w <outfile|-> set the output filename (or '-' for stdout) |
目的の NIC が何番目になるかは、tshark -D で確認ができます。
1 2 3 | $ tshark -D 1. \Device\NPF_GenericDialupAdapter (Adapter for generic dialup and VPN capture) 2. \Device\NPF_{XXXXXXXXXX} (Intel(R) PRO/1000 MT Network Connection) |
2番目のネットワークインタフェース
2 番目のネットワークインタフェース(NIC)に対するパケットの流れを画面に出力します。
Ctrl + c を押すまでパケットのキャプチャは続きます。
1 | $ tshark -i 2 |
2 番目のネットワークインタフェース(NIC)に対するパケットの流れを画面に出力するのと同時に、test.log ファイルにパケットの内容を書き込みます。
また、-a オプションでキャプチャの停止について細かく設定ができます。下記の例は 60 秒後に停止。
1 2 | $ tshark -i 2 -S -w test.log $ tshark -i 2 -S -w test.log -a duration:60 |
フィルタの方法
次にフィルタについてですが、Libpcap 形式でコマンドを書くと以下の通り。
WireShark 互換の場合はサイトのサンプルを参考にして下さい。
http(80番ポート)のみをキャプチャする時は -f オプションを使ってポート指定します。
1 | $ tshark -i 2 -f "port http" |
さらにパケットの送信元または送信先の IP アドレスが XXX.XXX.XXX.XXX のものをキャプチャします。
対象の IP アドレスを送信元アドレスに限定する場合は host を src host にすれば可能です。
1 | $ tshark -i 2 -f "port http and host XXX.XXX.XXX.XXX" |