Wiresharkなどのパケットキャプチャツールを導入できない環境でも netsh trace コマンドを使うことでパケットキャプチャを取得できます。本稿では netsh trace コマンドを使ったパケットキャプチャについて概要を説明します。
1. 基本操作
パケットキャプチャの開始
コマンドプロンプトを起動して、以下のコマンドを実行する。
CMD> netsh trace start capture=yes
※参考:「コマンドプロンプト」の開き方
パケットキャプチャの停止
以下のコマンドを実行する。
CMD> netsh trace stop
※忘れずに停止してください(デフォルトのオプションの場合OSを再起動するまでパケットキャプチャは停止しません。ログオフしてもキャプチャを取得し続けます)。
2. netsh trace コマンドのプションを理解する
netsh trace コマンドの主なオプションは以下になります。多くの場合 maxsize 、 tracefile 、 filemode の4つのオプションを理解すれば十分でしょう。
※IPアドレスやプロトコルでフィルタしてもログファイル(.etl) のサイズは小さくなりません。従ってキャプチャ取得時にフィルタをする意味はあまりありません。キャプチャを取得する際にはフィルタをせず、wiresharkで解析する際に表示フィルタを使うことをおすすめします。
No | オプション | 説明 |
---|---|---|
1 | maxsize | ログファイルの最大サイズをMBで指定。 デフォルトだと 250MB。0 を指定すると無制限となる。 ※0 を指定する場合は filemode を single または append にする必要がある |
2 | tracefile | ログファイルのパスを指定。 デフォルトは %LOCALAPPDATA%\Temp\NetTraces\NetTrace.etl |
3 | filemode | ・circular :ログのサイズが上限に達したら上書(デフォルト)。 ・single:ログのサイズが上限に達したらパケットキャプチャを停止。 ・append:既存のログファイルにログを追記。ログのサイズが上限に達したらパケットキャプチャを停止。 |
4 | persistent | ・no:OSを再起動するとキャプチャを停止(デフォルト)。 ・yes:OSを再起動をしてもキャプチャを停止しない |
5 | IPv4.Address | 通信元または宛先に特定のIPアドレスが含まれるパケットをキャプチャする。 ※複数のIPアドレスを指定する場合は、カッコとクオテーションで囲む 例)IPv4.Address=”(192.168.10.10, 192.168.10.12)” |
6 | IPv4.SourceAddress | 通信元IPに特定のIPアドレスが含まれるパケットをキャプチャ。 ※複数のIPアドレスを指定する場合は、カッコとクオテーションで囲む。 例) IPv4.SourceAddress=”(192.168.10.10, 192.168.10.12)” |
7 | IPv4.DestinationAddress | 宛先IPに特定のIPアドレスが含まれるパケットをキャプチャする。 ※複数のIPアドレスを指定する場合は、カッコとクオテーションで囲む。 例) IPv4.DestinationAddress=”(192.168.10.10, 192.168.10.12)” |
8 | report | ・no:html形式のレポートを出力しない(デフォルト)。 ・yes:html形式のレポートを出力。 ※yes にするとCabファイルの情報を HTML 形式で参照できるようになる。 |
3. netsh trace コマンドの実行例
① デフォルトの設定
オプションを指定せずにデフォルト設定でコマンドを実行すると、ログファイルの最大サイズは 250MBになります。250MB を超えるとログが上書き(循環)されます。
実行例
CMD> netsh trace start capture=yes
Trace configuration:
Status: Running
Trace File: C:\Users\Administrator\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: Off
Circular: On ◀ログを上書きして書き込む
Max Size: 250 MB ◀最大サイズ
Report: Off
② ログファイルの最大サイズを指定する
長時間ログを取得したい場合など、デフォルトの 250MB ではサイズが足りない場合があります。その場合は最大サイズを指定してコマンドを実行してください。
実行例1
ログファイルの最大サイズを2GB(2048MB)に指定してコマンドを実行
CMD> netsh trace start capture=yes maxsize=2048
Trace configuration:
Status: Running
Trace File: C:\Users\Administrator\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: Off
Circular: On
Max Size: 2048 MB ◀最大サイズ
Report: Off
実行例2
ログファイルの最大サイズを無制限に指定してコマンドを実行
※ファイルサイズを無制限にする場合は 0 を指定します。
※サイズを無制限にするためには filemode を single または append にする必要があります。
CMD> netsh trace start capture=yes maxsize=0 filemode=single
Trace configuration:
Status: Running
Trace File: C:\Users\Administrator\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: Off
Circular: Off ◀ログの循環設定がOffになる
Max Size: Off ◀最大サイズがOffになる
Report: Off
③ ログの出力先を指定する
ログファイルの場所を指定する場合は tracefile オプションを指定してコマンドを実行します。
※コマンドの実行前にフォルダを作成しておく必要があります
実行例
ログの出力先を D:\tmp\NetTrace.etl にする
CMD> netsh trace start capture=yes tracefile=D:\tmp\NetTrace.etl
Trace configuration:
Status: Running
Trace File: C:\tmp\NetTrace.etl ◀ログファイルの場所
Append: Off
Circular: On
Max Size: 250 MB
Report: Off
④ ログを上書きしないようにする
ログファイルが最大サイズに達したら、上書きせずにログの取得を止めるようにすることも可能です。
実行例
CMD> netsh trace start capture=yes filemode=single
Trace configuration:
Status: Running
Trace File: C:\Users\Administrator\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: Off
Circular: Off ◀上書き設定がオフになる
Max Size: 250 MB
Report: Off
⑤ ログを追記にする
デフォルトだと書き込み先のログファイルが存在していた場合には、既存の内容を上書きして書き込みが行われます。ログファイルに上書きするのではなく、追記することも可能です。
実行例
CMD> netsh trace start capture=yes filemode=append
Trace configuration:
Status: Running
Trace File: C:\Users\Administrator\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: On ◀追記設定がオンになる
Circular: Off ◀上書き設定がオフになる
Max Size: 250 MB
Report: Off
※appendをオンにすると自動的に circular はオフになります。
⑥ HTML形式のレポートを出力する
netsh trace を実行するとトレースログの補足情報としてcabファイルが出力されます。report オプションを有効にすると cab ファイルを html 形式で表示することができます。
※html 形式で確認できるのは cab ファイルのみで、トレースログは html 形式では表示できませんのでご注意ください。
実行例
CMD> netsh trace start capture=yes filemode=append
Trace configuration:
Status: Running
Trace File: C:\Users\Administrator\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: Off
Circular: On
Max Size: 250 MB
Report: On ◀レポート設定がオンになる
⑦ 特定のIPアドレスが含まれる通信をキャプチャする
通信元もしくは宛先に特定のIPアドレスが含まれる通信をキャプチャします。基本的には宛先のIPアドレスを指定します。※自ホストのIPアドレスを指定するとすべての通信がキャプチャされます
実行例1
IPアドレス 192.168.1.5 が宛先または送信元に含まれるパケットをキャプチャする。
CMD> netsh trace start capture=yes IPv4.Address=192.168.1.5
Trace configuration:
Status: Running
Trace File: C:\Users\Administrator\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: Off
Circular: On
Max Size: 250 MB
Report: Off
実行例2
IPアドレス 192.168.1.5 、 192.168.1.12 のいずれかが、宛先または送信元に含まれるパケットをキャプチャする。
CMD> netsh trace start capture=yes IPv4.Address="(192.168.10.10, 192.168.10.12)"
Trace configuration:
Status: Running
Trace File: C:\Users\Administrator\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: Off
Circular: On
Max Size: 250 MB
Report: Off
4. Wiresharkでログを解析する
netsh trace コマンドで取得したログファイルを解析するには解析ツールが必要になります。ここではWiresharkを使ってログを解析する方法を説明します。
1. etl2pcapng でログファイルを変換する
実はnetsh traceコマンドで取得したログファイルはWiresharkで読み込めません。
Github に公開されている etl2pcapng というコマンドを使って、Wireshark で読み込める形式にファイルを変換します。
・microsoft / etl2pcapng(https://github.com/microsoft/etl2pcapng/releases)
※マイクロソフトがGithub上に公開しているツールなので「安心安全」です。
2. 最新版の etl2pcapng.zip をダウンロードします。
3. デスクトップなどの任意の場所に解答してください。※インストールは不要です。
4. コマンドプロンプトを開き解答したディレクトリに cd してください。
CMD> cd C:\etl2pcapng\x64
5. netsh trace コマンドで生成されたログファイルを etl2pcapng.exe コマンドで変換します。
※変換すると拡張子が .pcapng のファイルが生成されます
実行例
CMD> etl2pcapng.exe C:\NetTrace.etl C:\NetTrace.pcapng
IF: medium=eth ID=0 IfIndex=14
Converted 20781 frames
2. Wiresharkでログを解析する
- Wireshark をダウンロードして、インストールします。
Download Wireshark (https://www.wireshark.org/download.html)
※インストール不要のポータブル版(Windows PortableApps)もあります。
2. Wiresharkを起動して.pcapng ファイルを開きます。
あとは自由に解析してください。ログの解析については以下の参考書をお薦めしておきます。
以上。
コメント