ESXiのパケットキャプチャ方法をまとめます。pktcap-uwコマンドを使用すると、分散仮想スイッチのポートやvmkなどESXi内部のパケットを収集できます。
pktcap-uwコマンドのヘルプ
pktcap-uwはESXi内部のパケットを収集可能なツールです。このページでは全てを解説しきれませんので、適宜、以下コマンドで表示されるヘルプを見つつ操作ください。
[root@esxi141:~] pktcap-uw -h Packet Capture and Trace command usage: == Create session to capture packets == pktcap-uw [--capture <capture point>[,capture point]... | [--dir <0|input|1|output|2|inputAndOutput>] [--stage <0|pre|1|post>] [-K|--kernelside]] [--switchport <PortID> | --vmk <vmknic> | --uplink <vmnic> | --fcport [fastpathSwitchID.]<PortID> | --dvfilter <filter name> | --overlay <overlay class name>] [--lifID <lif id for vdr>] [-f [module name.]<function name>[:offset]] [-AFhP] [-p|--port <Socket PORT>] [-c|--count <number>] [-s|--snapLen <length>] [-G <seconds>] [-C <file_size>] [-o|--outfile <FILE>] [--console] [Flow filter options] <omitted>
出力形式の指定
pktcap-uwは特に出力先を指定しないと以下スクリーンショットのように標準出力としてキャプチャ結果が出力されます。
これでは読みづらいので、適宜ファイルに出力し、Wiresharkなどのツールを使った方が読みやすいでしょう。ファイルに出力するには、「-o」または「–outfile」を指定します。
pktcap-uw --vmk vmk0 \ --outfile /vmfs/volumes/local141-01/test.cap
十分キャプチャできたら、以下スクリーンショットのようにCtrl+Cでキャプチャを止めます。
あとは適宜ファイルを転送し、Wiresharkなどで分析すると良いでしょう。
もし、ファイル転送が手間と感じるならば、ESXiにインストールされたtcpdump-uwコマンドを使用しても差し支えありません。使用感はtcpdumpとほぼ同じです。
[root@esxi141:~] tcpdump-uw -r /vmfs/volumes/local141-01/test.cap reading from file /vmfs/volumes/local141-01/test.cap, link-type EN10MB (Ethernet) 09:31:34.306491 IP 192.168.2.141.49157 > 192.168.2.142.3784: BFDv1, Control, State Up, Flags: [none], length: 24 09:31:34.807664 IP 192.168.2.141.49156 > 192.168.2.131.3784: BFDv1, Control, State Up, Flags: [none], length: 24 09:31:34.907646 IP 192.168.2.141.49155 > 192.168.2.132.3784: BFDv1, Control, State Up, Flags: [none], length: 24 09:31:35.207759 IP 192.168.2.141.49157 > 192.168.2.142.3784: BFDv1, Control, State Up, Flags: [none], length: 24 09:31:35.705688 IP 192.168.2.141.49156 > 192.168.2.131.3784: BFDv1, Control, State Up, Flags: [none], length: 24 09:31:35.807653 IP 192.168.2.141.49155 > 192.168.2.132.3784: BFDv1, Control, State Up, Flags: [none], length: 24 09:31:36.105807 IP 192.168.2.141.49157 > 192.168.2.142.3784: BFDv1, Control, State Up, Flags: [none], length: 24
キャプチャポイントの指定例
物理NICでキャプチャする場合
物理NICを経由するパケットをキャプチャしたい場合は、「–uplink」オプションを指定します。
以下のコマンドで物理NICの一覧を調査できます。
[root@esxi141:~] esxcli network nic list Name PCI Device Driver Admin Status Link Status Speed Duplex MAC Address MTU Description ------ ------------ -------- ------------ ----------- ----- ------ ----------------- ---- ----------- vmnic0 0000:0b:00.0 nvmxnet3 Up Up 10000 Full 00:50:56:a3:70:4f 1500 VMware Inc. vmxnet3 Virtual Ethernet Controller vmnic1 0000:13:00.0 nvmxnet3 Up Up 10000 Full 00:50:56:a3:8b:6c 1500 VMware Inc. vmxnet3 Virtual Ethernet Controller vmnic2 0000:1b:00.0 nvmxnet3 Up Up 10000 Full 00:50:56:a3:6d:72 1600 VMware Inc. vmxnet3 Virtual Ethernet Controller vmnic3 0000:04:00.0 nvmxnet3 Up Up 10000 Full 00:50:56:a3:d8:ec 1600 VMware Inc. vmxnet3 Virtual Ethernet Controller
この物理NICを「–uplink」オプションに指定します。使用例は以下の通りです。
pktcap-uw --uplink=vmnic2 -o /vmfs/volumes/local141-01/test01.pcap
vmkでキャプチャする場合
vmk(VMkernal)を経由するパケットをキャプチャしたい場合は、「–vmk」オプションを指定します。
以下のコマンドでvmkの一覧を調査できます。
[root@esxi141:~] esxcli network ip interface ipv4 get Name IPv4 Address IPv4 Netmask IPv4 Broadcast Address Type Gateway DHCP DNS ----- ------------- ------------- --------------- ------------ ----------- -------- vmk0 192.168.1.141 255.255.255.0 192.168.1.255 STATIC 192.168.1.1 false vmk10 192.168.2.141 255.255.255.0 192.168.2.255 STATIC 192.168.2.1 false vmk50 169.254.1.1 255.255.0.0 169.254.255.255 STATIC 192.168.1.1 false
このvmkを「–vmk」オプションに指定します。使用例は以下の通りです。
pktcap-uw --vmk=vmk0 -o /vmfs/volumes/local141-01/test02.pcap
仮想スイッチのポートでキャプチャする場合
仮想スイッチのポートを経由するパケットをキャプチャしたい場合は、「–switchport」オプションを指定します。
以下のコマンドでポートの一覧を調査できます。
[root@esxi141:~] net-stats -l PortNum Type SubType SwitchName MACAddress ClientName 2214592524 4 0 DvsPortset-0 00:50:56:a3:d8:ec vmnic3 2214592526 4 0 DvsPortset-0 00:50:56:a3:6d:72 vmnic2 67108881 3 0 DvsPortset-0 00:50:56:67:ba:f4 vmk10 67108882 3 0 DvsPortset-0 00:50:56:62:79:ac vmk50 67108883 0 0 DvsPortset-0 02:50:56:56:44:52 vdr-vdrPort 67108888 5 9 DvsPortset-0 00:50:56:bc:20:ee centos50.eth0 67108889 5 9 DvsPortset-0 00:50:56:bc:38:97 centos60.eth0 2248146952 4 0 vSwitch0 00:50:56:a3:70:4f vmnic0 2248146953 4 0 vSwitch0 00:50:56:a3:8b:6c vmnic1 100663312 3 0 vSwitch0 00:50:56:a3:94:e4 vmk0
このポートIDを「–switchport」オプションに指定します。使用例は以下の通りです。
pktcap-uw --switchport=67108888 -o /vmfs/volumes/local141-01/test03.pcap