在esxi环境下可以在不同的层面下抓包,需要明白在什么地方抓包,怎么抓包才是关键,否则可能导致抓包不完整,或无法抓到自己需要的包。
了解抓包位置
先研究下虚拟化的结构:
下面这张图是一台ESXi主机使用标准交换机的网络架构。简单来说分为四部分:
- 物理上联网卡
- 标准交换机
- 虚拟机网络
- vmk网络
按照主机流量(图中绿色箭头--上下双向流量)分为6个地方,分别对应不同的抓包需求。常见操作一般在物理网卡和虚机网络两个层 操作比较多。
抓包步骤
- 确认需要抓包的主机信息,包含主机的MAC地址和原始主机名、宿主机地址;
- 登录ssh到宿主机,确认虚机交换机端口、主机mac、上联物理网卡名称等;
- 开始抓包;
- 终止抓包;
- 分析
例:上面写的太复杂,可以直接在虚拟网络或物理网卡抓包,这两个地方都经过。
主机信息:(该主机名被改过,不是原始vm名,所以通过mac地址可以确认)
登录ssh到宿主机,获取虚机交换机端口、主机mac、上联物理网卡名【 net-stats -l 】
上图中,通过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 &
等待一会儿,
结束抓包 kill $(lsof |grep pktcap-uw |awk '{print $1}'| sort -u)
kill $(lsof |grep pktcap-uw |awk '{print $1}'| sort -u)
分析:通过wireshark工具