今回は、Wiresharkをインストールするとデフォルトでインストールされる「tshark」コマンドについて解説します。
tsharkはWindows版のtcpdumpコマンドと思っていただいて構いません。
Windows上でパケットキャプチャをCLIで取るためのコマンドになります。
また、GUIでパケットキャプチャを取るのがWiresharkになります。
Windowsサーバを新規導入するときには、操作性・設定が簡単なWiresharkすなわち「tshark」を事前にインストールしておくことを強くおススメします。
tsharkコマンド利用時の特徴
パケットキャプチャを取得するケースとして事象が夜中だったり、いつ事象が発生するか?わからないというケースがあります。
このようなケースの時に、tsharkコマンドを使用して
・パケットキャプチャのファイル保管場所を指定する
・空き容量から逆算してパケットキャプチャの容量を制限する
・パケットキャプチャをファイル分割してローテーションする
という設定を行い「サーバへ負荷軽減」、「ディスク容量の心配」、「目視での監視(人の張り付き)が不要」となり、安心・安全にパケットキャプチャを取ることができるようになります。
WiresharkはGUIでの設定となり、パケットキャプチャを取る負荷も高くなります。
また、上記のような細かな設定や制限を行うことができません。
その為、長時間パケットキャプチャを取るのに向いていないので、tsharkコマンドでパケットキャプチャを取ると細かい設定が行えるので非常に便利です。
Windowsで「tshark」コマンド使い方
1.ネットワークインターフェース(NIC)の確認
パケットキャプチャを取得したい箇所、すなわちLANケーブルが接続されていて、通信している物理ポートの「番号」を確認します。
例えば
仮想サーバ(Windowsサーバ)だとネットワークインターフェースを複数設定することが簡単にできます。
どのネットワークインターフェース(物理ポートの「番号」)で通信しているパケットを取りたいかを確認します。
1-1.実際に通信している物理ポートの「ネットワーク接続名」を確認
「コントールパネル」を起動して「ネットワークとインターネット」→「ネットワークと共有センター」→「アダプターの設定の変更」へアクセスして、実際に通信している「ネットワーク接続名」を確認します。
- この端末で通信している(パケットキャプチャを取得したい)「ネットワーク接続名」は「イーサネット」と確認できます。
1-2.通信している物理ポートの「ネットワーク接続名」の「番号」を確認
コマンドプロンプトを起動して以下のコマンドを実行して「ネットワーク接続名」の「番号」を確認します。
cd "C:\Program Files\Wireshark"
- tsharkコマンドのパスが通っていないので、Wiresharkをインストールしたディレクトリに移動してからコマンド実行してください。
※デフォルトは上記パスにインストールされます
tshark.exe -D
- 上記、「1-1.」で確認した「ネットワーク接続名」が「イーサネット」の番号は「7」と確認できます。
2.「tshark」コマンドでパケットキャプチャを取得
上記、「1.」でネットワークインターフェース(NIC)を確認してからパケットキャプチャを取ります。
2-1.「ネットワーク接続名」の「番号」を指定してパケットキャプチャを取得
tshark.exe -i 7
- 「ネットワーク接続名」が「イーサネット」で通信するパケットのキャプチャが取れます。
2-2.パケットキャプチャの終了(tsharkコマンド停止)
「Ctrl + C」キー押すとtsharkコマンドの実行を停止します。
良く利用する「tshark」のオプションとサンプル紹介
cd "C:\Program Files\Wireshark"
tshark.exe -D
tshark.exe -i [インターフェース番号]
1.コマンドプロンプト(画面)への表示とファイル保存を同時に行う場合
tshark.exe -i 6 -P -w D:\output1.pcapng
オプション | 説明 |
-P | コマンドプロンプトにパケットキャプチャの情報を表示させたい場合に使用します。 例 「-w」オプションを使用すとコマンドプロンプト内にパケットキャプチャ情報が表示されないので、表示させたい時に使用します。 |
-w <ファイル名.pcapng> | 保存したいパスを指定してファイルに保存する。 例 D:\output1.pcapng 拡張子を「.pcapng」とするとキャプチャ取得後にファイルをダブルクリックするとWiresharkが起動してパケットキャプチャをツールで閲覧することができます。 |
■使用例1
2.パケットキャプチャの止めるタイミングを指定したい場合
tshark.exe -i 6 -P -w D:\output1.pcapng -a duration:5
tshark.exe -i 6 -P -w D:\output1.pcapng -a filessize:2
tshark.exe -i 6 -P -w D:\output1.pcapng -c 10
オプション | 説明 |
-a duration:<秒数> | 指定した秒数経過すると停止します。 例 「-a duration:10」とすると10秒経過すると停止 |
-a filesize:<ファイルサイズ> | 指定したファイルサイズ(Kbytes)に達すると停止します。 例 「-a filesize:2」とすると2Kbyteに達すると停止 |
-c <パケット数> | 指定したパケット数をキャプチャすると停止します。 例 「-c 10」とすると10パケットキャプチャすると停止 |
■使用例2-1
■使用例2-2
■使用例2-3
3.ファイル容量を指定してローテーションさせたい場合
Windowsサーバのディスク容量のパンクを防ぐことができます。
長時間パケットキャプチャするときに1ファイルで保管すると閲覧するときに非常に重くなるので、ファイルを分割してローテーションさせることをおススメします。
ファイル容量は、最大50MB(50000Kbyte)~100MB(100000Kbyte)の範囲で分割することを推奨
tshark.exe -i 6 -w D:\work\output1.pcapng -b filesize:10 -b files:3
tshark.exe -i 6 -w D:\work\output1.pcapng -b filesize:2 -a files:3
- 「-P」オプションはローテーションのファイル書込みでエラーになるのではずす
- 「-w <ファイル名> -b filesize:<ファイルサイズ> -b files:<ローテーション数>」をセットで利用を推奨します。
オプション | 説明 |
-b filesize:<ファイルサイズ> | 指定したファイルサイズ(Kbyte)に達すると、新しいファイルが作成されます。 ※単体で利用すると停止するまで容量が増え続けます。 例 「-w output1.pcapng -b filesize:10」とすると、10Kbyteに達すると新しいファイルを作成し停止するまで増え続けます。 output1_00001_20220316164702.pcapng output1_00002_20220316164706.pcapng output1_00003_20220316164706.pcapng ・・・ とファイルが増え続けます。 |
-b files:<ローテーション数> | 指定した数値でローテーションを継続します。 「-w」と「-b filesize:<ファイルサイズ>」と併用で利用します。 ※単体での利用不可 例 「-w output1.pcapng -b filesize:10 -b files:3」とすると、10Kbyteに達すると新規ファイルを作成し、4つ目のファイルを作成する前に1つ目のファイルが削除され指定のローテーション数で継続します。 ローテーションは停止しません。 1つ目: 2つ目:output1_00002_20220316164706.pcapng 3つ目:output1_00003_20220316164706.pcapng 4つ目:output1_00004_20220316164906.pcapng ・・・ と5つ目が作成されると2つ目が削除されます。 |
-a files:<ローテーション数> | 指定した数値までローテーションして停止します。 「-w」と「-b filesize:<ファイルサイズ>」と併用で利用します。 ※単体での利用不可 例 「-w output1.pcapng -b filesize:10 -a files:3」とすると、10Kbyteに達すると新規ファイルを作成し、3つ目のファイルが10Kbyteに達するとローテーションは停止します。 1つ目:output1_00001_20220316164702.pcapng 2つ目:output1_00002_20220316164706.pcapng 3つ目:output1_00003_20220316164706.pcapng と3つ目が10Kbyteに達するとローテーションは停止します。 |
■使用例3-1
■使用例3-2
4.フィルタと条件判定(AND OR NOT)を利用してパケット情報をしぼり込みたい場合
tshark.exe -i 8 -w D:\work\output1.pcapng -b filesize:10 -b files:3 -f "host 192.168.11.10 and icmp"
オプション | 説明 |
-f | 条件を絞り込んでパケットキャプチャを取りたい場合に利用します。 例 ・192.168.11.10からくるicmp(ping)に限定してパケットを取りたい場合 -f "host 192.168.11.10 and icmp" ・192.168.11.10からくるすべてのパケットを取りたい場合 -f "host 192.168.11.10" ・192.168.11.10からくるhttps(443/tcp)に限定してパケットを取りたい場合 -f "host 192.168.11.10 and port 443" ・192.168.11.10からくるhttps(443/tcp)とhttp(80/tcp)に限定してパケットを取りたい場合 -f "host 192.168.11.10 and (port 443 or port 80)" |
■使用例4
「tshark」コマンドのフィルターと条件判定の指定方法は「tcpdump」と同じになります。
詳しく知りたい場合は下記URLを参照ください。
tsharkコマンドでパケットキャプチャを取るときの注意事項
必ず、オプション指定で「-w」によるファイル保管をする際は
・フィルターの記述間違い、条件が間違っていないか?
・オプションの指定方法が間違っていないか?
・ファイルの保管場所が間違っていないか?
を確認するために、一度、テスト実行をしてパケットキャプチャが正しく取れていることを確認してから本番のパケットキャプチャを取るようにしてください。
「-w」を指定するとコマンドプロンプトにパケットキャプチャした情報が表示されません。情報がとれていなかったり、意図しないパケットが取得されていたりと取得後に気付いて目的の情報がとれていないことがあるので注意してください。
もしくは、一時的に「-P」オプションをつけてコマンドプロンプトに表示させて確認する方法も有効です。確認が終わったら「-P」オプションを外して本番のパケットキャプチャを取ります。
テスト実行した場合、保管されたパケットキャプチャのファイルを削除するのを忘れないようにしてください。
tsharkコマンドを利用するケースとは
ネットワーク障害で利用
例えば、
・正しく通信のやり取りが行われているか?
・送信者からのデータを受け取れているか?
・宛先にデータを送信できているか?
・通信データは届いているか?
・どのような通信ポートでデータをやり取りしているのか?
・不正な通信を受信していないか?
を確認したいときにtsharkコマンド利用します。主にネットワーク障害(データのやり取りでの障害)が発生した時に利用します。
ネットワーク障害でパケットキャプチャを取るもっとも効果的な方法は、相手側も含めて双方向で取ることです。
そうすることで、「パケットの遅延」、「パケットのロスト」、「双方向でのパケットの送受信」をより詳細に確認でき原因を特定することができます。
理想のパケットキャプチャ取得ポイント
この場合、サーバ担当はネットワーク担当へ相談して取得を依頼する必要があります。
一時切り分けで、片側だけのパケットキャプチャを取り、それでも原因がわからなければ、双方向でパケットキャプチャを取るというように、段階を踏んでいく方法でも間違いではありません。
また、相手側でパケットキャプチャが取れない事情もあるので、取得できるところから確認する方法でも構いません。
コメント