硬干货!一张图弄清楚在ESXi下如何进行网络抓包
对于网络问题,抓包一直是一个比较简单方便的“大招”。由于在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下如何进行网络抓包相关推荐
- esxi vsphere的端口_硬干货!一张图弄清楚在ESXi下如何进行网络抓包
对于网络问题,抓包一直是一个比较简单方便的"大招".由于在esxi环境下可以在不同的层面下抓包,因此在什么地方抓包,怎么抓包一直让我觉得很复杂,于是每次操作之前我都要再检查一次手册 ...
- 一张图弄懂java线程的状态和生命周期
转载自 一张图弄懂java线程的状态和生命周期 上图是一个线程的生命周期状态流转图,很清楚的描绘了一个线程从创建到终止的过程. 这些状态的枚举值都定义在java.lang.Thread.State下 ...
- 一张图看懂2017双11中的网络产品和技术
摘要: 大家都知道,2017年双11又创造了新纪录,全天交易额1682亿,交易峰值32.5万笔/秒,支付峰值25.6W笔/秒,狂欢的背后是极其复杂庞大的技术系统,其中就有大量阿里云云计算相关的产品和技 ...
- 干货 | 45张图庖丁解牛18种Queue,你知道几种?
来源 | 悟空聊架构(ID:PassJava666) 在讲<21张图讲解集合的线程不安全>那一篇,我留了一个彩蛋,就是Queue(队列)还没有讲,这次我们重点来看看Java中的Queue家 ...
- 新东方 词根词缀 excel_干货 | 14张图拓展记忆高中英语所有词缀和词根!全弄懂单词更好背!...
感谢您关注瑞鑫艾斯英语公众号,如您尚未关注,请点击上方"AIS English"关注我们,获取更多知识方法.周一到周日更新,与您不见不散! 高中阶段,单词形式拓展记忆的唯一方式就是 ...
- 一张图弄明白:从零维到十维空间……给大神跪了!
零维 ▼ 让我们从一个点开始,和我们几何意义上的点一样,它没有大小.没有维度.它只是被想象出来的.作为标志一个位置的点.它什么也没有,空间.时间通通不存在,这就是零维度. 一维空间 ▼ 好的,理解了零 ...
- 一张图弄明白:从零维到十维空间
...文章版权为商老师的设计学堂个人所有... ..图片均为商老师手绘.. .违版必究,如需转载请标明出处. 事情是这样的,这周我给学生讲3dmax的课.为了让学生了解三视图我就顺便科普了一下什么是零 ...
- 一张图弄明白:从零维到十维空间(转)
转载自:https://www.sohu.com/a/116444282_482877 请前往原网址阅读,转载可能会有格式错误,仅为防止原网址不可用 零维 ▼ 让我们从一个点开始,和我们几何意义上的点 ...
- 一张图弄懂opengl的诸多库gl glu glut freeglut glew glfw之间关系
开始学习opengl,但是看opengl编程指南不同版本之间使用了一堆不同的库,概念名称全都搅起的,越看越糊涂,遂整理的一下opengl相关的一些库的名词, 才发现是不同时期不同版本不断发展的结果. ...
最新文章
- spring 两次进入拦截器_Spring Boot+Redis 扛住,瞬间千次重复提交(实例)
- 需要氪金吗_《天堂2:血盟》到底需不需要氪金?玩家:可以但是没有必要
- 蓄水池问题c语言编程,蓄水池大作战
- 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - F. 加法变乘法
- 升级MariaDB为10.1版本
- 读书印记 - 《创新者的解答》
- 10种经典机器学习算法——Python版
- Activity返回值
- 2022年4月最新面经答案总结(Java基础、数据库、JVM、计网、计操、集合、多线程、Spring)持续更新
- Oracle增加临时表空间
- 5分钟转换PDF为图片
- Ubuntu安装基础教程(No Zuo No Die)
- 光缆弹性模量计算_光纤光缆布线基础知识及系统设计
- 通过Java读取Excle中的内容
- 分享网友第一次开发EOS区块链总结的经验
- fir.im 自动打包上传
- 使用Rust开发操作系统(UEFI基本介绍)
- C++ 中的隐含 *this
- uniApp学习(8)搜索框的创建和自动获取焦点
- 搭载鸿蒙系统的摄像头,搭载鸿蒙系统的华为P50发布日期曝光
热门文章
- 一文搞定C语言指针问题
- php 去掉script,php怎么去除js
- 三维重构 c++_桐柏3d打印模型生产厂家【博通三维】-博通三维
- .tcl文件_TCL电视自己安装的软件,有声音但没有画面?详细解决步骤奉上
- 大学计算机python期末考试用什么软件_大学计算机--Python算法实践_章节测验,期末考试,慕课答案查询公众号...
- matlab charl,基于MATLAB/Simulink的双闭环SPWM变频调速系统仿真.pdf
- 小数点进位 oracle,使用多个小数点(。)对Oracle中的记录进行排序
- python数据挖掘需要的库_python数据挖掘需要学的内容
- 怎么卡我的世界服务器物品,我的世界怎么卡服务器物品 | 手游网游页游攻略大全...
- android eclipse不能创建activity,在eclipse里面开发android应用,不能新建Activity