在esxi环境下可以在不同的层面下抓包,需要明白在什么地方抓包,怎么抓包才是关键,否则可能导致抓包不完整,或无法抓到自己需要的包。

了解抓包位置

先研究下虚拟化的结构:

   下面这张图是一台ESXi主机使用标准交换机的网络架构。简单来说分为四部分:

  •    物理上联网卡
  •    标准交换机
  •    虚拟机网络
  •    vmk网络

VMware虚拟化抓包_pktcap-uw

上图连接地址

按照主机流量(图中绿色箭头--上下双向流量)分为6个地方,分别对应不同的抓包需求。常见操作一般在物理网卡和虚机网络两个层 操作比较多。

VMware虚拟化抓包_exsi抓包_02

VMware虚拟化抓包_exsi抓包_03

抓包步骤

  1. 确认需要抓包的主机信息,包含主机的MAC地址和原始主机名、宿主机地址;
  2. 登录ssh到宿主机,确认虚机交换机端口、主机mac、上联物理网卡名称等;
  3. 开始抓包;
  4. 终止抓包;
  5. 分析

例:上面写的太复杂,可以直接在虚拟网络或物理网卡抓包,这两个地方都经过。

主机信息:(该主机名被改过,不是原始vm名,所以通过mac地址可以确认)

VMware虚拟化抓包_pktcap-uw_04

登录ssh到宿主机,获取虚机交换机端口、主机mac、上联物理网卡名【 net-stats -l 】

VMware虚拟化抓包_exsi抓包_05

上图中,通过mac地址(因为主机名改过)可以确认,当前主机使用的交换机端口为33554473,交换机名称为vswitch0。同时看到DvsPort和vmk0等信息。

开始抓包,可同时 多个进行。虚拟机端口组(标2处)

pktcap-uw --switchport 33554473 --ip 117.132.191.126 --capture PortInput -o /tmp/VMname_PortInput1.pcap & pktcap-uw --switchport 33554473  --ip 117.132.191.126 --capture PortOutput -o /tmp/VMname_PortOutput1.pcap &

VMware虚拟化抓包_exsi抓包_06

等待一会儿,

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

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

分析:通过wireshark工具

VMware虚拟化抓包_exsi抓包_07

VMware虚拟化抓包_pktcap-uw_08