VMware ESXiでパケットキャプチャ
VMware ESXiでパケットキャプチャする方法を備忘録としてまとめておきます。
はじめに
通常はESXi上のVMで tcpdump
すれば事足りますが、それができない場合があります。
例えば、仮想アプライアンス版のルータがパケットのCPU mirroringをサポートしていなかったりする場合等です。
そのような場合でも、ESXiでパケットキャプチャすることでトラブルシューティングを進めることができます。
下準備
ESXiのSSHを有効化しておきます。
Hostを右クリック -> Services -> Enable Secure Shell (SSH)
パケットキャプチャの手順
パケットキャプチャしたいインタフェースのMACアドレスを確認
ESXiのWeb UIでネットワークアダプタのMACアドレスを調べておきます。
インタフェースが接続する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
で一通り確認可能です。