虚拟交换机本身不捕获流量,需通过配置混杂模式或端口镜像将流量导向监听VM,再用Wireshark、tcpdump等工具抓包分析。
虚拟交换机本身不直接“捕获”流量包,它只是转发数据的虚拟网络设备。要实时捕获经过虚拟交换机的流量,关键在于把监控工具接入其数据路径——常用且可靠的方式是配置端口镜像(span)或启用混杂模式(promiscuous mode),再配合抓包工具运行在监听虚拟机中。
一、确认虚拟交换机支持监控能力
VMware vSphere ESXi 的标准虚拟交换机(vSwitch)和分布式交换机(vDS)均支持以下两种主流监控机制:
- 端口组混杂模式:允许连接到该端口组的虚拟机接收所有流经该端口组的数据帧(不仅是发给它的),这是最常用、最轻量的捕获前提;
- 端口镜像(SPAN / Port Mirroring):vDS 支持原生端口镜像功能,可将指定上行链路、端口组或虚拟机端口的进出流量复制一份发送到监控端口,适合高保真、多源聚合场景。
注意:标准 vSwitch 不支持内置端口镜像,如需镜像必须依赖物理交换机 SPAN 或使用混杂模式替代。
二、配置混杂模式端口组(适用于大多数场景)
这是最快速落地的方式,适合东西向或南北向流量的初步分析:
Windows 命令行编码与兼容规范。涵盖 GBK/UTF-8 编码、PowerShell/pwsh 互操作、Python/Node.js、Git 配置及代码生成规则。适用于 Windows 10/11 + MSYS2/Git Bash 环境下的所有命令行操作。
- 在 vSphere Client 中进入「网络」→「端口组」→ 新建或编辑目标端口组;
- 展开「安全」选项,将「混杂模式」设为「已接受」;
- 同时建议将「MAC 地址更改」和「伪传输」也设为「已接受」,避免虚拟机因抓包驱动修改 MAC 导致丢包;
- 将用于抓包的虚拟机(如安装了 Wireshark、Sniffnet 或 tcpdump 的 Linux VM)连接到该端口组。
此时该虚拟机就能收到同端口组内其他虚拟机之间的二层广播/多播帧,以及发往外部的所有单播帧(前提是虚拟交换机未做 VLAN 隔离或已配置 trunk 模式,VLAN ID 填 4095 可通吃全部 VLAN)。
三、部署并运行抓包工具
根据需求选择合适工具,无需复杂配置即可开始捕获:
- Wireshark(GUI,适合分析):在监听 VM 中启动,选择对应网卡(如 ens160),点击「Start」;支持过滤器(如 ip.addr == 192.168.10.5)快速聚焦;
- tcpdump(命令行,适合服务器环境):运行 sudo tcpdump -i ens160 -w capture.pcap 保存原始包,后续可导入 Wireshark 分析;
- Sniffnet(轻量可视化):适合快速定位进程级通信对象,界面直观看「谁连了谁、用了多少」,对混杂模式下的流量同样有效;
- ntopng:若需长期统计+协议识别+Web 界面展示,可部署 ntopng 服务,将其监听网卡绑定到混杂端口组,自动解析 HTTP、DNS、MySQL 等应用层协议。
四、注意事项与避坑点
实际操作中容易忽略但影响结果的关键细节:
- 监听虚拟机必须与被监控流量处于同一端口组或 VLAN(混杂模式下跨 VLAN 需 trunk 配置);
- ESXi 主机防火墙默认可能拦截 ICMP 或 UDP 流量,如用 sFlow 或 NetFlow 方式回传,需检查防火墙规则;
- 混杂模式仅对二层同广播域流量有效;若虚拟机走的是不同 vSwitch 或启用了私有 VLAN(PVLAN),则无法捕获;
- 生产环境开启混杂模式前应评估安全策略合规性,避免敏感流量被非授权 VM 截获;
- 高吞吐场景下,监听 VM 的 CPU 和磁盘 I/O 可能成为瓶颈,建议使用 SSD 存储 + 至少 2 核 CPU + 关闭无关服务。

















