ESXiのパケットキャプチャ手法まとめ

スポンサーリンク

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は特に出力先を指定しないと以下スクリーンショットのように標準出力としてキャプチャ結果が出力されます。

ESXiのパケットキャプチャ 01

これでは読みづらいので、適宜ファイルに出力し、Wiresharkなどのツールを使った方が読みやすいでしょう。ファイルに出力するには、「-o」または「–outfile」を指定します。

pktcap-uw --vmk vmk0 \
  --outfile /vmfs/volumes/local141-01/test.cap

十分キャプチャできたら、以下スクリーンショットのようにCtrl+Cでキャプチャを止めます。

ESXiのパケットキャプチャ 02

あとは適宜ファイルを転送し、Wiresharkなどで分析すると良いでしょう。

ESXiのパケットキャプチャ 03

もし、ファイル転送が手間と感じるならば、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
タイトルとURLをコピーしました