Windows 7以降*1のnetsh traceコマンドを使うとWindowsの標準機能だけでパケットをキャプチャできるので、やり方をメモ。
使用するコマンドプロンプトは管理者として実行する。
- キャプチャ開始
- netsh trace start capture=yes traceFile=<キャプチャファイル名>
- netsh trace start capture=yes traceFile=C:\packets.etl
- キャプチャ停止
- netsh trace stop
- 代表的なキャプチャフィルター
- CaptureInterface=<インターフェース名または GUID>
- CaptureInterface="ローカル エリア接続"
- netsh trace show interfaces でインターフェース一覧表示
- Ethernet.Type=<イーサネットの種類>
- Protocol=<プロトコル>
- Protocol=TCP
- IPv4.Address=
- IPv4.Address=192.0.2.1
- IPv4.SourceAddress=<送信元IPv4アドレス>
- IPv4.SourceAddress=192.0.2.1
- IPv4.DestinationAddress=<送信先IPv4アドレス>
- IPv4.DestinationAddress=192.0.2.1
- 既定値
- capture=no
- capturetype=physical
- report=no
- persistent=no
- maxSize=250
- fileMode=circular
- overwrite=yes
- correlation=yes
- perfMerge=yes
- traceFile=%LOCALAPPDATA%\Temp\NetTraces\NetTrace.etl
- providerFilter=no
- ヘルプ
- netsh trace start help
- netsh trace show capturefilterhelp
あとはEvent Trace Log File (.etl)をMicrosoft Message Analyzerで解析すれば良い。
- Microsoft Message Analyzer(www.microsoft.com)
またEvent Trace Log File (.etl)はWiresharkで開けないので、Microsoft Message AnalyzerでNetwork Monitor Capture File (.cap)に変換すればWiresharkでも開けるようになる。
その他、参考になりそうなURLは下記の通り。
- Windows 7 のネットワーク診断とトレース(technet.microsoft.com)
- Netsh Commands for Network Trace in Windows Server 2008 R2 and Windows 7(technet.microsoft.com)
- netsh trace コマンドにてパケット キャプチャを開始、停止する際に NIC のリンクダウンが発生する場合がある(support.microsoft.com)
- Microsoft Message Analyzer Operating Guide(technet.microsoft.com)
ちなみに試してみて予想外だったのはnetsh traceコマンドではPromiscuous Modeにならないことかな。なので、Promiscuous Modeでキャプチャしたい場合はWiresharkなどでキャプチャする必要がある。
*1:サーバOSだとWindows Server 2008 R2以降