Windows版tcpdump「tshark」についてパケットキャプチャ取得まで解説

Windows版tcpdumpの「tshark」についてパケットキャプチャ取得まで解説 アプリ

今回は、Wiresharkをインストールするとデフォルトでインストールされる「tshark」コマンドについて解説します。

tsharkはWindows版のtcpdumpコマンドと思っていただいて構いません。
Windows上でパケットキャプチャをCLIで取るためのコマンドになります。
また、GUIでパケットキャプチャを取るのがWiresharkになります。

ネットワーク障害でパケットキャプチャを取りたい場合に利用するものなので、他のサービスへの影響もありません。サービスが稼働中でネットワークキャプチャを取りたい場合も利用できます。

Windowsサーバを新規導入するときには、操作性・設定が簡単なWiresharkすなわち「tshark」を事前にインストールしておくことを強くおススメします。

 
Widnowsにも標準で「netsh」というパケットキャプチャコマンドが用意されていますが、使い方・操作方法が分かりづらい面があるのでおススメしません。





スポンサーリンク

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」のオプションとサンプル紹介

何度も説明していますが、パスが通っていないので、tsharkコマンドを実行する時は、コマンドプロンプトを起動し「Wireshark」がインストールされたディレクトリに移動してから実行してください。
cd "C:\Program Files\Wireshark"



パケットキャプチャを取得したいインターフェースを必ず確認してからtsharkコマンドを実行してください。

インターフェースを確認するオプションは「-D」

インターフェースを指定するオプションは「-i」

tsharkコマンドを実行する時は、必ずこの「-i」オプションを指定して実行してください。

tshark.exe -D
tshark.exe -i [インターフェース番号]


tsharkコマンド初期利用で使用するオプション
tsharkコマンド初期利用で使用するオプション


1.コマンドプロンプト(画面)への表示とファイル保存を同時に行う場合
tshark.exe -i 6 -P -w D:\output1.pcapng


オプション説明
-Pコマンドプロンプトにパケットキャプチャの情報を表示させたい場合に使用します。


「-w」オプションを使用すとコマンドプロンプト内にパケットキャプチャ情報が表示されないので、表示させたい時に使用します。
-w <ファイル名.pcapng>保存したいパスを指定してファイルに保存する。


D:\output1.pcapng
拡張子を「.pcapng」とするとキャプチャ取得後にファイルをダブルクリックするとWiresharkが起動してパケットキャプチャをツールで閲覧することができます。


■使用例1

コマンドプロンプト(画面)への表示とファイル保存を同時に行う場合
tshrkコマンド「-P」と「-w」オプション利用例


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

パケットキャプチャの止めるタイミングを指定したい場合(秒数で停止)
tshrkコマンド「-a duration:」オプション利用例


■使用例2-2

パケットキャプチャの止めるタイミングを指定したい場合(ファイルサイズで停止)
tshrkコマンド「-a filesize:」オプション利用例


■使用例2-3

パケットキャプチャの止めるタイミングを指定したい場合(パケット数で停止)
tshrkコマンド「-c」オプション利用例



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つ目:output1_00001_20220316164702.pcapng(削除)
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

ファイル容量を指定してローテーションさせたい場合(ファイルサイズ指定のローテーション設定)
tshrkコマンド「-b filesize:」と「-b files:」オプション利用例
3世代保持でローテーション継続中
3世代保持でローテーション継続中


■使用例3-2

ファイル容量を指定してローテーションさせたい場合(ファイルサイズ指定の指定世代数で停止)
tshrkコマンド「-b filesize:」と「-a files:」オプション利用例
3世代目が10Kbyte到達でローテーション停止
3世代でローテーション停止


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

フィルタと条件判定(AND OR NOT)を利用してパケット情報をしぼり込みたい場合(相手先IPとicmp(ping)にフィルタリング)
tshrkコマンド「-f」オプション利用例



「tshark」コマンドのフィルターと条件判定の指定方法は「tcpdump」と同じになります。
詳しく知りたい場合は下記URLを参照ください。



tsharkコマンドでパケットキャプチャを取るときの注意事項

必ず、オプション指定で「-w」によるファイル保管をする際は

 ・フィルターの記述間違い、条件が間違っていないか?
 ・オプションの指定方法が間違っていないか?
 ・ファイルの保管場所が間違っていないか?


を確認するために、一度、テスト実行をしてパケットキャプチャが正しく取れていることを確認してから本番のパケットキャプチャを取るようにしてください。

「-w」を指定するとコマンドプロンプトにパケットキャプチャした情報が表示されません。情報がとれていなかったり、意図しないパケットが取得されていたりと取得後に気付いて目的の情報がとれていないことがあるので注意してください。

もしくは、一時的に「-P」オプションをつけてコマンドプロンプトに表示させて確認する方法も有効です。確認が終わったら「-P」オプションを外して本番のパケットキャプチャを取ります。

テスト実行した場合、保管されたパケットキャプチャのファイルを削除するのを忘れないようにしてください。


tsharkコマンドを利用するケースとは

ネットワーク障害で利用

例えば、
・正しく通信のやり取りが行われているか?
・送信者からのデータを受け取れているか?
・宛先にデータを送信できているか?
・通信データは届いているか?
・どのような通信ポートでデータをやり取りしているのか?
・不正な通信を受信していないか?


を確認したいときにtsharkコマンド利用します。主にネットワーク障害(データのやり取りでの障害)が発生した時に利用します。
ネットワーク障害でパケットキャプチャを取るもっとも効果的な方法は、相手側も含めて双方向で取ることです。
そうすることで、「パケットの遅延」、「パケットのロスト」、「双方向でのパケットの送受信」をより詳細に確認でき原因を特定することができます。


理想のパケットキャプチャ取得ポイント
理想のパケットキャプチャ取得方法
パケットのやり取りを実施している送信者と受信者のあいだの通信経路上でもパケットキャプチャを取ることでより詳細な情報と障害特定につなげれる場合があります。
この場合、サーバ担当はネットワーク担当へ相談して取得を依頼する必要があります。
片側だけのパケットキャプチャでも状況に応じて原因を特定したりできるので、必ずしも双方向でパケットキャプチャをとる必要がありません。

一時切り分けで、片側だけのパケットキャプチャを取り、それでも原因がわからなければ、双方向でパケットキャプチャを取るというように、段階を踏んでいく方法でも間違いではありません。
また、相手側でパケットキャプチャが取れない事情もあるので、取得できるところから確認する方法でも構いません。

コメント

タイトルとURLをコピーしました