Windows標準のLANアナライザーを使ってみる

  • 2021年12月1日
  • 2022年2月15日
  • windows
  • 3954view

パケットキャプチャーはWiresharkを良く使っていますが、Windowsでサクッとできないかな?という趣旨の会話があったので、何気に調べてみましたよ。

実は少し前からWindows10にはパケット モニター が使えるようになっており、その名もPktmonインボックスのクロスコンポーネント ネットワーク診断ツールです。パケット キャプチャ、パケット ドロップ検出、パケット フィルタリング、カウントが使えたりします。ネットワーク スタック内の可視性を提供するコンテナー ネットワークや 仮想化状況の確認で便利との事。どうしても外部ツールが使えない環境で役立つのか早速触ってみます。

 

さくっとpktmon を使う

pktmon を使うためには管理者権限が必要です。コマンドプロンプトを管理者権限で起動します。Windowsキー+Rで「ファイル名を指定して実行」を表示させ、”cmd”と打ち込み出てきたら管理者で実行か、Ctrl+Shift+Enter で起動します。

そのまま、pktmon start –capture を押せばキャプチャーが始まり今いるカレントディレクトリにPktMon.etlというファイルが作られます。

終了したい場合は、 pktmon stopを押します。

取得した.etlはこのままでは読めませんので、pktmon formatで可読性のあるテキストファイルに変換することで、エディタなどを使って内容の確認が可能になります。

参考:https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/pktmon-etl2txt

 

しかし見づらい

実際には見づらいので、

  • Microsoft Network MonitorやWireshakを使う。
  • pktmonコマンドに引数を付けてごにょごにょする。

上記になろうかと思います。

pktmon start [–capture [–counters-only] [–comp <selector>] [–type <type>] [–pkt-size <bytes>] [–flags <mask>]] [–trace –provider <name> [–keywords <k>] [–level <n>] …] [–file-name <name>] [–file-size <size>] [–log-mode <mode>] パケットのキャプチャとイベントの収集を開始します。

パケットのキャプチャ
-c, –capture
パケットのキャプチャとパケット カウンターを有効にします。

-o, –counters-only
パケット カウンターのみを収集します。パケットのログは記録されません。

–comp { all | nics | id1 id2 … }
パケットをキャプチャするコンポーネントを選びます。すべてのコンポーネント (ALL)、
NIC のみ、またはコンポーネント ID のリストを指定できます。既定値は ALL です。

–type { all | flow | drop }
キャプチャするパケットを選びます。既定値は ALL です。

–pkt-size<bytes>
各パケットからログに記録するバイト数。常にパケット全体をログに記録するには、
これを 0 に設定します。既定値は 128 バイトです。

–flags<mask>
パケットのキャプチャ中にログに記録される情報を制御する 16 進数のビットマスク。
既定値は 0x012 です。

0x001 – 内部パケット モニター エラー。
0x002 – コンポーネント、カウンター、フィルターに関する情報。
0x004 – NET_BUFFER_LIST グループのソースと宛先の情報。
0x008 – NDIS_NET_BUFFER_LIST_INFO からパケット メタデータを選択します。
0x010 – Raw パケット、[–pkt-size] のサイズに切り捨てます。

イベント プロバイダー
-t, –trace
イベントの収集を有効にします。

-p, –provider<name>
イベント プロバイダーの名前または GUID。複数のプロバイダーの場合は、この
パラメーターを複数回使用します。

-k, –keywords<k>
対応するプロバイダー用にログに記録されるイベントを
制御する 16 進数のビットマスク。既定値は 0xFFFFFFFF です。

-l, –level<n>
対応するプロバイダーのログ記録レベルです。
既定値は 4 (情報レベル) です。

ログ記録のパラメーター
-f, –file-name<name>
ログ ファイルの名前。既定値は PktMon.etl です。

-s, –file-size<size>
ログ ファイルの最大サイズ (MB 単位)。既定値は 512 MB です。

-m, –log-mode { circular | multi-file | memory | real-time }
ログ記録のモード。既定値は circular です。

circular ログがいっぱいになっている場合は、新しいイベントによって最も古いものが上書きされます。

multi-file キャプチャ対象のイベント数に制限はありませんが、ログがいっぱいになるたびに
新しいログ ファイルが作成されます。

memory circular と似ていますが、ログ全体がメモリに格納されます。
pktmon が停止するとファイルに書き込まれます。

real-time イベントとパケットがリアルタイムで画面に表示されます。ログ
ファイルは作成されません。Ctrl キーを押しながら C キーを押して、監視を停止します。

例 1: パケットのキャプチャ
pktmon start –capture

例 2: パケット カウンターのみ
pktmon start –capture –counters-only

例 3: イベントのログ記録
pktmon start –trace -p Microsoft-Windows-TCPIP -p Microsoft-Windows-NDIS

例 4: パケットのキャプチャとイベントのログ記録
pktmon start –capture –trace -p Microsoft-Windows-TCPIP -k 0xFF -l 4

 

参考:https://docs.microsoft.com/ja-jp/windows-server/networking/technologies/pktmon/pktmon

まとめ

確かにパケットを取れるといえば取れるのですが……どうしても外部ツールが使えない状況でないとなかなか難しいですね。グラフ付きで見やすいWiresharkや他のアナライザーと比べると無骨感が出ています。しかし専門ページでいずれtcpdumpの近いかたちになるのかと思われます。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG