pktcap-uw ツールで ESXi にてパケットキャプチャ
search cancel

pktcap-uw ツールで ESXi にてパケットキャプチャ

book

Article ID: 392605

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

Symptoms:
免責事項:これは英文の記事「Packet capture on ESXi using the pktcap-uw tool (341568)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
 
 
この記事では、pktcap-uw ツールを使用してパケットキャプチャおよび分析を実行する方法について説明しています。
 
pktcap-uw は拡張されたパケットキャプチャおよび分析ツールであり、従来の tcpdump-uw ツールの代替として使用できます。ESXi 5.5 以降では、本ツールがデフォルトで含まれています。。

注意: 新しい pktcap-uw ツールを使用することで、ハイパーバイザー内のあらゆるポイントでトラフィックをキャプチャできるようになり、柔軟性の向上とトラブルシューティング機能の改善が可能になります。

Resolution

下の図は ESXi Network Troubleshooting Tools の "Pktcap-uw" セクションに引用されたものです。

 

パケットキャプチャは、root 権限を持つ SSH セッションのコマンドライン、または KVM(キーボード・ビデオ(モニター)・マウス)を使用したサーバーコンソールアクセスからコマンドを実行することで取得できます。


キャプチャ ポイント

ご利用の仮想スイッチの種類によって、トラフィックをキャプチャできるポイントは多岐にわたります。たとえば、標準スイッチ(vSwitch) や 分散仮想スイッチ(DVS) などがあります。また、キャプチャ結果はユーザーの画面に直接表示することも可能です(tcpdump-uw ツールを使用して出力を解析)。あるいは、ディスクファイルに保存し、ダウンロードした後に Wireshark などのツールで解析することもできます。 

なお、出力をディスクファイルに保存する際は、保存先として /tmp ディレクトリを使用しないでください。

  • 以下のコマンドで ESXi ホストで利用可能なデータストアを確認してください。

    df -h

  • データストアのディレクトリに移動します。

    cd /vmfs/volumes/データストアのフルパス


    注意: VSAN データストアにデータを保存する場合は、コマンドを引用符で囲んで実行してください。

    cd "/vmfs/volumes/データストアのフルパス"

  • 一般的に複数の ESXi ホストでキャプチャを行う場合、すべての ESXi ホストからアクセス可能なデータストアを使用してください。
  • データストア内に例えば、"CASE_12345678" のような、"12345678" の部分に Broadcomサポートケース番号を使用したサブフォルダやサブディレクトリを作成します。

    例:
    cd "/vmfs/volumes/FULL_PATH_TO_DATASTORE"
    mkdir Case_12345678

 

標準 vSwitch のキャプチャポイント

vSwitch における:スイッチポートとアップリンク

スイッチポートはすべての vNIC、vmk アダプタ、およびアップリンクとしての 物理 NIC(vmnic) に接続されています。

まず、問題に基づいてキャプチャポイントを特定し、適切なコマンド構文を適用します。

以下の図は、アーキテクチャにおける VM、カーネル、および物理アダプタの接続関係 を示しています。

Identifying the active uplink carrying a specific vm/vmk traffic.

  • コマンド "net-stats -l" より、vm/vmk にマッピングされたスイッチポートの一覧表が表示されます。

  • オプション1:アップリンクは、コマンド "esxtop" を実行し、 "n" を押します。これにより、スイッチポートとアップリンクのマッピングが表示されます。

  • オプション2:アップリンクを識別するには、コマンド "vsish" を入力、Enter キーを押し、次に "cat /net/portsets/vSwitch_name/ports/switchport_number/teamUplink"を入力、Enter キーを押します。

Note: vSwitch名とスイッチポート番号は、 "net-stats -l" コマンド出力を参照してください。

  • オプション3:アップリンクを識別するには、コマンド "netdbg vswitch instance list" を実行し、Enterキーを押します。



アドバンスド使用方法: 複数のポートを同時にトレースする

例えば、特定の vSwitch ポートとその関連するアップリンクを同時にトレースする

  1. vSwitch ポート番号を取得。

    net-stats -l
  2. これらのパラメータのメモを取ってください。

    esxtop コマンドで Port ID — --switchport 12345678

    物理 vmnic2 ポートのトレース — --uplink vmnic2 -

    pcapファイルの出力先 — /vmfs/volumes/データストアのパス/Case_12345678/

  3. pktcap-uwコマンドを実行して、複数のポイントで同時にパケットをキャプチャします。

    pktcap-uw --switchport 67108879 -o /vmfs/volumes/データストアのパス/Case_12345678/esxi01.switchport.67108879.pcapng & pktcap-uw --uplink vmnic2 -o /vmfs/volumes/データストアのパス/Case_12345678/esxi01.uplink.vmnic2.pcapng &

    注意: ここでは Bash シェルの例です。 vSwitch に複数のアップリンクがある場合は、& の後に別のアップリンクのコマンドを追加して最後に & を付けて実行してください。

  4. kill コマンドを使って pktcap-uw のトレースを停止する。

    kill $(lsof |grep pktcap-uw |awk '{print $1}'| sort -u)
     
  5. このコマンドを実行して、すべての pktcap-uwトレースが停止していることを確認してください。

    lsof |grep pktcap-uw |awk '{print $1}'| sort -u

注意:

  • 単一のキャプチャの場合は "&" を省略します
  • 単一のキャプチャを停止するには、"CTRL" キーを押し続けながら "C" を押してください。
  • パケットがキャプチャされている間、画面にいくつかのメッセージが表示されます。
  • この処理が行われている間、より快適となるため複製の SSH セッションを開始してください。 


