LOADING STUFF...

ESXi主机上使用pktcap-uw进行抓包

虚拟化11个月前发布 刘丰源
154 0 0

使用 pktcap-uw 工具

pktcap 是单向的,且仅默认为入站方向。
在 vSphere 6.5 及更早版本中,入站流量方向使用 --dir 0 指定,出站流量方向使用 --dir 1 指定。无法同时指定两个方向的流量。但是在 vSphere 6.7 及更高版本中,入站流量方向使用 --dir 0 指定,出站流量方向使用 --dir 1 指定,--dir 2为双向。

可以并行运行两个(或更多个)单独跟踪,但稍后需要在 wireshark 中合并。
要获得基本的帮助和语法信息,请使用 -h 选项:

- pktcap-uw -h |more

要查看对 vmkernel 端口流量的实时捕获

- pktcap-uw --vmk vmkX

例如,要捕获 vmk0 上的帧/数据包

- pktcap-uw --vmk vmk0

要查看主机 vmnic 上的特定物理网卡的实时捕获:

- pktcap-uw --uplink vmnicX

例如,要捕获 vmnic7 上的帧/数据包:

- pktcap-uw --uplink vmnic7

要查看对虚拟机特定 vSwitch 端口的实时捕获,请使用--switchport选项:

- pktcap-uw --switchport switchportnumber

例如,要捕获在连接到dvSwitchport 8的虚拟机之间往返的帧或数据包:

- pktcap-uw --switchport 8

要捕获对文件的输出,请使用-o选项:

- pktcap-uw --vmk vmk# -ofile.pcap

例如,要捕获来自 vmk0 的数据包,并保存到 /tmp 目录下的 test.pcap 文件:

- pktcap-uw --vmk vmk0 -o /tmp/test.pcap

注意:
当您使用 -o 选项时,无论其他设置如何,输出都采用 pcap 格式。
要指定 pktcap-uw 运行的秒数,使用 -G
要指定 pktcap-uw 运行时需要达到的输出文件大小(单位为兆字节),使用 -C
要结束捕获,请务必使用 Ctrl-C 多次,而不是 Ctrl-Z,因为 Ctrl-Z 可能会使后台进程持续运行,从而阻止后续的 pktcap-uw 命令运行,并会报告错误:

错误: 无法创建会话,正在退出 (error: Can't create the session, Exiting)
捕获丢弃的数据包:

pktcap-uw --capture Drop [filter_options] [--outfile pcap_file_path [--ng]] [--count number_of_packets]

高级用法:同时跟踪多个端口

例如,同时跟踪特定的 vSwitch 端口及其关联的上行链路:

要获取 vSwitch 端口号,请运行以下命令:

net-stats -l

标识并记下以下参数:
esxtop 命令返回的端口 ID —--switchport 50331665

要跟踪的 vmnic2 物理端口 —--uplink vmnic2 -

pcap 输出文件的位置 —/tmp/vmnic2.pcap

运行 pktcap-uw 命令,在两个点同时捕获数据包:

pktcap-uw --switchport 50331665 -o /tmp/50331665.pcap & pktcap-uw --uplink vmnic2 -o /tmp/vmnic2.pcap &

注意:此处假定命令 shell 为 Bash shell。因此,如果在 vswitch 上有多个上行链路,则只需在结尾 & 后添加命令,并在结尾处添加一个 &。

您可以使用 kill 命令停止pktcap-uw跟踪。

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

运行此命令,检查是否所有的pktcap-uw跟踪都已停止:

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

实操

物理网卡抓包

查看物理适配器列表:

esxcli network nic list

查询虚拟机网口对应的物理网卡:

esxtop -> n 与 net-stats -l配合使用通过PORT-ID确认虚拟机eth口与物理网卡的vmnic的对应关系

物理网卡抓包:

pktcap-uw --uplink [vmnic1] -o Snd2-1.pcap (--dir 1:监控离开VDS的数据包;--dir 0:监控进入VDS的数据包 (不指定默认为进入VDS的包) ;--count 100:限制数据包数量)

VDS抓包

查看虚拟机端口对应的VDS端口:

esxtop –> n

查看虚拟机VDS入口:

net-stats -l

VDS抓包:

pktcap-uw --switchport [PORT-ID] -o Rcv12.pcap

vmkernel抓包

vmknic抓包:

pktcap-uw –vmk vmk0 –c 25 –o vmknic_capture.pcap

常用可选参数

--stage {0|1}

捕获更靠近其源或目标的数据包。使用此信息可检查数据包在遍历堆栈中各个点时的变化情况,0 表示更靠近源的流量,1 表示更靠近目标的流量。

--dir {0|1|2}

根据流量相对于虚拟交换机的方向捕获数据包。
0 代表入站流量,1 代表出站流量,2 代表双向流量。
默认情况下,pktcap-uw 实用程序捕获输入的流量。

--capture capture_point

-A | --availpoints
查看 pktcap-uw 实用程序支持的所有捕获点。

更多用法见官方手册使用 pktcap-uw 实用程序捕获数据包
目录

© 版权声明

相关文章

暂无评论

暂无评论...