baron tech blog

学びをアウトプットしていきたいです

VMware ESXiでパケットキャプチャ

VMware ESXiでパケットキャプチャする方法を備忘録としてまとめておきます。

はじめに

通常はESXi上のVMtcpdump すれば事足りますが、それができない場合があります。 例えば、仮想アプライアンス版のルータがパケットのCPU mirroringをサポートしていなかったりする場合等です。 そのような場合でも、ESXiでパケットキャプチャすることでトラブルシューティングを進めることができます。

下準備

ESXiのSSHを有効化しておきます。

Hostを右クリック -> Services -> Enable Secure Shell (SSH)

f:id:foobaron:20190623132133p:plain

パケットキャプチャの手順

パケットキャプチャしたいインタフェースのMACアドレスを確認

ESXiのWeb UIでネットワークアダプタMACアドレスを調べておきます。

f:id:foobaron:20190623133710p:plain

インタフェースが接続するvSwitchのポート番号を確認

net-stats コマンドにより、vSwitchの情報を表示して、キャプチャしたいインタフェースのMACアドレスからポート番号を確認します。 次の例では、arista という名前のvSwitchのポート番号 117440523 がキャプチャしたい対象です。

[esxi:~] net-stats -l
PortNum          Type SubType SwitchName       MACAddress         ClientName
117440523           5       7 arista           00:0c:29:bf:c2:08  arista-01

net-stats -h でヘルプを確認できます。

パケットをキャプチャ

pktcap-uw コマンドによりパケットをキャプチャします。 pktcap-uw -h でヘルプを確認できます。

今回は指定したvSwitchのポートでキャプチャを実施するので、次のような指定になります。

[esxi:~] pktcap-uw --switchoprt 117440523

これでパケットキャプチャができます。

pktcap-uwのオプション

pcapファイルの出力

Wireshark等でパケットを確認するためにpcapファイルに出力する際は -o オプションを付けます。 ESXiのストレージを出力先にしておくとESXiのWeb UIからダウンロードできて便利です。

[esxi:~] pktcap-uw --switchoprt 117440523 -o pkt.pcap

キャプチャする方向を指定

パケットを片方向からのみキャプチャしたい場合には --dir <方向> オプションを付けます。 pktcap-uw -h でヘルプを確認すると、vSwitch主体で方向が記載されていることがわかります。

The capture point auto selection options without --capture:                                     
        --dir <0|input|1|output|2|inputAndOutput>  (for --switchport, --vmk, --uplink, --fcport)
                The direction of flow, with respect to the vswitch:                             
                0- Input: to vswitch (Default), 1- Output: from vswitch, 2- Input and Output    

VMから見ると

  • 0 : VMからの出力パケット (VMから出力されたパケットがvSwitchのポートに入っていくため)
  • 1 : VMへの入力パケット (vSwitchのポートから出力されたパケットがVMに入っていくため)

となるので注意が必要です。

[esxi:~] pktcap-uw --switchoprt 117440523 -o pkt.pcap --dir 0

キャプチャするパケット数を指定

-c <パケット数> でキャプチャするパケット数を指定できます。

[esxi:~] pktcap-uw --switchoprt 117440523 -o pkt.pcap --dir 0 -c 10

この他、キャプチャするフローのフィルタリングオプションなどは pktcap-uw -h で一通り確認可能です。