分散仮想スイッチ(DVS)のキャプチャポイント

図から異なるポイントでのキャプチャが存在します。

  1. 物理インフラストラクチャに最も近いキャプチャポイント(つまり ESXi ハイパーバイザーと物理インフラストラクチャの間のエントリ/出口ポイント)は、アップリンク キャプチャポイントと呼ばれます。

    キャプチャをファイルに保存例:

    pktcap-uw --uplink vmnic2 --capture UplinkSndKernel,UplinkRcvKernel -o /vmfs/volumes/FULL_PATH_TO_DATASTORE/Case_12345678/esxi01.uplink.vmnic2.UplinkSndRcvKernel.pcapng &

    キャプチャを画面に表示例:

    pktcap-uw --uplink vmnic2 --capture UplinkSndKernel,UplinkRcvKernel -o - | tcpdump-uw -r - -enn

    注意:

    ファイル出力のキャプチャを停止する方法:

    kill $(lsof |grep pktcap-uw |awk '{print $1}'| sort -u)

    画面出力のキャプチャを停止する方法として、CTRLキーを押し続けながら "C" キーを押す

  2. 仮想マシンの仮想 NIC に最も近いキャプチャポイントは、スイッチポート キャプチャポイントと呼ばれます。
    • キャプチャをファイルに保存する例:

      pktcap-uw --switchport 67108879 ---capture VnicTx,VnicRx -o /vmfs/volumes/FULL_PATH_TO_DATASTORE/Case_12345678/esxi01.switchport.67108879.VnicTxRx.pcapng &

    • キャプチャを画面に表示する例:

      pktcap-uw --switchport 67108879 ---capture VnicTx,VnicRx -o - | tcpdump-uw -r - -enn

  3. 他の 2 つのキャプチャポイントは、この解決策セクションの上部にある概要図に示されており、通常は、Broadcomサポートケースを通じて調査を行う際に、Broadcomのテクニカルサポートエンジニア(TSE)と連携する場合にのみ使用されます。 

Additional Information

ESXi ログにパケットキャプチャ出力は記録されません。

 
pktcap-uw コマンドに -o パラメーターを使用することで、キャプチャを .pcapng 形式のファイル保存できます。その後 Wireshark で詳細分析を行えます。
 
キャプチャされたデータ ファイルに関する注意点:
  1. pktcap-uw コマンドの -o パラメータを使用して .pcapng データを /tmp ディレクトリに保存することは避けてください。
  2. 可能なかぎり VMFS データストアをご利用ください。また VSAN データストアの使用は避けてください。ファイバーチャネル、iSCSI、NFS データストア、またはローカルディスクデータストアの方がより良い選択肢となります。
  3. データストア内に、「Packet_Captures」のような明確的なフォルダー名を作成することが推奨されます。Broadcomサポートと調査を行う場合には、「Case_####」のように、サポートケース番号を含む名前を選択するのが良い
  4. そのフォルダーにて、「HOSTNAME.VMVnicName.CapturePointNames.pcapng」のような明確的なファイル名を使用してください。 
    • 例として、「HOSTNAME.VMNAME.eth0.VnicTxRx.pcapng」が挙げられます(この場合、--switchport キャプチャを行い、--capture オプションとして VnicTx および VnicRx を使用していると仮定します)。
トラブルシューティングについて追加のご質問がある場合は、Broadcom サポートポータルでケースを作成および管理する方法をご参照ください。
 
パケットキャプチャファイルを小さく保つためのヒント - 分析やコラボレーションより簡単かつ迅速にするため
  1. ペイロードをキャプチャする必要がない場合は、次のようにします。この例ではパケットサイズを制限するスイッチを使用します。

    pktcap-uw --switchport 67108879 ---capture VnicTx,VnicRx -s 256 -o /vmfs/volumes/データストアのフルパス/Case_12345678/esxi01.switchport.67108879.VnicTxRx.pcapng &

    このように -s 256 スイッチを追加することで、キャプチャされる各パケットのサイズを最初の 256 バイトに制限します。この部分にはヘッダーが含まれており、トラブルシューティング時に通常最も重要な情報となります。

  2. また例のように IP アドレスを追加することを検討してください。

    pktcap-uw --switchport 67108879 ---capture VnicTx,VnicRx -s 256 --ip ###.###.###.### -o /vmfs/volumes/FULL_PATH_TO_DATASTORE/Case_12345678/esxi01.switchport.67108879.VnicTxRx.pcapng &

    上記の例では、調査対象の問題のある IP アドレスを ###.###.###.### に置き換えてください。たとえば、仮想マシンに設定されているデフォルトゲートウェイの IP アドレスを入力してください。

  3. プロトコルタイプを追加することを検討してください。例えば、Ping リクエストとリプライには ICMP を使用します。

    pktcap-uw --switchport 67108879 ---capture VnicTx,VnicRx -s 256 --ip ###.###.###.### --proto 0x01 -o /vmfs/volumes/FULL_PATH_TO_DATASTORE/Case_12345678/esxi01.switchport.67108879.VnicTxRx.pcapng &

    上記の例では、--proto オプションで 0x01 (ICMP) の値を使用しています。.

ウィキペディアは 100% 信頼できませんが、プロトコルタイプについて有効な情報が得られます。 List of IP protocol numbers.

関連リンク :

ESXi ホストが高負荷の状態で pktcap-uw ツールを使用する際のアドバイスとベストプラクティスについては、以下をご参照ください。 Considerations to run pktcap-uw under heavy network load.