Loading content...
Every MAC address has an origin—a point where it was first assigned to a device or interface. Understanding this assignment process is crucial for network administration, security analysis, device identification, and troubleshooting.
The MAC address assignment ecosystem involves multiple parties and mechanisms:
This page explores each of these mechanisms in depth, revealing how the apparently simple 'hardware address' is actually managed through a sophisticated global system.
By the end of this page, you will understand the complete lifecycle of MAC address assignment—from IEEE OUI registration through hardware manufacturing, virtual machine address generation, locally administered addressing for special purposes, and modern MAC randomization for privacy protection.
The IEEE Registration Authority (IEEE-RA) manages the global MAC address assignment system, ensuring that addresses remain globally unique across all manufacturers and devices worldwide.
The IEEE-RA's responsibilities:
| Block Type | Size | OUI Portion | Addresses per Block | Typical Use |
|---|---|---|---|---|
| MA-L (Large) | 24-bit OUI | First 3 bytes fixed | 16,777,216 (2^24) | Large manufacturers |
| MA-M (Medium) | 28-bit OUI | First 3.5 bytes fixed | 1,048,576 (2^20) | Medium-sized vendors |
| MA-S (Small) | 36-bit OUI | First 4.5 bytes fixed | 4,096 (2^12) | Small companies, specialized |
| IAB (Individual) | 36-bit | First 4.5 bytes fixed | 4,096 (2^12) | Legacy small blocks (discontinued) |
Registration costs and process:
As of current IEEE pricing (subject to change):
| Block Type | Approximate Fee (USD) | Annual Maintenance |
|---|---|---|
| MA-L | ~$3,000 | None |
| MA-M | ~$1,800 | None |
| MA-S | ~$800 | None |
Registration steps:
Confidential registrations:
Companies can request confidential OUI registrations (at additional cost). These OUIs won't appear in the public database with company identification, useful for:
The IEEE publishes a downloadable OUI database at https://regauth.standards.ieee.org/standards-ra-web/pub/view.html. This database is invaluable for device identification—given a MAC address, you can identify the manufacturer. Many network monitoring tools integrate this database for automatic vendor identification.
Example OUI registrations:
| OUI | Assignment | Company |
|---|---|---|
00:00:0C | MA-L | Cisco Systems |
00:50:56 | MA-L | VMware (virtual machines) |
DC:A6:32 | MA-L | Raspberry Pi Trading Ltd |
00:1A:11 | MA-L | Google, Inc. |
3C:22:FB | MA-L | Apple, Inc. |
F8:1D:78 | MA-L | Intel Corporate |
Note: Major manufacturers often hold multiple OUIs—Apple, Intel, and Cisco each have dozens assigned due to their production volumes.
When a network interface card (NIC) is manufactured, a globally unique MAC address is permanently encoded into the hardware. This 'burned-in address' (BIA) serves as the device's default identity.
Manufacturing process:
Storage locations:
| Storage Type | Description | Characteristics |
|---|---|---|
| ROM (Read-Only Memory) | Address burned into chip at manufacture | Permanent, cannot be changed |
| EEPROM/Flash | Electronically erasable storage | Technically modifiable (may void warranty) |
| Registers | Address loaded into operational registers at boot | Software can override with different address |
The BIA vs operational address distinction:
Modern NICs support separate concepts:
Burned-In Address (BIA): The factory-programmed address stored in EEPROM/ROM. This is the 'permanent' address.
Operational Address (LAA): The address actually used for network communication. By default, this equals the BIA, but can be overridden.
When you view a NIC's properties, you may see both:
Windows: "Network Address" in adapter properties = LAA (configurable)
"Physical Address" reported = Current operational address
Linux: /sys/class/net/eth0/address = Current operational address
ethtool -P eth0 = Permanent (BIA) address
Why separate operational addresses?
12345678910111213
# View current operational MAC addressip link show eth0 | grep link/ether# link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff # View permanent (burned-in) addressethtool -P eth0# Permanent address: 00:1a:2b:3c:4d:5e # Note: These may differ if LAA is configured # Check if address has been changed from permanentcat /sys/class/net/eth0/addr_assign_type# 0 = Permanent, 1 = Random, 2 = Stolen/Inherited, 3 = Set by userWhile extremely rare, duplicate burned-in addresses can occur due to manufacturing defects or database errors. On a single network segment, duplicate MACs cause serious problems—intermittent connectivity, address flapping, and unpredictable behavior. Detecting duplicates requires careful analysis of ARP tables or switch MAC tables.
Locally Administered Addresses (LAAs) are MAC addresses assigned by local administrators, virtualization platforms, or software—rather than by the hardware manufacturer. They are distinguished by the U/L bit (bit 1 of the first byte) being set to 1.
Characteristics of LAAs:
| Characteristic | Universally Administered | Locally Administered |
|---|---|---|
| U/L Bit | 0 | 1 |
| First Byte Hex | 0x00, 0x04, 0x08, etc. | 0x02, 0x06, 0x0A, etc. |
| Assignment Authority | IEEE via manufacturer | Local administrator/software |
| Uniqueness Scope | Global | Local network only |
| Use Case | Physical NICs | VMs, containers, overrides |
Common LAA use cases:
1234567891011121314151617181920212223242526
# Set a locally administered address on Linux# First byte: 02 (unicast, locally administered) # Temporary change (lost on reboot/interface restart)sudo ip link set dev eth0 downsudo ip link set dev eth0 address 02:00:00:00:00:01sudo ip link set dev eth0 up # Verify changeip link show eth0# link/ether 02:00:00:00:00:01 brd ff:ff:ff:ff:ff:ff # Permanent configuration varies by distribution:# Ubuntu/Debian (Netplan): /etc/netplan/*.yaml# RHEL/CentOS: /etc/sysconfig/network-scripts/ifcfg-eth0# systemd-networkd: /etc/systemd/network/*.link # Example Netplan (Ubuntu 20.04+):# network:# ethernets:# eth0:# macaddress: 02:00:00:00:00:01 # Verify address typecat /sys/class/net/eth0/addr_assign_type# Should show "3" for manually setUnlike universally administered addresses, LAAs are NOT globally coordinated. If two devices on the same network segment are assigned the same LAA (by different administrators or careless scripting), a MAC address collision occurs—causing unpredictable connectivity issues. Always maintain documentation of manually assigned LAAs.
Virtual machines require MAC addresses for their virtual network interfaces, but they don't have physical hardware with burned-in addresses. Hypervisors implement various strategies to generate and manage VM MAC addresses.
Hypervisor MAC assignment strategies:
| Hypervisor | Default OUI/Prefix | Generation Method | Uniqueness Scope |
|---|---|---|---|
| VMware (ESXi/Workstation) | 00:50:56 (static) or 00:0C:29 (auto) | Derived from UUID + NIC index | Unique within vCenter/host |
| Microsoft Hyper-V | 00:15:5D | Algorithm based on GUID + host ID | Unique within host cluster |
| KVM/QEMU (libvirt) | 52:54:00 (default) | Random or configured | Per-definition; admin managed |
| VirtualBox | 08:00:27 | Based on VM UUID | Unique per VM instance |
| Xen | 00:16:3E | Configuration or random | Configurable |
| Docker | 02:42:AC:XX:XX:XX | Derived from container IP | Unique per Docker network |
VMware MAC address ranges:
VMware uses several registered OUIs:
| OUI | Usage |
|---|---|
00:50:56:00-3F:XX:XX | Static MACs (manually assigned) |
00:50:56:40-7F:XX:XX | Generated by VMware vCenter |
00:50:56:80-BF:XX:XX | Automatically generated (vSphere) |
00:0C:29:XX:XX:XX | Automatically generated (Workstation/Fusion) |
00:05:69:XX:XX:XX | Older VMware products |
VM MAC address persistence:
VM MAC addresses are typically stored in the VM configuration:
.vmx file contains ethernet0.addressType and ethernet0.generatedAddress<mac address='...'/>.vbox XML configurationAddresses persist across:
Addresses may change with:
1234567891011121314
# VMware .vmx file MAC configuration examples # Automatically generated address (default)ethernet0.addressType = "generated"ethernet0.generatedAddress = "00:0c:29:ab:cd:ef"ethernet0.generatedAddressOffset = "0" # Statically assigned addressethernet0.addressType = "static"ethernet0.address = "00:50:56:12:34:56" # Manually specify a custom addressethernet0.addressType = "vpx"ethernet0.generatedAddress = "00:50:56:ab:cd:ef"When cloning VMs, hypervisors typically generate new MAC addresses to avoid duplicates. If you're cloning for disaster recovery where the clone should have the same identity, you may need to manually restore the original MAC. If cloning for scaling, ensure new addresses are generated to avoid conflicts.
A significant evolution in MAC addressing is the adoption of MAC address randomization for privacy protection. This technique replaces consistent hardware addresses with random, temporary addresses to prevent tracking.
The privacy problem:
Traditionally, MAC addresses were permanent identifiers. This enabled:
Devices constantly broadcast WiFi 'probe requests' seeking known networks—each containing the device's MAC address, creating tracking opportunities.
| Platform | When Randomization Occurs | First Supported Version | Default Status |
|---|---|---|---|
| iOS | Probe requests + per-network MACs | iOS 8 (probing), iOS 14 (per-network) | Enabled by default |
| Android | Probe requests + per-network MACs | Android 8 (probing), 10 (per-network) | Enabled by default (10+) |
| Windows 10/11 | Per-network randomization | Windows 10 1511+ | Off by default (opt-in) |
| macOS | Probe requests (limited) | macOS Catalina+ | Probe only; association uses real |
| Linux | NetworkManager/systemd-networkd | Recent versions | Configurable |
Types of MAC randomization:
1. Probe Request Randomization
2. Per-Network Randomization (Persistent)
3. Time-Based Rotation
Impact on network operations:
With MAC randomization becoming standard, networks are shifting away from MAC-based authentication. 802.1X certificate-based authentication, user credentials, or device attestation are more robust alternatives that work regardless of MAC address changes.
Changing a device's operational MAC address is a common network administration task with legitimate uses ranging from privacy to testing to hardware replacement. Here's a comprehensive guide for major operating systems.
Important considerations before changing:
1234567891011121314151617181920212223242526272829303132333435363738394041424344
# === Temporary MAC Change (ip command) ===# Bring interface downsudo ip link set eth0 down # Change to new MAC (use 02: prefix for LAA unicast)sudo ip link set eth0 address 02:DE:AD:BE:EF:01 # Bring interface back upsudo ip link set eth0 up # Verifyip link show eth0 # === Using macchanger tool (recommended) ===# Install: apt install macchanger (Debian/Ubuntu)# dnf install macchanger (Fedora) # View current addressmacchanger -s eth0 # Set full random addresssudo macchanger -r eth0 # Set random vendor (keeps OUI realistic)sudo macchanger -A eth0 # Set specific addresssudo macchanger -m 02:DE:AD:BE:EF:01 eth0 # Restore original (burned-in) addresssudo macchanger -p eth0 # === Permanent Configuration (systemd-networkd) ===# Create /etc/systemd/network/10-eth0.link:cat << 'EOF' | sudo tee /etc/systemd/network/10-eth0.link[Match]OriginalName=eth0 [Link]MACAddress=02:DE:AD:BE:EF:01EOF # Reload and restartsudo systemctl restart systemd-networkdWhile changing MAC addresses is a legitimate administrative technique, using it to evade network access controls, bypass service agreements, or commit fraud may be illegal. Always ensure you have authorization for the network you're accessing and comply with applicable laws and policies.
This page has covered the complete lifecycle of MAC address assignment—from global registration to practical modification. Let's consolidate the key points:
Looking ahead:
With address assignment understood, the next page examines OUI (Organizationally Unique Identifier) in depth—exploring its structure, the lookup process, notable OUI assignments, and how network administrators use OUI information for device identification and network management.
You now understand how MAC addresses are assigned throughout their lifecycle—from IEEE registration through hardware manufacturing, virtualization, and administrative modification. This knowledge is essential for network administration, troubleshooting, and understanding modern privacy-focused network behaviors.