对于网络问题,抓包一直是一个比较简单方便的“大招”。由于在esxi环境下可以在不同的层面下抓包,因此在什么地方抓包,怎么抓包一直让我觉得很复杂,于是每次操作之前我都要再检查一次手册。这次正好遇到了非常好的文档,借机会总结一下。

了解ESXi中交换机的架构

==========================

  • 我们先研究下标准交换机的结构:

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

  • 物理上联网卡

  • 标准交换机

  • 虚拟机网络

  • vmk网络

  • 我们再来看下分布式交换机的架构图

(清晰图请从文章后参考文档下载)

https://blogs.vmware.com/vsphere/files/2018/12/pktcap-overview-1024x923.png

其实也是这四部分:

  • 物理上联网卡

  • 分布式交换机

  • 虚拟机网络

  • vmk网络

确定抓包的位置

==========================

根据上面的图所示,我们可以在六个地方抓包,每个地方抓包都单独分为进/出两个方向。

  • 虚拟机网络

对虚拟机可以进行两个地方的抓包

虚拟机虚拟机网卡-vnic (标1处)

虚拟机端口组(分布式交换机侧) (标2处)

  • vmk网络

vmk 网口 (标3处)

vmk端口组(分布式交换机侧) (标4处)

  • 物理上联网卡:

物理上联网卡端口(分布式交换机侧) (标5处)

物理上联网卡  (标6处)

对虚拟机网络抓包

======================

(第一步)虚拟机准备工作

在虚拟机里ping 某一个IP地址,例如网关。

这里使用IP为10.117.23.254

(第二步)确定虚拟机使用的Port ID和物理上联网卡

方法一(推荐):

使用esxtop,按n找到虚拟机使用的port number和物理上联网卡。

但是这种方法有一个弊端:当一台主机上的VM很多的时候,有可能esxtop一个屏幕无法显示,但是esxtop又无法滚屏,因此我们使用另外一种方法。

方法二:

(1)获取vm的Port number 和 端口组名称

net-stats -l | grep 虚拟机名称

例如 :

可以得到这台VM的三个虚拟机网卡对应的三个Port number以及端口组名称

(2)搜索端口组对应的物理上联我网卡

esxcfg-info |grep 端口组名称

例如:

esxcfg-info |grep DvsPortset-0 -A1|grep Uplinks

得到上联网卡是vmnic1

(第三步)抓包操作:

当我们拿到port number和物理上联网卡后,就可以进行抓包的操作

  • 虚拟机虚拟机网卡-vnic (标1处)

pktcap-uw --switchport 83886102 --ip 10.117.23.254 --capture VnicTx -o /tmp/vnic_Tx.pcap & pktcap-uw --switchport 83886102 --ip 10.117.23.254 --capture VnicRx -o /tmp/vnic_Rx.pcap &

  • 虚拟机端口组(分布式交换机侧) (标2处)

pktcap-uw --switchport 83886102 --ip 10.117.23.254 --capture PortInput -o /tmp/VMname_PortInput.pcap & pktcap-uw --switchport 83886102 --ip 10.117.23.254 --capture PortOutput -o /tmp/VMname_PortOutput.pcap &

(第四步)终止抓包:

开启另外的终端,执行以下命令

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

对vmk网络抓包

======================

(第一步)vmk准备工作

使用vmkping命令ping目标地址

在主机上使用vmk2,ping 地址 192.168.22.76

vmkping -I vmk2 -c 1000 192.168.22.76

(第二步)获得port-number和上联网卡信息

与虚拟机抓包类似,vmk网络抓包也要先或者vmk使用的端口组和物理上联网口。这里esxtop的方法就不说了。我们使用命令行的方式来尽心:

net-stats -l|grep vmk端口

例如 net-stats -l|grep vmk2

获取port number和端口组号

获取端口组对应的物理上联网卡

esxcfg-info |grep 端口组名称

例如:

esxcfg-info |grep DvsPortset-1 -A1|grep Uplinks

(第三步)抓包操作:

