Vmware和multicast
shixudong163.com在分析Win11主机和WSL2之间组播互通问题的过程中详见《WSL2和multicast》意外发现Vmware虚拟机桥接到Windows无线网卡后Windows主机也无法接收Vmware虚拟机发送的组播包反之则没有问题。这是由于Vmware处理桥接模式下的包发送过于简单粗暴直接将主机桥接网卡发送方向的数据包同步注入到该网卡的接收方向。在虚拟机桥接到主机无线网卡的情形下接收方向注入的数据包也使用二层nat转换后的主机无线网卡MAC作为源MAC。Vmware虚拟机发出的组播包到达主机后分为两路一路继续向外发送另一路注入到无线网卡接收方向Windows内核检测到以自身无线网卡MAC名义发出的组播包同时出现在发送和接收方向误以为产生了二层环路主动丢弃了接收方向的组播包导致Windows无法接收Vmware虚拟机发来的组播包。Windows主机发出的组播包同样分为两路实际上还有一路发往loopback注入到无线网卡接收方向的组播包也因同样的原因被Windows丢弃但并不影响Vmware虚拟机接收该组播包也不影响Windows主机通过loopback自发自收该组播包。Windows主机无法接收Vmware虚拟机发送的组播包与无法接收WSL2mirrored发送的组播包有着本质的区别前者是组播包已到主机无线网卡接收方向并能被主机抓包但后续被Windows内核丢包后者纯粹是路由问题不涉及桥接或无线网卡组播包无法发送到主机接收方向主机上也就根本谈不上抓包一说。显然无法使用后者改变组播包路由的思路来解决前者面临的问题。可通过引入Windows无线网桥来解决这一问题让Vmware虚拟机桥接到Windows无线网桥对于Vmware来说无线桥接变成了有线桥接由无线网桥负责二层nat转换。Vmware虚拟机发出的组播包被注入到无线网桥接收方向时其源MAC仍是虚拟机网卡MAC而非主机无线网卡MAC因而能被Windows主机顺利接收。当Vmware虚拟机为Linux时有一种更巧秒的办法可以解决前述问题从而无需借助Windows无线网桥。在外部网络或Windows主机上跑一个IGMP查询器同时在Linux虚拟机上执行如下四条命令后就一切OKWindows主机也能顺利接收Vmware虚拟机发来的组播包。sudo ebtables -t nat -A PREROUTING -p ipv4 --ip-proto igmp --ip-dst 224.0.0.1 -j DROPsudo ebtables -A OUTPUT -p ipv4 --ip-proto igmp --ip-dst 224.0.0.1 -j DROPsudo bash -c echo 1 /sys/class/net/br0/bridge/multicast_queriersudo bash -c echo 1 /sys/class/net/ens192/brport/multicast_to_unicast该解决思路来自于本人疫情期间关于组播学习的一些心得第一条命令不让外部网络或主机发来的查询报文被Linux网桥IGMP snooping处理阻止虚拟机外出网卡成为router port。此处需注意不能使用filter/INPUT来DROP因为其执行时点要晚于网桥IGMP snooping。第二条命令可防止虚拟机网桥自带IGMP查询器影响外部网络上的IGMP查询器。后两条命令用于启用Linux虚拟机网桥br0外出网卡ens192的mcast_to_unicast功能同样适用于有线网络只要该端口不是router port虚拟机网桥驱动将发给主机的组播包目标MAC转换成单播MAC主机无线网卡MAC就不会被Windows内核误以为二层组播环路而丢包并顺利接收。该思路的关键是外部网络上要有IGMP查询器或在Windows主机跑一个IGMP查询器在外发IGMP查询报文时也会发给自己一份。主机接收到查询报文后持续向外发送IGMP reportVmware桥接负责同步注入到Linux虚拟机确保虚拟机网桥维护的主机网卡MAC长期有效持续为mcast_to_unicast提供单播MAC。此处主机为何不能直接利用虚拟机上的IGMP查询器原因仍在于虚拟机桥接无线网卡时发出的IGMP查询报文不能被Windows主机接收因此VMware桥接也就无法主动向Linux虚拟机注入IGMP report。而外部网络或主机上的IGMP查询器可触发VMware桥接顺便向Linux虚拟机定期注入IGMP report。《WSL2和multicast》提到WSL2桥接主机无线网卡如果无线AP启用IGMP snooping功能或者外部网络上有IGMP查询器由于Windows无线网桥不支持mcast_to_unicast逆转换因此和无线AP的mcast_to_unicast功能发生冲突导致WSL2bridged无法接收外来组播包。Vmware虚拟机Linux桥接主机无线网卡也不支持mcast_to_unicast逆转换WSL2可以采用mirrored方式解决Vmware虚拟机的类似问题又该如何解决呢先透露一下答案同时使用Windows无线网桥和Linux的bridge/ebtables命令。既然Windows无线网桥不支持mcast_to_unicast逆转换那Vmware虚拟机引入Windows无线网桥的意义又何在呢虚拟机桥接无线网卡无论是Vmware或者Windows网桥都需要提供二层nat转换功能虚拟机数据包外出时负责将数据包源MAC转换为主机无线网卡MAC同时维护虚拟机源IP和主机无线网卡MAC之间多对一的映射关系。外来数据包到达主机无线网卡时如数据包目标MAC为广播/组播就直接传给虚拟机。如数据包目标MAC为主机无线网卡MAC则根据目标IP去匹配前述映射关系如匹配成功就将目标MAC转换为虚拟机MAC然后传给虚拟机。当外来单播数据包目标IP为未知IP时必然无法匹配映射关系目标MAC为主机无线网卡MAC的unicast组播包显然也符合这一情形。对于这些匹配失败的外来数据包Vmware和Windows网桥各自的二层nat转换处理机制并不相同。VMware虚拟机桥接主机无线网卡时Vmware的二层nat转换提供了额外的安全防护不会将前述匹配失败的外来数据包传给虚拟机。而改为桥接Windows无线网桥后由无线网桥负责二层nat转换但其功能相对简单会把前述匹配失败的外来数据包原封不动传给Vmware。对于Vmware来说无线桥接变成了有线桥接不再需要二层nat转换因此也是照单全收后如数传给虚拟机完全由虚拟机去DROP不需要的数据包。虚拟机桥接无线网桥后来自无线AP的unicast组播包能够到达虚拟机但因目标MAC为主机无线网卡MAC和虚拟机MAC不一致包类型被标记为PACKET_OTHERHOST后续被虚拟机三层DROP导致虚拟机仍然无法接收外来组播包。这时就轮到bridge/etables出场了在虚拟机上执行如下两条命令后也一切OK不再受无线AP启用mcast_to_unicast影响虚拟机能顺利接收外来组播包。sudo ebtables -t nat -A PREROUTING -p ipv4 --ip-proto igmp --ip-dst 224.0.0.1 -j redirectsudo ebtables -t nat -A PREROUTING -p ipv4 --ip-proto udp --ip-dst 224.0.0.0/4 -j redirect这两条命令就是将外来的unicast组播包目标MAC从主机网卡MAC修改为Linux网桥MAC同时修改包类型为PACKET_HOST使之能被虚拟机三层进行常规处理详见《Linux二层包类型对网络功能的影响分析》之二“包类型对桥的影响”。第一条命令允许虚拟机接收外部IGMP查询器发来的IGMP查询报文后续虚拟机就能向外发送IGMP report外来组播数据包就不会受到IGMP snooping影响能够发往虚拟机。第二条命令允许虚拟机接收外来组播数据包并将其交给上层组播接收程序。在《WSL2和multicast》还提到当Vmware虚拟机桥接的主机无线网卡固件具有multicast filter特性时Vmware本身能使主机无线网卡multicast过滤功能失效解除了主机无线网卡拦截外部组播包的隐患。改为桥接Windows无线网桥后这一隐性福利消失了。但由于无线AP目前大都支持mcast_to_unicast外来组播包到达主机无线网卡时已变为unicast组播包不会被主机无线网卡拦截。外部网络上的IGMP查询器能使Vmware虚拟机定期发出IGMP report让mcast_to_unicast持续保持激活便可对冲掉主机无线网卡的multicast filter特性同样可以解除掉主机无线网卡拦截外部组播包的隐患。最后顺便补充一下对于Vmware虚拟机桥接无线网桥或无线网卡的情形外来数据包到达主机无线网卡时其目标MAC要么是广播/组播要么就是主机无线网卡MAC。而且由于ARP协议在默默起作用外来数据包目标IP要么也是广播/组播要么就是主机IP或虚拟机IP理论上不可能出现未知IP不包括unicast组播包这种特殊情况。要验证二层nat转换对未知IP的处理机制可以手工修改虚拟机IP并用iptables阻止外出的IGMP/UDP/TCP数据包然后在外部设备上将该IP静态映射到主机无线网卡MAC或者在主机上将该IP静态映射到虚拟机MAC。如虚拟机不发送Gratuitous ARPLinux默认不发送除非虚拟机先ping外部设备或主机否则外部设备或主机永远无法ping通虚拟机修改后的IP。如虚拟机桥接无线网桥虚拟机上能抓到目标MAC为主机无线网卡MAC的外来ping包在组播接收程序初始发出的IGMP report超时前还能抓到目标MAC为主机无线网卡MAC的外来unicast组播包。如虚拟机直接桥接无线网卡由于Vmware二层nat转换额外提供的安全防护机制虚拟机上根本抓不到上述包。这一区别也正是Vmware虚拟机需要引入Windows无线网桥的意义所在。然而本文解决方案却无法适用于WSL2bridged和桥接无线网卡的Hyper-v虚拟机尽管这两者本来就必须使用Windows无线网桥。这是由于VMware采用的是Hub技术而WSL2桥接所依赖的Hyper-v使用了Switch技术。目标MAC为主机无线网卡MAC的外来unicast组播包直接被Hyper-v交换机转发到了主机vEthernet网卡根本到不了WSL2bridged和Hyper-v虚拟机自然也就无法像Vmware那样在虚拟机内部做进一步处理了。

