在 ESXi 5.5 及更高版本中使用 pktcap-uw 工具
search cancel

在 ESXi 5.5 及更高版本中使用 pktcap-uw 工具

book

Article ID: 306980

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

pktcap-uw 工具是一种增强的数据包捕获和分析工具,可用于替换 tcpdump-uw 工具。默认情况下,ESXi 5.5 及更高版本中包含 pktcap-uw 工具。本文提供有关使用 pktcap-uw 工具捕获和分析数据包的信息。

注意:tcpdump-uw 工具只能在 vmkernel 接口级别捕获数据包/帧,而不能在上行链路、vSwitch 或虚拟端口级别捕获帧。新的 pktcap-uw 工具允许在虚拟化管理程序中的所有位置捕获流量,以便实现更大的灵活性和更好地进行故障排除。


Symptoms:
免责声明:本文为 Using the pktcap-uw tool in ESXi 5.5 and later 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。


Environment

VMware vSphere ESXi 6.0
VMware vSphere ESXi 5.5

Resolution

使用 pktcap-uw 工具

注意:
  1. pktcap 是单向的,且仅默认为入站方向。
  2. 入站流量方向使用 --dir 0 指定,出站流量方向使用 --dir 1 指定,但假定为入站方向。
  3. 可以并行运行两个(或更多个)单独跟踪,但稍后需要在 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格式。

    注意:要结束捕获,请务必使用 Ctrl-C 多次,而不是 Ctrl-Z,因为 Ctrl-Z 可能会使后台进程持续运行,从而阻止后续的pktcap-uw命令运行,并会报告错误:

    错误: 无法创建会话,正在退出 (error: Can't create the session, Exiting)
 
高级用法:同时跟踪多个端口
 
例如,同时跟踪特定的 vSwitch 端口及其关联的上行链路:
  1. 要获取 vSwitch 端口号,请运行以下命令:

    net-stats -l
  2. 标识并记下以下参数:

    esxtop 命令返回的端口 ID —--switchport 50331665

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

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

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

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

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

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

    kill $(lsof |grep pktcap-uw |awk '{print $1}'| sort -u)
  5. 运行此命令,检查是否所有的pktcap-uw跟踪都已停止:

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


Additional Information