当我们拿到port number和物理上联网卡后,就可以进行抓包的操作

这里以ICMP为例( --proto 0x01 )其他协议请参考:

https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers

  • vmk 网口 (标3处)

pktcap-uw --vmk vmk2 --ip 192.168.22.76 --proto 0x01 --capture TcpipTx -o /tmp/vmk2_TcpipTx.pcap & pktcap-uw --vmk vmk2 --ip 192.168.22.76 --proto 0x01  --capture TcpipRx -o /tmp/vmk2_TcpipRx.pcap &

  • vmk端口组(分布式交换机侧) (标4处)

pktcap-uw --vmk vmk2 --ip 192.168.22.76 --proto 0x01 --capture PortInput -o /tmp/vmk2_PortInput.pcap & pktcap-uw --vmk vmk2 --ip 192.168.22.76 --proto 0x01  --capture PortOutput -o /tmp/vmk2_PortOutput.pcap &

(第四步)终止抓包:

开启另外的终端,执行以下命令

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

对物理上联网卡抓包

======================

物理上联网卡抓包相对比较简单

第一步和第二步依旧是ping一个地址,并且确认物理上联网口

(第三步)抓包操作:

  • 物理上联网卡端口(分布式交换机侧) (标5处)

pktcap-uw --uplink vmnic1 --ip 10.117.23.254 --capture PortOutput -o /tmp/vmnic1_PortOutput.pcap & pktcap-uw --uplink vmnic1 --ip 10.117.23.254 --capture PortInput -o /tmp/vmnic1_PortInput.pcap &

  • 物理上联网卡  (标6处)

pktcap-uw --uplink vmnic1 --ip 10.117.23.254 --capture UplinkRcvKernel -o /tmp/vmnic1_Rcv.pcap & pktcap-uw --uplink vmnic1 --ip 10.117.23.254 --capture UplinkSndKernel -o /tmp/vmnic1_Snd.pcap &

(第四步)终止抓包:

开启另外的终端,执行以下命令

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

后续分析:

======================

最常用的使用工具是wireshark,需要单独的下载。

或者在ESXi主机上使用

tcpdump-uw -enr 输出文件

参考文档:

======================

https://blogs.vmware.com/vsphere/2018/12/esxi-network-troubleshooting-tools.html

https://blogs.vmware.com/vsphere/2018/12/understanding-the-esxi-network-iochain.html

http://www.vmwarearena.com/esxtop-limiting-your-view-no-need-to-scrollpagedown-your-esxtop-output/

https://www.virten.net/2015/10/esxi-network-troubleshooting-with-tcpdump-uw-and-pktcap-uw/

https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers

====================