相关新闻

深度拆解网校系统架构:从核心模块到微服务演进实战

深度拆解网校系统架构:从核心模块到微服务演进实战

简介:E启学网校系统 v1.2 是一款面向计算机专业学生与初级Web开发者的在线教育平台开源项目,适用于毕业设计、课程实践及二次开发学习,聚焦解决教育机构快速搭建功能完备网校系统的实际需求。压缩包共2000个文件,主体为685个HTML页…

2026/8/30 19:04:29 阅读更多 →
MFC对话框与NT服务融合:双模式Windows程序开发实战

MFC对话框与NT服务融合:双模式Windows程序开发实战

简介:本资源是一个基于MFC对话框实现的NT服务程序完整开发框架,面向Windows系统级开发人员及C中级以上开发者,解决后台服务程序难以调试、配置不直观、控制逻辑耦合度高等典型问题。压缩包共16个文件(24KB)&#xff0c…

2026/8/30 19:04:29 阅读更多 →
2026论文降重工具怎么选?五款主流软件横评实测

2026论文降重工具怎么选?五款主流软件横评实测

查重报告弹出来的那一刻,标红段落像斑马线一样铺满屏幕,导师的消息还悬在对话框里没回。降重这件事,工具选对了能省下一大半时间,选错了就是在原文和同义词之间反复打转。这篇横评选了五款主流产品——AIBiye、AICheck、Passbug、…

