1

When I installed Oracle VirtualBox, it created a network adapter on my host system called "VirtualBox Host-Only Network". According to ipconfig /all, this virtual network adapter has the MAC address 0A-00-27-00-00-10. How can I change that MAC address?

As I expect some confusion about this, a short clarification: I don't want to change the MAC address of a virtual machine's network card, I need to change the MAC of the virtual network adapter that has been created on my host system.

What I tried

In VirtualBox: File --> Preferences --> Network --> Host-only Networks. The properties of the network adapter do not include the MAC address. Adding a new adapter doesn't allow to specify a MAC address either.

I found and tried this solution that suggests to search the registry for the MAC address and change it there. However, neither searching for 0A0027000010 nor 0A-00-27-00-00-10 delivers any results.

I also tried to change the MAC address using the Device Manager but the "VirtualBox Host-Only Ethernet Adapter" listed there doesn't have an "Advanced" tab or any properties like "Network Address".

Some digging in the registry brought me to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0018 which has keys like "VirtualBox Host-Only Ethernet Adapter". But none of the keys resembles my current MAC address.

Environment

My host system is Windows 7 Professional. I'm running VirtualBox 5.0.18.

Background

Why do I need this? Yesterday, I updated VirtualBox. This changed the MAC address from 0A-00-27-00-00-00 to 0A-00-27-00-00-10. I use a program which uses per-machine licences and a machine is identified by one of its MAC addresses. Unfortunately, the licence has been tied to the MAC of the virtual network adapter.

1

The plain and simple truth is: This is not possible in current versions of VirtualBox. The reason can be easily understood when looking at the driver’s source code:

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;

It simply uses the interface index to create a MAC address. This index is managed by Windows and provided to the driver at initialization in the NDIS_MINIPORT_INIT_PARAMETERS structure.

You can easily inspect the index in the route print command:

===========================================================================
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 equals 0x0D, and that’s the MAC address.

1

I noticed when upgrading to VirtualBox 5.x, it kept assigning a random MAC address and did not honor the MAC registry setting that I had put in place under VirtualBox 4.x. When I uninstalled VirtualBox 5.x, the registry section for the Host Only adapter went away. Upon re-install, I did not see a new MAC entry.

When I rolled back to VirtualBox 4.3.38 and added the MAC registry setting, VirtualBox used the value I specified. It seems the behavior changed for VirtualBox 5.x.

Also note that a Microsoft Loopback Adapter might work to let you specify your own MAC, but note that the MAC will only take effect if it is in the range of "locally administered addresses".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.