硬干货!一张图弄清楚在ESXi下如何进行网络抓包相关推荐

  1. esxi vsphere的端口_硬干货!一张图弄清楚在ESXi下如何进行网络抓包

    对于网络问题,抓包一直是一个比较简单方便的"大招".由于在esxi环境下可以在不同的层面下抓包,因此在什么地方抓包,怎么抓包一直让我觉得很复杂,于是每次操作之前我都要再检查一次手册 ...

  2. 一张图弄懂java线程的状态和生命周期

    转载自 一张图弄懂java线程的状态和生命周期 上图是一个线程的生命周期状态流转图,很清楚的描绘了一个线程从创建到终止的过程. 这些状态的枚举值都定义在java.lang.Thread.State下 ...

  3. 一张图看懂2017双11中的网络产品和技术

    摘要: 大家都知道,2017年双11又创造了新纪录,全天交易额1682亿,交易峰值32.5万笔/秒,支付峰值25.6W笔/秒,狂欢的背后是极其复杂庞大的技术系统,其中就有大量阿里云云计算相关的产品和技 ...

  4. 干货 | 45张图庖丁解牛18种Queue,你知道几种?

    来源 | 悟空聊架构(ID:PassJava666) 在讲<21张图讲解集合的线程不安全>那一篇,我留了一个彩蛋,就是Queue(队列)还没有讲,这次我们重点来看看Java中的Queue家 ...

  5. 新东方 词根词缀 excel_干货 | 14张图拓展记忆高中英语所有词缀和词根!全弄懂单词更好背!...

    感谢您关注瑞鑫艾斯英语公众号,如您尚未关注,请点击上方"AIS English"关注我们,获取更多知识方法.周一到周日更新,与您不见不散! 高中阶段,单词形式拓展记忆的唯一方式就是 ...

  6. 一张图弄明白:从零维到十维空间……给大神跪了!

    零维 ▼ 让我们从一个点开始,和我们几何意义上的点一样,它没有大小.没有维度.它只是被想象出来的.作为标志一个位置的点.它什么也没有,空间.时间通通不存在,这就是零维度. 一维空间 ▼ 好的,理解了零 ...

  7. 一张图弄明白:从零维到十维空间

    ...文章版权为商老师的设计学堂个人所有... ..图片均为商老师手绘.. .违版必究,如需转载请标明出处. 事情是这样的,这周我给学生讲3dmax的课.为了让学生了解三视图我就顺便科普了一下什么是零 ...

  8. 一张图弄明白:从零维到十维空间(转)

    转载自:https://www.sohu.com/a/116444282_482877 请前往原网址阅读,转载可能会有格式错误,仅为防止原网址不可用 零维 ▼ 让我们从一个点开始,和我们几何意义上的点 ...

  9. 一张图弄懂opengl的诸多库gl glu glut freeglut glew glfw之间关系

    开始学习opengl,但是看opengl编程指南不同版本之间使用了一堆不同的库,概念名称全都搅起的,越看越糊涂,遂整理的一下opengl相关的一些库的名词, 才发现是不同时期不同版本不断发展的结果. ...

最新文章

  1. spring 两次进入拦截器_Spring Boot+Redis 扛住,瞬间千次重复提交(实例)
  2. 需要氪金吗_《天堂2:血盟》到底需不需要氪金?玩家:可以但是没有必要
  3. 蓄水池问题c语言编程,蓄水池大作战
  4. 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - F. 加法变乘法
  5. 升级MariaDB为10.1版本
  6. 读书印记 - 《创新者的解答》
  7. 10种经典机器学习算法——Python版
  8. Activity返回值
  9. 2022年4月最新面经答案总结(Java基础、数据库、JVM、计网、计操、集合、多线程、Spring)持续更新
  10. Oracle增加临时表空间
  11. 5分钟转换PDF为图片
  12. Ubuntu安装基础教程(No Zuo No Die)
  13. 光缆弹性模量计算_光纤光缆布线基础知识及系统设计
  14. 通过Java读取Excle中的内容
  15. 分享网友第一次开发EOS区块链总结的经验
  16. fir.im 自动打包上传
  17. 使用Rust开发操作系统(UEFI基本介绍)
  18. C++ 中的隐含 *this
  19. uniApp学习(8)搜索框的创建和自动获取焦点
  20. 搭载鸿蒙系统的摄像头,搭载鸿蒙系统的华为P50发布日期曝光

热门文章

  1. 一文搞定C语言指针问题
  2. php 去掉script,php怎么去除js
  3. 三维重构 c++_桐柏3d打印模型生产厂家【博通三维】-博通三维
  4. .tcl文件_TCL电视自己安装的软件,有声音但没有画面?详细解决步骤奉上
  5. 大学计算机python期末考试用什么软件_大学计算机--Python算法实践_章节测验,期末考试,慕课答案查询公众号...
  6. matlab charl,基于MATLAB/Simulink的双闭环SPWM变频调速系统仿真.pdf
  7. 小数点进位 oracle,使用多个小数点(。)对Oracle中的记录进行排序
  8. python数据挖掘需要的库_python数据挖掘需要学的内容
  9. 怎么卡我的世界服务器物品,我的世界怎么卡服务器物品 | 手游网游页游攻略大全...
  10. android eclipse不能创建activity,在eclipse里面开发android应用,不能新建Activity