2026/8/30 19:04:29 阅读更多 →

最新新闻

用x64dbg还原C代码:从反汇编到可读模型的实战流程

用x64dbg还原C代码:从反汇编到可读模型的实战流程

做逆向时间长了,会经常遇到一个问题:明明手边有 x32dbg 或 x64dbg,也能单步跑起来,但面对反汇编窗口里的一长串指令,还是说不清楚这段代码到底在干什么。尤其是想把它还原成 C 语言代码时,很多人会陷入两种…

2026/8/31 21:01:27 阅读更多 →
HyperMesh 2021 模型管理与 3D 网格质量检查全流程详解

HyperMesh 2021 模型管理与 3D 网格质量检查全流程详解

HyperMesh 2021 是 Altair 推出的有限元前处理软件,在整车结构、零部件强度、电子产品结构分析、航空航天有限元建模中经常被用来完成几何清理、网格划分、模型装配和求解器卡片设置。第一次接触 HyperMesh 时,很多人会把注意力放在画网格上,…

2026/8/31 21:01:27 阅读更多 →
Hypermesh对称边界条件设置:从原理到实操的完整指南

Hypermesh对称边界条件设置:从原理到实操的完整指南

对称边界条件是 CAE 工程师在 Hypermesh 前处理中一定会遇到的功能,但很多人对它的理解停留在“模型切一半,把切口固定住”这个层面。我在协助项目排查时见过不少案例:明明按对称面加了约束,求解结果却不对称;或者模型…

