当我安装 Oracle VirtualBox 时,它在我的主持人系统名为“VirtualBox Host-Only Network”。根据ipconfig /all
,这个虚拟网络适配器的MAC地址为0A-00-27-00-00-10
。我怎样才能更改该 MAC 地址?
由于我预计对此会有一些混淆,因此我简单澄清一下:我不想更改虚拟机网卡的 MAC 地址,我需要更改已在主机系统上创建的虚拟网络适配器的 MAC。
我尝试过
在 VirtualBox 中:文件 --> 首选项 --> 网络 --> 仅主机网络。网络适配器的属性不包括 MAC 地址。添加新适配器也不允许指定 MAC 地址。
我发现并尝试过此解决方案建议搜索注册表中的 MAC 地址并在那里进行更改。但是,搜索和更改均未0A0027000010
得到0A-00-27-00-00-10
任何结果。
我也尝试过使用设备管理器更改 MAC 地址但那里列出的“VirtualBox 仅主机以太网适配器”没有“高级”选项卡或任何“网络地址”等属性。
在注册表中挖掘后,我发现HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0018
其中有“VirtualBox Host-Only Ethernet Adapter”之类的键。但是没有一个键与我当前的 MAC 地址相似。
环境
我的主机系统是 Windows 7 Professional。我正在运行 VirtualBox 5.0.18。
背景
我为什么需要这个?昨天,我更新了 VirtualBox。这将 MAC 地址从 更改为0A-00-27-00-00-00
。0A-00-27-00-00-10
我使用一个使用每台机器许可证的程序,并且机器由其 MAC 地址之一标识。不幸的是,许可证已与虚拟网络适配器的 MAC 绑定。
答案1
简单明了的事实是:这在当前版本的 VirtualBox 中是不可能的。原因很容易理解,看看驱动程序的源代码:
pAdapter->MacAddr.au8[0] = 0x08 | 2; // DB: computes to 10 == 0x0A
pAdapter->MacAddr.au8[1] = 0x00;
pAdapter->MacAddr.au8[2] = 0x27;
pAdapter->MacAddr.au8[3] = (uIfIndex >> 16) & 0xFF;
pAdapter->MacAddr.au8[4] = (uIfIndex >> 8) & 0xFF;
pAdapter->MacAddr.au8[5] = uIfIndex & 0xFF;
它只是使用接口索引来创建 MAC 地址。此索引由 Windows 管理,并在初始化时提供给驱动程序NDIS _ 微型端口 _ 初始化 _ 参数NDIS_MINIPORT_INIT_PARAMETERS结构。
您可以轻松地在命令中检查索引route print
:
===========================================================================
Interface List
10...c0 7c d1 c0 37 71 ......Realtek PCIe GBE Family Controller
13...0a 00 27 00 00 0d ......VirtualBox Host-Only Ethernet Adapter
...
13 等于 0x0D,这就是 MAC 地址。
答案2
我注意到,升级到 VirtualBox 5.x 时,它一直分配一个随机 MAC 地址,并且不遵守我在 VirtualBox 4.x 下设置的 MAC 注册表设置。卸载 VirtualBox 5.x 后,“仅主机”适配器的注册表部分消失了。重新安装后,我没有看到新的 MAC 条目。
当我回滚到 VirtualBox 4.3.38 并添加 MAC 注册表设置时,VirtualBox 使用了我指定的值。看来 VirtualBox 5.x 的行为发生了变化。
还要注意,Microsoft Loopback Adapter 可能会允许您指定自己的 MAC,但请注意,只有当 MAC 位于“本地管理地址”范围内时,它才会生效。