トレーニング
モジュール
このモジュールでは、次の Azure Network Watcher 機能を使って、Azure ネットワークを監視および診断する方法について説明します。Azure Network Watcher トポロジ。 接続モニター。 IP フロー検証と NSG 診断。 パケット キャプチャ。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
パケット モニター (Pktmon) は、Windows 用インボックスのクロスコンポーネント ネットワーク診断ツールです。 パケット キャプチャ、パケット ドロップの検出、パケット フィルタリング、カウントに使用できます。 このツールは、ネットワーク スタック内の可視性を提供するため、コンテナー ネットワークや SDN などの仮想化シナリオで特に役立ちます。 パケット モニターは、Windows 10 および Windows Server 2019 (バージョン 1809 以降) で pktmon.exe コマンドを実行することで、インボックスで使用できます。 このトピックでは、pktmon の構文、コマンドの書式設定、および出力について理解できるように説明します。 すべてのコマンドの一覧については、pktmon の構文に関するページを参照してください。
一般的なシナリオを開始するには、次の手順に従います。
特定の IP アドレス、ポート、パケットに関連付けられているプロトコルなど、キャプチャに必要なパケットの種類を特定します。
キャプチャ フィルターを適用するための構文を確認し、前の手順で特定したパケットのフィルターを適用します。
C:\Test> pktmon filter add help
C:\Test> pktmon filter add <filters>
キャプチャを開始し、パケットのログ記録を有効にします。
C:\Test> pktmon start -c
診断中の問題を再現します。 予想されるトラフィックがあることを確認し、トラフィックがコンピューター内にどのように流れているかを大まかに把握するためにカウンターに対してクエリを実行します。
C:\Test> pktmon counters
キャプチャを停止し、分析のために txt 形式でログを取得します。
C:\Test> pktmon stop
C:\Test> pktmon etl2txt <etl file>
txt 出力を分析する方法については、「パケット モニターの出力の分析」を参照してください。
パケット キャプチャを開始する前にフィルターを適用することを強くお勧めします。これは、1 つのパケット ストリームに専念すると、特定の宛先への接続のトラブルシューティングが容易になるためです。 すべてのネットワーク トラフィックをキャプチャすると、出力のノイズが多すぎて分析できない可能性があります。 パケットが報告されるには、少なくとも 1 つのフィルターで指定されているすべての条件に一致している必要があります。 最大 32 のフィルターが同時にサポートされます。
たとえば、次の一連のフィルターでは、IP アドレス 10.0.0.10 との間で送受信される ICMP トラフィック、およびポート 53 上のすべてのトラフィックがキャプチャされます。
C:\Test> pktmon filter add -i 10.0.0.10 -t icmp
C:\Test> pktmon filter add -p 53
パケット モニターは、MAC アドレス、IP アドレス、ポート、EtherType、トランスポート プロトコル、および VLAN ID によるフィルター処理をサポートしています。
パケット モニターは、MAC アドレス、IP アドレス、またはポート フィルターに関しては、送信元と送信先を区別しません。
TCP パケットをさらにフィルター処理するために、一致させる TCP フラグのオプションのリストを指定できます。 サポートされているフラグは、FIN、SYN、RST、PSH、ACK、URG、ECE、および CWR です。
C:\Test> pktmon filter add -i 10.0.0.10 -t tcp syn
詳細については、pktmon フィルターの構文に関するページを参照してください。
パケット モニターでは、start コマンドで [-c] パラメーターを指定してパケットをキャプチャできます。 これにより、パケット カウンターだけでなくパケットのキャプチャとログ記録が使用可能になります。 パケットのログ記録を行わずにパケット カウンターのみを有効にするには、[-o] パラメーターを start コマンドに追加します。 パケット カウンターの詳細については、後述の「パケット カウンター」セクションを参照してください。
[--comp] パラメーターを使用して、監視するコンポーネントを選択できます。 NIC のみまたはコンポーネント ID の一覧を指定できます。既定ではすべてのコンポーネントになります。 [--Type] パラメーターを使用して、パケット伝達ステータス (パケットの破棄またはフロー) によってフィルター処理することもできます。
パケット モニターでは、パケットのキャプチャに加えて、ETW や WPP イベントなどの一般的なイベントもキャプチャできます。そのためには、[-t] パラメーターを宣言し、[-p] パラメーターを使用してプロバイダーを指定します。 すべてのデータ収集を停止するには、"pktmon stop" を使用します。
たとえば、次のコマンドは、ネットワーク アダプターのみのパケットをキャプチャします。
C:\Test> pktmon start -c --comp nics
次のコマンドでは、コンポーネント 4 と 5 を通過する破棄されたパケットだけをキャプチャし、ログに記録します。
C:\Test> pktmon start -c --comp 4,5 --type drop
このコマンドは、プロバイダー "Microsoft-Windows-TCPIP" からパケットをキャプチャし、イベントをログに記録します。
C:\Test> pktmon start --capture --trace -p Microsoft-Windows-TCPIP
パケット モニターは、複数のログ記録モードをサポートしています。
ログに記録するパケットの量を指定するには、[-P] パラメーターを使用します。 そのパラメーターを 0 に設定すると、サイズに関係なくすべてのパケットのパケット全体がログに記録されます。 既定値は 128 バイトで、ほとんどのパケットのヘッダーが含まれます。
ログ ファイルのサイズを指定するには、[-S] パラメーターを使用します。 これは、循環ログ モードでのログ ファイルの最大サイズになります。このサイズになると、パケット モニターは古いパケットを新しいパケットで上書きし始めます。 これは、マルチファイル ログ モードでの各ログ ファイルの最大サイズにもなります。このサイズになると、パケット モニターは次のパケットをログ記録するために新しいファイルを作成します。 このパラメーターを使用して、メモリ ログ モードのバッファー サイズを設定することもできます。
詳細については、pktmon start の構文に関するページを参照してください。
パケット モニターは、ETL 形式でログ ファイルを生成します。 分析用に ETL ファイルをフォーマットする場合、次のような複数の方法があります。
注意
* 上記のハイパーリンクを使用して、 Wireshark と ネットワーク モニターでパケット モニターのログを解析および分析する方法を確認してください。
詳細については、pktmon format の構文に関するページを参照してください。
パケット モニターは、ネットワーク スタックのコンポーネントごとに、パケットのスナップショットをキャプチャします。 これにより、各パケットの複数のスナップショットが存在することになります (下の図では、青い四角形の線で示されています)。 これらの各パケットのスナップショットは、複数の行 (赤と緑の四角形) で表されます。 パケット インスタンスに関するデータを含む行が少なくとも 1 行あり、その行はタイムスタンプから始まります。 そのすぐ後に、解析された未加工パケットをテキスト形式 (タイムスタンプなし) で表示する少なくとも 1 つの行 (下の図で太字の部分) があります。緑色の四角形で囲まれたパケットのように、パケットがカプセル化されている場合は、複数の行が存在する可能性があります。
同じパケットのすべてのスナップショットを関連付けるには、PktGroupId と PktNumber の値 (黄色で強調表示されています) を監視します。同じパケットのすべてのスナップショットは、これらの 2 つの値が同じになっています。 Appearance の値 (青で強調表示されています) は、同じパケットの後続の各スナップショットのカウンターとして機能します。 たとえば、パケットの最初のスナップショット (ネットワーク スタックでパケットが最初に現れた場所) の値が 1 である場合、次のスナップショットの値は 2 になり、以下同様になります。
各パケット スナップショットには、スナップショットに関連付けられているコンポーネントを示すコンポーネント ID (上の図で下線付きの部分) があります。 コンポーネント名とパラメーターを解決するには、ログ ファイルの下部にあるコンポーネントの一覧でこのコンポーネント ID を探します。 次の図に示す、コンポーネント テーブルの一部では、"Component 1" が黄色で強調表示されています (これは、上の最後のスナップショットがキャプチャされたコンポーネントです)。 2 つのエッジを持つコンポーネントでは、各エッジで 2 つのスナップショット (たとえば上の図では、Appearance 3 と Appearance 4 があるスナップショット) がレポートされます。
次の図に示すように、各ログ ファイルの下部には、フィルター一覧が表示されます (青で強調表示されています)。 各フィルターには、指定されたパラメーター (下記の例の Protocol ICMP) が表示され、残りのパラメーターには 0 が表示されます。
破棄されたパケットの場合は、パケットがドロップされたスナップショットを表す行の前に "drop" という単語が表示されます。 破棄された各パケットは、dropReason 値も提供します。 dropReason パラメーターは、たとえば MTU Mismatch、Filtered VLAN などのように、パケットが破棄された理由の簡単な説明を示します。
ログを分析しなくとも、パケット モニター カウンターでは、ネットワーク スタック全体のネットワーク トラフィックの概要が提供されます。これは、コストのかかるプロセスになる可能性があります。 トラフィックのパターンを調べるには、パケット モニターでキャプチャを開始した後に、pktmon counters を使用してパケット カウンターのクエリを実行します。 カウンターを 0 にリセットするには、pktmon reset を使用し、すべての監視を停止するには、pktmon stop を使用します。
次の例では、新しいキャプチャが開始されてから、キャプチャが停止される前に、pktmon counters コマンドを使用してカウンターのクエリを実行しました。 カウンターは、ネットワーク スタックから出る 1 つのパケットを示しています。パケットは最初にプロトコル層から物理ネットワーク アダプターに送信され、その応答が反対方向に戻ります。 ping を実行できないか応答が見つからない場合は、カウンターを使用してそれを簡単に検出できます。
次の例では、"Counter" 列の下で Drops が報告されています。 pktmon counters --json を使用して JSON 形式のカウンター データを要求するか、出力ログを分析して詳細な情報を取得することで、各コンポーネントの最後の破棄の理由を確認します。
これらの例で示すように、カウンターは、少し見ただけで分析できるダイアグラムによって多くの情報を提供できます。
詳細については、pktmon counters の構文に関するページを参照してください。
コマンド pktmon list を使用して、ネットワーク スタックのレイアウトを確認します。
このコマンドは、アダプターのバインドによって配置されたネットワーク コンポーネント (ドライバー) を示します。
一般的なバインドは、次で構成されます。
各コンポーネントは、監視対象の個々のコンポーネントを指定するために使用されるパケット モニター コンポーネント ID によって一意に識別されます。
注意
ID は永続的ではなく、再起動時、およびパケット モニターのドライバーの再起動時に変更される可能性があります。
パケット モニターの出力に表示される ID の中には、コンポーネントの一覧に表示されないものがあります。 これは、選択と表示を容易にするため、一部のコンポーネントが 1 つの ID に集約されているためです。 これらのコンポーネントの元の ID を検索するには、pktmon list --json を使い、出力で SecondaryId プロパティを見つけます。
詳細については、pktmon list の構文に関するページを参照してください。
トレーニング
モジュール
このモジュールでは、次の Azure Network Watcher 機能を使って、Azure ネットワークを監視および診断する方法について説明します。Azure Network Watcher トポロジ。 接続モニター。 IP フロー検証と NSG 診断。 パケット キャプチャ。