2026/8/31 21:01:27 阅读更多 →
AI熟肉制作全流程:Whisper语音识别+大模型翻译+ffmpeg 4K压制实战

AI熟肉制作全流程:Whisper语音识别+大模型翻译+ffmpeg 4K压制实战

相信不少关注视频制作和 AI 工具链的朋友,最近都看到过类似“【4K/AI熟肉】”这样前缀的视频标题。一开始我也以为这只是普通的字幕组作品,直到自己动手走了一遍流程才发现,这里面其实藏着一套相当成熟的技术链路:从视频源处理、语…

2026/8/31 21:01:27 阅读更多 →
Rfclt解析:TS 7.0时代如何优雅获取运行时类型元数据

Rfclt解析:TS 7.0时代如何优雅获取运行时类型元数据

先给结论:Rfclt 这类方案真正改变的不是“TypeScript 有没有类型”,而是“类型信息在程序运行后还留不留在那里”。如果你正在做接口入参校验、RPC 参数解析、ORM 实体映射,或者想给低代码平台生成表单定义,这篇文章值得读完。 过…

2026/8/31 21:01:27 阅读更多 →
华为Ascend C算子开发认证中级:tanh_custom完整代码实战

华为Ascend C算子开发认证中级:tanh_custom完整代码实战

简介:本资源是面向昇腾AI开发者与华为Ascend C算子开发能力认证(中级)备考人员的实战代码包,聚焦NPU异构计算场景下自定义Sigmoid算子的端到端实现。资源完整覆盖kernel侧核函数开发、host侧Tiling结构体设计、Float16数据类型适配…

2026/8/31 21:00:26 阅读更多 →

日新闻

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

接到一个仪表类项目,要在 LAT1189 上输出几种不同波形:正弦、三角、带可调死区的脉冲,频率和幅度都得能实时改。板子上没有 DAC,就一个定时器加几个 DMA 通道。我一开始觉得在定时器中断里改比较寄存器也能应付,后来把…

2026/8/31 0:00:05 阅读更多 →
Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

前两周调试一块带着Cortex-M3内核的板子,IDE里下载固件时突然弹出一行刺眼的错误: error: flash download failed - cortex-m3 。这种报错在嵌入式开发里太常见了,常见到很多人第一反应就是换根数据线、重插一下调试器,但重启三…

2026/8/31 0:00:05 阅读更多 →
STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

做STM32 GUI开发的朋友应该都有体会——界面搭得再漂亮,一旦屏幕切换卡成PPT,整个产品的档次瞬间就没了。早期我在LAT1212这个基于STM32的GUI工程上用TouchGFX做二次开发,最头疼的不是画界面,而是怎么让切换动画既流畅又自然。Tou…

2026/8/31 0:00:05 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/8/31 13:13:27 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/8/31 9:02:46 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/8/31 14:32:14 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/30 21:10:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/30 18:07:21 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/30 21:10:44 阅读更多 →