问题
昨天遇到了一个问题。一台ESXi 6.7的宿主机,启动了一个透传USB硬盘的Debian 11的虚拟机,再内部又启动了一个kvm的嵌套的OpenWRT,通过桥接网卡连接到外部网络。一开始没有建网桥的时候,Debian 11可以正常上网。但是建立了网桥后,过了一会儿就上不了网了。试了下使用本地非USB硬盘的时候是好的,这该如何解决呢?
方案
尝试关闭嵌套虚拟化,降低内核到4.19,都没有效果。难道非得使用内置的磁盘么?
经过搜索,网上也没有好的方案,参见这个链接,描述了和我一样的情况。
经过了一段时间的折腾,终于解决了问题。在ESXi的网络
配置页,选择对应的虚拟交换机,我是vStwitch0
。点击编辑设置
,展开安全
配置项,将混杂模式
改为接受
,保存后,Debian 11就能上网了。
后记
按理说一台标准交换机,无论是否透传USB设备,对允许传输非物理网卡MAC地址的数据包没有影响,但是实际上却产生了差异。后来明确接收非物理网卡的MAC地址的数据包,才解决了问题。ESXi在这点上行为还是有些怪异的。鉴于虚拟机配置时是指定了MAC地址的,所以ESXi的交换机确实比一般的交换机多知道了不少信息。或许这是为了性能和安全考虑的措施,但确实不容易被一般用户注意到。