MAC Address Generator Complete Guide: IEEE 802 Standards, Vendor OUI Prefixes & Network Testing
Introduction: The Invisible Network Identity Crisis
The $50,000 Network Meltdown
Friday, 3:47 PM. Your IT team just deployed 200 virtual machines to production. By 4:15 PM, the entire network is down. Switches are flooding with broadcast storms. DHCP servers are assigning duplicate IPs. Security cameras offline. VoIP phones dead. Executives screaming.
The root cause? All 200 VMs were cloned from the same template—with identical MAC addresses.
Your network switches saw 200 devices claiming to be the same hardware address. ARP tables corrupted. Spanning Tree Protocol confused. Layer 2 forwarding completely broken. 30 minutes of downtime cost the company $50,000 in lost revenue.
This catastrophic failure was 100% preventable with proper MAC address management.
The Reality of MAC Address Management
MAC (Media Access Control) addresses are the foundational identifiers of network communication:
- Every network interface needs a globally unique 48-bit address
- Duplicate MACs cause catastrophic Layer 2 failures (broadcast storms, ARP poisoning, packet loss)
- Virtual environments create millions of network interfaces requiring unique addresses
- IoT manufacturing requires MAC assignment at scale (10,000+ devices daily)
- Network testing labs need realistic MAC addressing without physical hardware
- Privacy-conscious users require MAC randomization (public WiFi tracking prevention)
The stakes are high:
- Enterprise networks: 10,000+ devices requiring unique identifiers
- Cloud providers: Millions of VMs needing non-conflicting addresses
- IoT manufacturers: Factory programming 100,000+ devices monthly
- Security researchers: MAC spoofing for authorized penetration testing
- Network engineers: Realistic simulation environments with proper addressing
Use our MAC Address Generator to generate IEEE 802-compliant addresses instantly with vendor OUI prefixes, multiple formats, and batch generation.
Who Needs This Guide?
This comprehensive guide is essential for:
- Network Engineers: Managing Layer 2 addressing in enterprise environments
- System Administrators: Configuring VMs with unique MAC addresses
- DevOps Engineers: Automating infrastructure with proper network identifiers
- IoT Developers: Programming embedded devices with factory-assigned MACs
- Security Professionals: Conducting authorized penetration tests with MAC spoofing
- Network Students: Understanding IEEE 802 standards and addressing
- Privacy Advocates: Implementing MAC randomization for tracking prevention
- IT Managers: Planning DHCP reservations and access control policies
Quick Answer: What You Need to Know About MAC Addresses
Before diving into 12,000 words, here’s the essential information:
MAC Address Basics:
- Length: 48 bits (6 octets/bytes) = 281 trillion possible addresses
- Format: First 24 bits (OUI) = vendor, last 24 bits (NIC) = device
- Standard: IEEE 802.3 (Ethernet), 802.11 (WiFi), 802.15.1 (Bluetooth)
- Uniqueness: Globally unique when assigned by IEEE (manufacturer responsibility)
- Layer: OSI Layer 2 (Data Link) - hardware addressing
Common Formats:
- Colon:
00:1A:2B:3C:4D:5E(Linux/Unix standard) - Hyphen:
00-1A-2B-3C-4D-5E(Windows standard) - Dot:
001A.2B3C.4D5E(Cisco IOS format) - Plain:
001A2B3C4D5E(Programming/database) - Space:
00 1A 2B 3C 4D 5E(IEEE documentation)
Address Types:
- Unicast (LSB of first octet = 0): Single destination (standard)
- Multicast (LSB of first octet = 1): Multiple destinations (group)
- Universally Administered (2nd LSB = 0): IEEE-assigned (vendor OUI)
- Locally Administered (2nd LSB = 1): Custom/virtual (user-defined)
Common Use Cases:
- Virtual machine network interfaces
- Network testing and simulation
- DHCP MAC-based IP reservations
- IoT device factory programming
- Privacy MAC randomization
- Security testing and research
Reference: IEEE 802.3 Ethernet Standard
Generate Now: 👉 Create IEEE-Compliant MAC Addresses
Understanding MAC Addresses: Complete Technical Deep Dive
What is a MAC Address? (The Foundation)
Definition:
A Media Access Control (MAC) address is a unique 48-bit hardware identifier permanently assigned to network interface controllers (NICs) for Layer 2 communication in local area networks.
Official Standards:
- IEEE 802.3 (1983-present): Ethernet LAN addressing
- IEEE 802.11 (1997-present): Wireless LAN (WiFi) addressing
- IEEE 802.15.1: Bluetooth device addressing
- IEEE 802: LAN/MAN Standards Committee oversight
Technical Specifications:
- Length: 48 bits = 6 octets = 6 bytes
- Representation: Hexadecimal (0-9, A-F)
- Total addresses: 2^48 = 281,474,976,710,656 (281 trillion)
- Assignment: IEEE Registration Authority (globally managed)
- Uniqueness: Manufacturer-guaranteed within OUI scope
OSI Model Position:
- Layer 1 (Physical): Electrical signals on wire
- Layer 2 (Data Link): MAC addresses operate here ← Frame addressing
- Layer 3 (Network): IP addresses (logical addressing)
- Layer 4 (Transport): TCP/UDP ports
Why Layer 2 Matters:
- MAC addresses enable communication within local networks (same subnet)
- ARP (Address Resolution Protocol) translates IP → MAC for Ethernet delivery
- Switches use MAC addresses to forward frames intelligently (CAM tables)
- Routers strip Layer 2 headers but source/destination devices need MAC addressing
Reference: OSI Model Explained
MAC Address Structure: OUI and NIC Breakdown
48-Bit Anatomy:
Example MAC: 00:1A:2B:3C:4D:5E
┌─────────────┬─────────────┐
│ OUI (24) │ NIC (24) │
├─────────────┼─────────────┤
│ 00:1A:2B │ 3C:4D:5E │
└─────────────┴─────────────┘
Bit Breakdown (First Octet: 00):
Binary: 0 0 0 0 0 0 0 0
│ │
│ └─ U/L bit (bit 1): 0 = Universally Administered
└─── I/G bit (bit 0): 0 = Individual/Unicast
OUI (Organizationally Unique Identifier) - First 24 Bits:
What it is:
- Unique prefix assigned by IEEE to each manufacturer
- Cost: $3,190 for MA-L (16.7M addresses), $2,535 for MA-M (1M addresses), $1,265 for MA-S (4K addresses)
- Over 30,000 registered vendors globally
- Examples:
00:50:56= VMware, Inc. (all VMware VMs)00:1B:63= Apple Inc. (iPhones, MacBooks, AirPods)00:1E:14= Cisco Systems (routers, switches)
How to find OUI:
- IEEE OUI Public Listing
- Wireshark OUI Lookup Tool
nmap --script=targets-asn --script-args newtargets -p U:161 <IP>(OUI detection)
Special Bits (First Octet):
Bit 0 (I/G - Individual/Group):
- 0 = Unicast: Frame destined for single device (99% of traffic)
- 1 = Multicast: Frame destined for group of devices (VLAN, routing protocols)
- Example:
01:00:5E:xx:xx:xx= IPv4 multicast range - Example:
33:33:xx:xx:xx:xx= IPv6 multicast range
Bit 1 (U/L - Universal/Local):
- 0 = Universally Administered: IEEE-assigned (manufacturer OUI)
- 1 = Locally Administered: Administratively assigned (VMs, custom)
- Setting this bit allows custom MAC generation without IEEE registration
- Prevents conflicts with manufacturer-assigned addresses
Binary Examples:
Unicast, Universal (standard hardware):
00000000 = 0x00 (first octet)
│ │
│ └─ Bit 0 = 0 (unicast)
└──────── Bit 1 = 0 (universal)
Unicast, Local (virtual machines):
00000010 = 0x02 (first octet)
│ │
│ └─ Bit 0 = 0 (unicast)
└──────── Bit 1 = 1 (local)
Multicast, Universal (routing protocols):
00000001 = 0x01 (first octet)
│ │
│ └─ Bit 0 = 1 (multicast)
└──────── Bit 1 = 0 (universal)
NIC (Network Interface Controller) - Last 24 Bits:
What it is:
- Device-specific identifier assigned by manufacturer
- 2^24 = 16,777,216 possible addresses per OUI
- Sequential or random assignment (vendor policy)
- Should be unique within vendor’s OUI range
Manufacturer Practices:
- Sequential: Apple, Dell (incremental serial numbers)
- Random: Some virtualization platforms (collision avoidance)
- Batch assignment: Large manufacturers reserve ranges for factories
Reference: IEEE 802 Tutorial
Five Industry-Standard MAC Address Formats
1. Colon Format (Unix/Linux Standard)
Format: 00:1A:2B:3C:4D:5E
Used by:
- Linux
ifconfig,ip addrcommands - macOS Network Preferences
- FreeBSD, OpenBSD, NetBSD
- Android device settings
- Wireshark packet captures
Why colons:
- POSIX systems convention
- Easy visual parsing (6 groups of 2)
- Compatible with shell scripts
- Standard for
arp -aoutput
Example Commands:
# Display MAC address (Linux)
ip link show eth0 | grep link/ether
# Output: link/ether 00:1a:2b:3c:4d:5e
# macOS
ifconfig en0 | grep ether
# Output: ether 00:1a:2b:3c:4d:5e
2. Hyphen Format (Windows Standard)
Format: 00-1A-2B-3C-4D-5E
Used by:
- Windows
ipconfig /all - Windows Registry (HKLM\SYSTEM\CurrentControlSet\Control\Network)
- PowerShell
Get-NetAdaptercmdlet - Active Directory computer objects
- SCCM/MECM device management
Why hyphens:
- Microsoft convention since Windows NT
- Windows Installer (MSI) package standards
- Group Policy MAC filtering format
Example Commands:
# PowerShell
Get-NetAdapter | Select-Object Name, MacAddress
# Output: MacAddress: 00-1A-2B-3C-4D-5E
# CMD
ipconfig /all | findstr "Physical"
# Output: Physical Address. . . . . . . . . : 00-1A-2B-3C-4D-5E
3. Dot Format (Cisco IOS Standard)
Format: 001A.2B3C.4D5E
Used by:
- Cisco routers and switches (IOS, IOS-XE, NX-OS)
- Cisco Catalyst series
- Cisco ASA firewalls
- HP ProCurve switches (some models)
- Aruba Networks equipment
Why dots every 4 characters:
- Matches Cisco’s hexadecimal word grouping
- Easier to read in show commands
- Consistent with Cisco’s addressing philosophy
Example Commands:
! Cisco IOS
Router# show interfaces GigabitEthernet0/0 | include address
Hardware is iGbE, address is 001a.2b3c.4d5e
! Show MAC address table
Switch# show mac address-table
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 001a.2b3c.4d5e DYNAMIC Gi0/1
Reference: Cisco MAC Address Format
4. Plain Format (Programming/Database)
Format: 001A2B3C4D5E
Used by:
- Database storage (MySQL, PostgreSQL, MongoDB)
- REST API JSON responses
- Programming language libraries (Python, JavaScript, Go)
- Configuration files (YAML, TOML, INI)
- CSV exports and imports
Why no delimiters:
- Compact storage (12 characters vs 17)
- Easy string manipulation
- Direct hexadecimal conversion
- URL-safe (no escaping needed)
Example Code:
Python:
import re
# Convert formats
mac_plain = "001A2B3C4D5E"
mac_colon = ":".join(re.findall('..', mac_plain))
# Output: 00:1A:2B:3C:4D:5E
# Validate plain format
def is_valid_mac(mac):
return bool(re.match(r'^[0-9A-F]{12}$', mac.upper()))
JavaScript:
// Format conversion
function formatMAC(plain) {
return plain.match(/.{1,2}/g).join(':');
}
formatMAC('001A2B3C4D5E'); // "00:1A:2B:3C:4D:5E"
SQL Storage:
CREATE TABLE devices (
id INT PRIMARY KEY,
mac_address CHAR(12) NOT NULL, -- Plain format
INDEX idx_mac (mac_address)
);
-- Query
SELECT * FROM devices WHERE mac_address = '001A2B3C4D5E';
5. Space Format (IEEE Documentation)
Format: 00 1A 2B 3C 4D 5E
Used by:
- IEEE 802 standards documents
- Technical specifications and RFCs
- Academic papers and research
- Hardware datasheets
- Network protocol documentation
Why spaces:
- Clearest visual separation
- Matches hexadecimal dump formats
- Easy to read in technical documents
- Consistent with byte-by-byte analysis
Example from IEEE 802.3:
Destination Address: 00 1A 2B 3C 4D 5E
Source Address: 00 50 56 AB CD EF
EtherType: 08 00 (IPv4)
Format Conversion Quick Reference
Format Example Delimiter Length Common Use
────────────────────────────────────────────────────────────────────
Colon 00:1A:2B:3C:4D:5E : 17 Linux/Unix
Hyphen 00-1A-2B-3C-4D-5E - 17 Windows
Dot 001A.2B3C.4D5E . 14 Cisco
Plain 001A2B3C4D5E (none) 12 Programming
Space 00 1A 2B 3C 4D 5E (space) 17 IEEE Docs
Conversion Tools:
- Our MAC Address Generator (all formats)
- Linux:
sed 's/[:-]//g' <<< "00:1A:2B:3C:4D:5E" - Online: Unit Converter (text transformations)
IEEE 802 Standards and Addressing Types
Unicast vs Multicast Addresses
Unicast Addressing (Individual)
Definition: Frame destined for a single network interface (1-to-1 communication)
Characteristics:
- Bit 0 of first octet = 0
- Most common address type (99.9% of network traffic)
- Switch learns MAC → port mapping in CAM table
- ARP resolves IP → unicast MAC
Binary Representation:
Example: 00:1A:2B:3C:4D:5E
First octet: 00 = 0000 0000 (binary)
│
└─ Bit 0 = 0 (unicast)
Use Cases:
- Standard client-server communication
- Web browsing (HTTP requests)
- SSH sessions
- File transfers (FTP, SMB)
- Email (SMTP, IMAP)
Behavior:
- Switches forward to specific port (learned from source MAC)
- Other devices ignore frame (not their MAC)
- Reduces network congestion (targeted delivery)
Multicast Addressing (Group)
Definition: Frame destined for multiple network interfaces (1-to-many communication)
Characteristics:
- Bit 0 of first octet = 1
- Used by routing protocols, streaming, and group services
- Not learned in switch CAM tables (flooded or IGMP snooping)
- Special reserved ranges for protocols
Binary Representation:
Example: 01:00:5E:01:02:03 (IPv4 multicast)
First octet: 01 = 0000 0001 (binary)
│
└─ Bit 0 = 1 (multicast)
Well-Known Multicast Addresses:
Address Purpose
───────────────────────────────────────────────────────────
01:00:5E:00:00:01 All hosts on subnet (224.0.0.1)
01:00:5E:00:00:02 All routers on subnet (224.0.0.2)
01:00:5E:00:00:05 OSPF routers (224.0.0.5)
01:00:5E:00:00:09 RIP version 2 routers (224.0.0.9)
01:00:5E:00:00:12 VRRP routers (224.0.0.18)
33:33:00:00:00:01 All IPv6 nodes (ff02::1)
33:33:00:00:00:02 All IPv6 routers (ff02::2)
01:80:C2:00:00:00 Spanning Tree Protocol (STP)
01:80:C2:00:00:0E Link Layer Discovery Protocol (LLDP)
IPv4 Multicast MAC Formula:
IPv4 multicast range: 224.0.0.0 to 239.255.255.255
MAC prefix: 01:00:5E:0[last 23 bits of IP]
Example: 224.0.0.251 (mDNS)
Binary IP: 11100000.00000000.00000000.11111011
Last 23 bits: 0000000.00000000.11111011
MAC: 01:00:5E:00:00:FB
IPv6 Multicast MAC Formula:
IPv6 multicast range: ff00::/8
MAC prefix: 33:33:[last 32 bits of IPv6]
Example: ff02::1 (all nodes)
MAC: 33:33:00:00:00:01
Use Cases:
- Routing protocols: OSPF, EIGRP, RIP, VRRP
- Video streaming: IPTV multicast distribution
- Network discovery: mDNS (Bonjour), SSDP (UPnP)
- Synchronization: NTP, PTP (Precision Time Protocol)
Reference: IANA Multicast Assignments
Universally Administered vs Locally Administered
Universally Administered Addresses (UAA)
Definition: MAC address assigned by manufacturer following IEEE OUI registration
Characteristics:
- Bit 1 of first octet = 0 (U/L bit = 0)
- IEEE-registered OUI prefix (vendor-specific)
- Manufacturer guarantees uniqueness within their OUI
- Burned into hardware (ROM on NIC)
Binary Representation:
Example: 00:1A:2B:3C:4D:5E (Apple device)
First octet: 00 = 0000 0000 (binary)
│
└─ Bit 1 = 0 (universal)
How Manufacturers Assign:
- Purchase OUI from IEEE ($3,190 for MA-L)
- Receive 24-bit prefix (e.g.,
00:1B:63) - Factory assigns sequential NIC portion (3C:4D:5E)
- Burn MAC into NIC EEPROM during manufacturing
- Track assignments to prevent duplicates within OUI
Major Vendor OUI Prefixes:
Vendor OUI Prefixes (examples)
──────────────────────────────────────────────────────────
Apple Inc. 00:1B:63, 3C:07:54, AC:BC:32
Cisco Systems 00:1E:14, 00:0C:29, 00:50:56
Intel Corporation 00:15:17, 00:1B:21, 00:22:4D
Dell Inc. 00:14:22, 00:1E:C9, B8:2A:72
Samsung Electronics 00:12:FB, E8:50:8B, 54:88:0E
Hewlett Packard 00:1F:29, 00:24:81, 70:10:6F
Broadcom 00:10:18, 00:90:4C, B4:99:BA
Qualcomm 00:03:7F, 78:C5:E5, F8:CF:C5
Advantages:
- Globally unique (no duplicates worldwide)
- Device identification (vendor/model detection)
- Hardware fingerprinting (security tracking)
- Warranty tracking (serial number equivalent)
Disadvantages:
- Privacy concern (permanent tracking identifier)
- Vendor lock-in (reveals manufacturer)
- Cannot be changed without software override
Locally Administered Addresses (LAA)
Definition: MAC address manually assigned by network administrator or software
Characteristics:
- Bit 1 of first octet = 1 (U/L bit = 1)
- No IEEE OUI required (free to generate)
- Administrator responsible for uniqueness
- Software-configurable (not hardware-burned)
Binary Representation:
Example: 02:1A:2B:3C:4D:5E (locally administered)
First octet: 02 = 0000 0010 (binary)
│
└─ Bit 1 = 1 (local)
Common Locally Administered Prefixes:
Prefix Purpose
──────────────────────────────────────────────────────────
02:xx:xx General locally administered (unicast)
06:xx:xx Alternative locally administered
0A:xx:xx Alternative locally administered
0E:xx:xx Alternative locally administered
03:xx:xx Locally administered multicast
07:xx:xx Locally administered multicast
Use Cases:
1. Virtual Machine Networks:
VMware: 00:50:56:xx:xx:xx (universal OUI but auto-generated)
VirtualBox: 08:00:27:xx:xx:xx (universal OUI, random NIC)
Custom: 02:00:00:xx:xx:xx (locally administered)
2. Network Testing:
# Linux: Set temporary MAC
sudo ip link set dev eth0 address 02:11:22:33:44:55
# macOS
sudo ifconfig en0 ether 02:11:22:33:44:55
3. MAC Randomization (Privacy):
Android 10+: Random locally administered MAC per WiFi network
iOS 14+: Private WiFi Address (random per SSID)
Windows 10+: Random hardware addresses
4. Docker Containers:
# docker-compose.yml
services:
web:
mac_address: 02:42:AC:11:00:02 # Locally administered
Advantages:
- Privacy protection (prevents tracking)
- No IEEE registration required (cost savings)
- Flexible assignment (programmatically generated)
- Testing environments (custom addressing schemes)
Disadvantages:
- Administrator must ensure uniqueness (no global registry)
- Potential conflicts if poorly managed
- Some networks block locally administered MACs (security policy)
Broadcast Address (Special Case)
Definition: Frame destined for all devices on local network segment
Address: FF:FF:FF:FF:FF:FF (all bits set to 1)
Characteristics:
- Only valid as destination address (never source)
- Switches flood to all ports (except incoming)
- Routers do not forward broadcasts (Layer 2 boundary)
- Essential for network discovery and initialization
Use Cases:
ARP (Address Resolution Protocol):
Who has IP 192.168.1.100? Tell 192.168.1.50
Destination: FF:FF:FF:FF:FF:FF (broadcast)
Source: 00:1A:2B:3C:4D:5E
DHCP Discovery:
DHCP Discover (client looking for DHCP server)
Destination: FF:FF:FF:FF:FF:FF
Source: 00:1A:2B:3C:4D:5E
NetBIOS Name Resolution:
Windows network browsing
Destination: FF:FF:FF:FF:FF:FF
Wake-on-LAN Magic Packet:
Packet structure: FF FF FF FF FF FF [target MAC × 16]
Broadcast ensures target device receives even when asleep
Reference: IEEE 802.3 Addressing
Vendor OUI Database: Major Manufacturers
Understanding OUI Assignment and Registration
What is an OUI?
- Organizationally Unique Identifier: 24-bit prefix assigned by IEEE
- Uniquely identifies manufacturer of network equipment
- Over 36,000 registered OUIs globally (as of 2025)
- Public database: IEEE Registration Authority
OUI Purchase Options:
| Type | Cost | Addresses | Public Listing | Use Case |
|---|---|---|---|---|
| MA-L | $3,190 | 16,777,216 (2^24) | Yes | Large manufacturers |
| MA-M | $2,535 | 1,048,576 (2^20) | Yes | Medium manufacturers |
| MA-S | $1,265 | 4,096 (2^12) | Yes | Small-scale production |
| CID | $2,535 | 16,777,216 | No | Private addressing |
OUI Lookup Tools:
- Online: Wireshark OUI Lookup
- Command line:
ieee-oui-lookup 00:1A:2B(Python package) - Our tool: MAC Address Generator (30+ vendors built-in)
Top Network Equipment Vendors
Cisco Systems, Inc.
Business: Enterprise networking (routers, switches, firewalls, wireless)
Major OUI Prefixes:
00:0C:29 - VMware (acquired by Cisco, still uses old OUI)
00:1E:14 - Cisco Catalyst switches
00:50:56 - VMware ESXi virtual machines
00:1D:A2 - Cisco ASA firewalls
00:21:D8 - Cisco routers
68:EF:BD - Cisco Meraki (cloud-managed)
Device Examples:
- Catalyst 9300 switch:
00:1E:14:xx:xx:xx - ASA 5516-X firewall:
00:1D:A2:xx:xx:xx - Meraki MR44 AP:
68:EF:BD:xx:xx:xx
Fun Fact: Cisco has 900+ registered OUI prefixes (most of any vendor)
Apple Inc.
Business: Consumer electronics (iPhone, Mac, iPad, AirPods, Apple Watch)
Major OUI Prefixes:
00:1B:63 - MacBooks, iMacs (2008-2012)
3C:07:54 - iPhone 5/6 series
AC:BC:32 - iPhone 12/13/14 series
F0:18:98 - iPhone 15 series
A4:C3:61 - AirPods Pro
DC:56:E7 - Apple Watch Series 6+
Privacy Feature:
- iOS 14+: Generates random locally administered MACs per WiFi network
- Prevents tracking across different locations
- Format:
x2:xx:xx:xx:xx:xxorx6:xx:xx:xx:xx:xx(bit 1 = 1)
Device Identification:
# Check if device is Apple
if [[ $MAC == ^(00:1B:63|3C:07:54|AC:BC:32) ]]; then
echo "Apple device detected"
fi
Intel Corporation
Business: Network interface cards (NICs), WiFi chipsets, Ethernet controllers
Major OUI Prefixes:
00:15:17 - Intel PRO/1000 NICs
00:1B:21 - Intel WiFi Link 5000 series
00:22:4D - Intel centrino wireless
D0:50:99 - Intel I219-V gigabit ethernet
94:C6:91 - Intel WiFi 6 AX200/201
Common in:
- Desktop motherboard onboard ethernet
- Laptop built-in WiFi/ethernet
- NUC mini PCs
- Server network adapters
Dell Inc.
Business: Servers, workstations, laptops (PowerEdge, Precision, XPS)
Major OUI Prefixes:
00:14:22 - Dell PowerEdge servers (2006-2010)
00:1E:C9 - Dell enterprise equipment
B8:2A:72 - Dell iDRAC management interfaces
B0:83:FE - Dell Latitude laptops
78:45:C4 - Dell XPS series
iDRAC Identification:
- Dell servers have separate MAC for remote management (iDRAC)
- Usually sequential to primary NIC: Primary
B8:2A:72:00:01:00, iDRACB8:2A:72:00:01:01
Hewlett Packard (HP/HPE)
Business: Enterprise servers, printers, networking (ProLiant, ProCurve, Aruba)
Major OUI Prefixes:
00:1F:29 - HP ProCurve switches
00:24:81 - HP ProLiant servers
70:10:6F - HP enterprise equipment
D8:9D:67 - HP iLO management controllers
94:57:A5 - Aruba wireless APs (HP subsidiary)
HP vs HPE Split (2015):
- HP Inc.: Consumer PCs, printers (kept some old OUIs)
- HPE: Enterprise servers, networking (new OUI registrations)
Virtualization Platform Vendors
VMware, Inc.
OUI Prefixes:
00:50:56 - All VMware virtual machines (ESXi, Workstation, Fusion)
00:0C:29 - VMware vSphere virtual NICs
00:05:69 - VMware older products
Address Ranges:
00:50:56:00:00:00 - 00:50:56:3F:FF:FF → VMware ESXi (manually assigned)
00:50:56:80:00:00 - 00:50:56:BF:FF:FF → VMware Workstation/Fusion (auto)
00:0C:29:xx:xx:xx → vSphere auto-generated
Generation Algorithm (vSphere):
- Start with OUI
00:0C:29 - Generate random 24-bit NIC portion
- Check for conflicts in datacenter
- Assign to VM virtual NIC
Why VMware Has Unique OUI:
- Prevents conflicts with physical hardware
- Easy identification of virtual infrastructure
- Consistent across all VMware products
Microsoft Corporation (Hyper-V)
OUI Prefix:
00:15:5D - All Hyper-V virtual machines
Characteristics:
- Hyper-V Manager auto-assigns from this range
- Cannot manually specify MAC in same OUI (conflict prevention)
- Unique even across multiple Hyper-V hosts (GUID-based generation)
PowerShell MAC Assignment:
# View VM MAC
Get-VMNetworkAdapter -VMName "Server01" | Select MacAddress
# Set static MAC (must be locally administered)
Set-VMNetworkAdapter -VMName "Server01" -StaticMacAddress "02-00-00-12-34-56"
Oracle VirtualBox
OUI Prefix:
08:00:27 - VirtualBox virtual machines
Address Range:
08:00:27:00:00:00 - 08:00:27:FF:FF:FF → All VirtualBox VMs
Assignment:
- Random generation within range
- Stored in VM configuration file
- Can be manually overridden via GUI or VBoxManage
CLI Management:
# Show VM MAC
VBoxManage showvminfo "VM Name" | grep MAC
# Set custom MAC
VBoxManage modifyvm "VM Name" --macaddress1 080027ABCDEF
Xen Project Hypervisor
OUI Prefix:
00:16:3E - Xen virtual machines
Characteristics:
- Open-source hypervisor (AWS EC2, Citrix XenServer)
- Auto-generated MACs for para-virtualized interfaces
- Persistent across VM migrations (live migration support)
Consumer Electronics Brands
Samsung Electronics Co., Ltd.
Business: Smartphones, tablets, TVs, smart home (Galaxy, QLED)
Major OUI Prefixes:
00:12:FB - Samsung Galaxy S series
E8:50:8B - Samsung smart TVs
54:88:0E - Samsung tablets
2C:44:FD - Samsung SmartThings hubs
Device Count: 500+ million Samsung devices worldwide with network connectivity
LG Electronics Inc.
Business: Smart TVs, smartphones, appliances (webOS, LG ThinQ)
Major OUI Prefixes:
00:1C:62 - LG smart TVs
B4:E6:2D - LG smartphones
A0:39:F7 - LG webOS devices
Sony Corporation
Business: PlayStation, smart TVs, cameras, audio equipment
Major OUI Prefixes:
00:1D:BA - PlayStation 3
54:42:49 - PlayStation 4
F8:46:1C - PlayStation 5
AC:9B:0A - Sony smart TVs
PlayStation Network:
- Each console has unique MAC for PSN authentication
- Used for device bans (MAC + console ID)
- Enables local network game streaming
Networking Equipment Vendors
Netgear, Inc.
Business: Consumer routers, switches, WiFi extenders
Major OUI Prefixes:
00:1B:2F - Netgear routers (Nighthawk series)
2C:30:33 - Netgear switches
A0:63:91 - Netgear Orbi mesh WiFi
TP-Link Technologies Co., Ltd.
Business: Budget routers, switches, smart home (Archer, Deco, Tapo)
Major OUI Prefixes:
00:27:19 - TP-Link routers
F4:F2:6D - TP-Link Archer series
50:C7:BF - TP-Link smart plugs/bulbs
Market Share: #1 global WiFi vendor by units shipped (2024)
D-Link Corporation
Business: Network equipment (routers, switches, IP cameras)
Major OUI Prefixes:
00:1B:11 - D-Link routers
90:94:E4 - D-Link switches
B0:C5:54 - D-Link IP cameras
Professional Use Cases and Implementation
Use Case 1: Virtual Machine Network Configuration
Scenario: Deploying 50 VMs in VMware vSphere cluster without MAC conflicts
Challenge:
- VMware auto-generates MACs from
00:0C:29range - Cloning VMs duplicates MAC addresses (network failure)
- Need predictable, conflict-free addressing scheme
Solution: Manually Assign MACs with Vendor OUI
Step 1: Generate MACs with Our Tool
Visit MAC Address Generator:
- Format: Colon (Linux standard)
- Address Type: Unicast
- Vendor: VMware, Inc. (ensures
00:50:56prefix) - Batch Mode: 50 addresses
Generated:
00:50:56:12:34:56
00:50:56:12:34:57
00:50:56:12:34:58
...
00:50:56:12:34:87
Step 2: Assign via vSphere
GUI Method:
- Right-click VM → Edit Settings
- Network Adapter → MAC Address → Manual
- Enter:
00:50:56:12:34:56 - OK → Power on VM
PowerCLI Method (Automation):
# Connect to vCenter
Connect-VIServer -Server vcenter.company.com
# Import MAC list
$macs = Get-Content macs.txt
# Assign to VMs
$vms = Get-VM -Location "Production Cluster"
for ($i=0; $i -lt $vms.Count; $i++) {
$vm = $vms[$i]
$mac = $macs[$i]
Get-NetworkAdapter -VM $vm | Set-NetworkAdapter -MacAddress $mac -Confirm:$false
Write-Host "Assigned $mac to $($vm.Name)"
}
Step 3: Document Assignments
VM Name,MAC Address,IP Address,VLAN
web-server-01,00:50:56:12:34:56,192.168.10.10,100
web-server-02,00:50:56:12:34:57,192.168.10.11,100
db-server-01,00:50:56:12:34:58,192.168.20.10,200
Best Practices:
- Use vendor OUI (
00:50:56for VMware) to avoid confusion with physical hardware - Maintain spreadsheet of MAC → VM mappings
- Reserve ranges for different environments (dev:
00:50:56:10:xx:xx, prod:00:50:56:20:xx:xx) - Script assignment for reproducibility
Alternative: Locally Administered for Non-VMware
KVM/QEMU: 02:00:00:10:xx:xx (locally administered)
VirtualBox: 02:00:00:20:xx:xx
Docker: 02:42:xx:xx:xx:xx (Docker's convention)
Also verify system performance: Bottleneck Calculator
Use Case 2: DHCP Static IP Reservations
Scenario: Enterprise network with 200 devices needing persistent IPs
Challenge:
- Servers need static IPs but DHCP simplifies management
- Workstations get dynamic IPs via DHCP
- Need to bind specific IPs to specific devices (MAC-based)
Solution: DHCP Reservations by MAC Address
Step 1: Identify Device MACs
Windows:
ipconfig /all | findstr "Physical"
Physical Address. . . . . . . . . : 00-1A-2B-3C-4D-5E
Linux:
ip link show | grep link/ether
link/ether 00:1a:2b:3c:4d:5e
macOS:
ifconfig en0 | grep ether
ether 00:1a:2b:3c:4d:5e
Network Scan (Nmap):
sudo nmap -sn 192.168.1.0/24 | grep "MAC Address"
MAC Address: 00:1A:2B:3C:4D:5E (Cisco Systems)
MAC Address: 00:50:56:12:34:56 (VMware)
Step 2: Configure DHCP Server
ISC DHCP Server (Linux):
Edit /etc/dhcp/dhcpd.conf:
# Subnet declaration
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200; # Dynamic pool
option routers 192.168.10.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
# Static reservations by MAC
host web-server-01 {
hardware ethernet 00:50:56:12:34:56;
fixed-address 192.168.10.10;
option host-name "web-server-01";
}
host db-server-01 {
hardware ethernet 00:50:56:12:34:57;
fixed-address 192.168.10.20;
option host-name "db-server-01";
}
host printer-01 {
hardware ethernet 00:1E:C9:AB:CD:EF; # Dell printer
fixed-address 192.168.10.50;
}
}
Windows Server DHCP:
PowerShell:
# Add reservation
Add-DhcpServerv4Reservation -ScopeId 192.168.10.0 `
-IPAddress 192.168.10.10 `
-ClientId "00-50-56-12-34-56" `
-Description "Web Server 01"
# Batch import from CSV
Import-Csv reservations.csv | ForEach-Object {
Add-DhcpServerv4Reservation -ScopeId $_.ScopeId `
-IPAddress $_.IPAddress `
-ClientId $_.MAC `
-Description $_.Description
}
Cisco IOS DHCP:
ip dhcp pool SERVERS
network 192.168.10.0 255.255.255.0
default-router 192.168.10.1
dns-server 8.8.8.8
! Reservation
ip dhcp pool web-server-01
host 192.168.10.10 255.255.255.0
client-identifier 0100.5056.1234.56
client-name web-server-01
Step 3: Verify Assignments
Linux:
# Show active leases
dhcp-lease-list
# Tail DHCP log
tail -f /var/log/syslog | grep DHCP
Windows:
Get-DhcpServerv4Lease -ScopeId 192.168.10.0 | Where-Object {$_.AddressState -eq "ActiveReservation"}
Benefits:
- Central management (change IP reservation, not device config)
- Automatic DNS updates (if integrated)
- Consistent addressing without manual static config
- Works across VLANs and subnets
Use Our Tools:
- MAC Address Generator: Generate MACs for new devices
- Subnet Calculator: Plan IP ranges for reservations
Use Case 3: Network Testing with GNS3/Packet Tracer
Scenario: CCNA student building network lab simulation without physical equipment
Challenge:
- Need realistic MAC addresses for routers, switches, hosts
- Packet Tracer auto-generates random MACs (hard to troubleshoot)
- Want vendor-specific MACs for realism (Cisco routers should have Cisco MACs)
Solution: Manual MAC Assignment in Network Simulators
GNS3 Setup:
Step 1: Generate Cisco MACs
- Vendor: Cisco Systems
- Format: Dot (Cisco IOS standard)
- Batch: 10 addresses
Generated:
001E.1412.3456
001E.1412.3457
001E.1412.3458
Step 2: Configure in GNS3
- Right-click router → Configure
- Network tab → Adapter settings
- MAC address:
001E.1412.3456 - Apply
Step 3: Verify in IOS
Router# show interfaces GigabitEthernet0/0 | include address
Hardware is iGbE, address is 001e.1412.3456 (bia 001e.1412.3456)
Packet Tracer:
Step 1: Set MAC via CLI
! This doesn't work in Packet Tracer (MACs auto-assigned)
! But you can see auto-assigned MACs:
PC> ipconfig /all
Physical Address: 0001.9776.8201 (Packet Tracer auto-generated)
Workaround: Accept auto-generated MACs but document them for ARP/CAM table exercises
Wireshark Packet Capture Analysis:
Step 1: Generate Traffic in GNS3
Router1# ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5)
Step 2: Capture on Link
- GNS3: Right-click link → Start capture
- Opens Wireshark automatically
Step 3: Analyze MAC Addresses
Frame 1: Ethernet II
Destination: 00:1E:14:12:34:57 (Cisco Systems)
Source: 00:1E:14:12:34:56 (Cisco Systems)
Type: IPv4 (0x0800)
Educational Value:
- Students see real vendor OUIs
- Practice MAC table lookups
- Understand ARP MAC→IP mapping
- Troubleshoot Layer 2 issues
Lab Scenarios:
MAC Filtering:
! Allow only specific MACs on interface
interface GigabitEthernet0/1
switchport mode access
switchport port-security
switchport port-security mac-address 001E.1412.3456
switchport port-security violation restrict
ARP Inspection:
! Bind IP to MAC (prevent ARP spoofing)
arp 192.168.1.10 001E.1412.3456 ARPA
Use Case 4: IoT Device Factory Programming
Scenario: Manufacturing 10,000 ESP32 WiFi modules monthly for smart home devices
Challenge:
- Each device needs unique MAC for network operation
- Espressif chips ship with sequential MACs (predictable)
- Need to override with company-specific addresses
- Must avoid collisions across product lines
Solution: Custom MAC Programming During Manufacturing
Step 1: Obtain OUI from IEEE
Options:
- MA-L ($3,190): 16.7M addresses - ideal for large-scale production
- MA-M ($2,535): 1M addresses - mid-scale manufacturers
- MA-S ($1,265): 4K addresses - prototyping/small batches
Example OUI assigned: AC:DE:48 (hypothetical)
Step 2: Generate MAC Pool
Database Schema:
CREATE TABLE mac_inventory (
id SERIAL PRIMARY KEY,
mac_address CHAR(12) UNIQUE NOT NULL,
assigned_to VARCHAR(50),
assigned_date TIMESTAMP,
device_serial VARCHAR(50),
status ENUM('available', 'assigned', 'burned') DEFAULT 'available',
INDEX idx_status (status),
INDEX idx_assigned (assigned_date)
);
Populate with MACs:
import psycopg2
# Connect to database
conn = psycopg2.connect("dbname=manufacturing user=factory")
cur = conn.cursor()
# Generate 1 million MACs
oui = "ACDE48"
for i in range(1000000):
nic = f"{i:06X}" # 000000 to F423FF
mac = oui + nic
cur.execute("INSERT INTO mac_inventory (mac_address) VALUES (%s)", (mac,))
conn.commit()
Step 3: Flash MAC to ESP32
Manufacturing Test Fixture:
import esptool
import serial
import psycopg2
def program_esp32(port='/dev/ttyUSB0'):
# Get next available MAC from database
cur.execute("SELECT mac_address FROM mac_inventory WHERE status='available' LIMIT 1 FOR UPDATE")
mac_hex = cur.fetchone()[0]
# Convert to ESP32 format (colon-separated)
mac = ':'.join(mac_hex[i:i+2] for i in range(0, 12, 2))
# Flash MAC to ESP32 eFuse (one-time programmable)
cmd = [
'espefuse.py',
'--port', port,
'burn_key', 'mac',
mac.replace(':', '')
]
result = subprocess.run(cmd, capture_output=True)
if result.returncode == 0:
# Mark MAC as burned in database
cur.execute("""
UPDATE mac_inventory
SET status='burned', assigned_date=NOW(), assigned_to=%s
WHERE mac_address=%s
""", (port, mac_hex))
conn.commit()
print(f"✓ Programmed {mac} to device on {port}")
else:
print(f"✗ Failed to program {mac}")
conn.rollback()
# Production line loop
while True:
if device_detected_on_fixture():
program_esp32('/dev/ttyUSB0')
eject_device()
Step 4: Verification
Read back MAC:
esptool.py --port /dev/ttyUSB0 read_mac
MAC: ac:de:48:12:34:56
Test network connectivity:
// Arduino/ESP32 code
#include <WiFi.h>
void setup() {
Serial.begin(115200);
// Read MAC from eFuse
String mac = WiFi.macAddress();
Serial.println("Device MAC: " + mac);
// Connect to factory test network
WiFi.begin("FactoryTest", "password");
// Verify unique DHCP assignment
Serial.println("IP: " + WiFi.localIP().toString());
}
Benefits:
- Prevents MAC collisions in customer networks
- Enables warranty tracking via MAC serial
- DHCP reservations for firmware updates
- Network access control (whitelisting)
Cost Analysis:
OUI Purchase: $3,190 (one-time)
Database hosting: $50/month
MAC assignment tool: Free (our generator)
Total Year 1: $3,190 + $600 = $3,790
Per-device cost: $3,790 / 120,000 = $0.03 per device
Alternatives:
- Use locally administered MACs (
02:xx:xx:xx:xx:xx) - free but no IEEE registration - License OUI from existing manufacturer (sublicensing agreements)
Use Case 5: Privacy MAC Randomization
Scenario: Security-conscious user on public WiFi wants to prevent tracking
Problem:
- WiFi access points log MAC addresses
- Shopping malls, airports track users across visits
- Correlate MAC with credit card at POS
- Build movement/shopping profiles
Solution: MAC Address Randomization
Built-in OS Features:
Android 10+ (Per-Network Random MAC):
Settings → WiFi → [Network Name] → Advanced
→ Privacy → Use randomized MAC
Generated: da:a1:19:12:34:56 (locally administered)
iOS 14+ (Private WiFi Address):
Settings → WiFi → (i) next to network
→ Private Wi-Fi Address → ON
Generated: 06:xx:xx:xx:xx:xx (locally administered)
Windows 11:
Settings → Network & Internet → WiFi → Properties
→ Random hardware addresses → On
Generated every: 24 hours (configurable)
macOS:
# Not built-in, use third-party tools
# Or manual change per network
Manual Randomization (Advanced):
Linux (Temporary):
#!/bin/bash
# random_mac.sh - Generate and apply random MAC
# Generate locally administered unicast MAC
MAC=$(printf '02:%02x:%02x:%02x:%02x:%02x\n' $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)))
# Apply to WiFi interface
sudo ip link set dev wlan0 down
sudo ip link set dev wlan0 address $MAC
sudo ip link set dev wlan0 up
echo "New MAC: $MAC"
macOS (Temporary):
#!/bin/bash
# Requires SIP disabled on M1/M2 Macs
INTERFACE="en0"
# Generate MAC
MAC=$(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//')
# Set bit 1 to make locally administered
MAC="02:${MAC:3}"
# Apply
sudo ifconfig $INTERFACE ether $MAC
echo "New MAC: $MAC"
Persistent Randomization (Linux NetworkManager):
Edit /etc/NetworkManager/conf.d/99-random-mac.conf:
[device]
wifi.scan-rand-mac-address=yes
[connection]
wifi.cloned-mac-address=random
ethernet.cloned-mac-address=random
Restart NetworkManager:
sudo systemctl restart NetworkManager
Privacy-Focused Distributions:
Tails OS:
- Randomizes MAC on every boot
- Different MAC per network connection
- Built-in MAC spoofer (macchanger)
Whonix:
- Random MAC for VM interfaces
- Prevents correlation across Tor sessions
Verify Randomization:
Before:
ip link show wlan0
link/ether ac:bc:32:12:34:56 # Apple OUI (identifies as iPhone)
After:
ip link show wlan0
link/ether 02:7a:3f:8b:c2:91 # Locally administered (anonymous)
Tracking Prevention:
Without randomization:
WiFi AP Log:
2025-01-15 09:15 - AC:BC:32:12:34:56 (iPhone) - Starbucks Downtown
2025-01-16 14:22 - AC:BC:32:12:34:56 (iPhone) - Starbucks Downtown
2025-01-17 10:03 - AC:BC:32:12:34:56 (iPhone) - Starbucks Downtown
→ User visits Starbucks daily, arrives ~9-10 AM
With randomization:
WiFi AP Log:
2025-01-15 09:15 - 02:A3:7F:12:34:56 (unknown)
2025-01-16 14:22 - 06:B8:2C:AB:CD:EF (unknown)
2025-01-17 10:03 - 0A:F3:91:87:65:43 (unknown)
→ Cannot correlate - appears as 3 different devices
Limitations:
- DHCP fingerprinting can still identify device (OS signature)
- Application-layer tracking (cookies, device IDs)
- Some networks block locally administered MACs (captive portals)
Reference: RFC 7844 - DHCP Privacy
Also check network infrastructure: Subnet Calculator
Use Case 6: Docker Container Networking
Scenario: Microservices architecture with 20 containers needing persistent MAC addresses
Challenge:
- Docker auto-assigns random MACs (changes on container restart)
- Need persistent MACs for MAC-based firewall rules
- DHCP reservations require fixed MACs
Solution: Static MAC Assignment in Docker Compose
docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:latest
container_name: web-server
networks:
app_network:
ipv4_address: 172.25.0.10
# Static MAC (locally administered)
mac_address: 02:42:AC:19:00:10
ports:
- "80:80"
api:
image: node:18
container_name: api-server
networks:
app_network:
ipv4_address: 172.25.0.11
mac_address: 02:42:AC:19:00:11
database:
image: postgres:15
container_name: db-server
networks:
app_network:
ipv4_address: 172.25.0.12
mac_address: 02:42:AC:19:00:12
environment:
POSTGRES_PASSWORD: secret
networks:
app_network:
driver: bridge
ipam:
config:
- subnet: 172.25.0.0/16
MAC Prefix Convention:
02:42:AC:xx:xx:xx
│ │ │
│ │ └─ 172 (subnet 172.x.x.x)
│ └──── 66 (ASCII 'B' for bridge)
└────── 02 (locally administered, unicast)
Firewall Rules (Using MACs):
iptables (Linux host):
# Allow web container to access internet
sudo iptables -A FORWARD -m mac --mac-source 02:42:AC:19:00:10 -j ACCEPT
# Restrict database to internal network only
sudo iptables -A FORWARD -m mac --mac-source 02:42:AC:19:00:12 \
-d 172.25.0.0/16 -j ACCEPT
sudo iptables -A FORWARD -m mac --mac-source 02:42:AC:19:00:12 -j DROP
Kubernetes Pod MAC Addressing:
Calico CNI:
apiVersion: v1
kind: Pod
metadata:
name: web-pod
annotations:
cni.projectcalico.org/hwAddr: "02:42:AC:19:00:10"
spec:
containers:
- name: nginx
image: nginx
Benefits:
- Consistent MAC across container restarts
- MAC-based network policies
- Integration with legacy systems expecting fixed MACs
Command-Line Tools and Scripting
Linux MAC Address Management
Display Current MAC:
Method 1: ip command (modern)
ip link show eth0
# Output:
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
# link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
Method 2: ifconfig (legacy)
ifconfig eth0 | grep ether
# Output: ether 00:1a:2b:3c:4d:5e txqueuelen 1000 (Ethernet)
Method 3: sysfs
cat /sys/class/net/eth0/address
# Output: 00:1a:2b:3c:4d:5e
Change MAC Address (Temporary):
Method 1: ip command
# Bring interface down
sudo ip link set dev eth0 down
# Set new MAC
sudo ip link set dev eth0 address 02:11:22:33:44:55
# Bring interface up
sudo ip link set dev eth0 up
# Verify
ip link show eth0 | grep link/ether
Method 2: macchanger tool
# Install
sudo apt install macchanger # Debian/Ubuntu
sudo dnf install macchanger # Fedora/RHEL
# Random MAC (same vendor)
sudo macchanger -e eth0
# Random MAC (any vendor)
sudo macchanger -r eth0
# Specific MAC
sudo macchanger -m 02:11:22:33:44:55 eth0
# Restore original
sudo macchanger -p eth0
Persistent MAC Change (NetworkManager):
/etc/NetworkManager/system-connections/Wired-eth0.nmconnection:
[connection]
id=Wired-eth0
type=ethernet
interface-name=eth0
[ethernet]
cloned-mac-address=02:11:22:33:44:55
[ipv4]
method=auto
Persistent MAC (systemd-networkd):
/etc/systemd/network/10-eth0.link:
[Match]
MACAddress=00:1a:2b:3c:4d:5e # Original MAC
[Link]
MACAddress=02:11:22:33:44:55 # New MAC
Scripting MAC Operations:
#!/bin/bash
# mac_rotate.sh - Change MAC address on schedule
INTERFACE="eth0"
LOG="/var/log/mac_rotation.log"
rotate_mac() {
# Generate locally administered unicast MAC
NEW_MAC=$(printf '02:%02x:%02x:%02x:%02x:%02x\n' \
$((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) \
$((RANDOM%256)) $((RANDOM%256)))
# Apply
sudo ip link set dev $INTERFACE down
sudo ip link set dev $INTERFACE address $NEW_MAC
sudo ip link set dev $INTERFACE up
# Log
echo "$(date): Changed MAC to $NEW_MAC" >> $LOG
}
# Rotate every 6 hours via cron
# 0 */6 * * * /usr/local/bin/mac_rotate.sh
rotate_mac
Windows MAC Address Management
Display Current MAC:
Method 1: ipconfig
ipconfig /all | findstr "Physical"
Physical Address. . . . . . . . . : 00-1A-2B-3C-4D-5E
Method 2: PowerShell
Get-NetAdapter | Select-Object Name, MacAddress
Name MacAddress
---- ----------
Ethernet 00-1A-2B-3C-4D-5E
Wi-Fi AC-BC-32-12-34-56
Method 3: getmac
getmac /v /fo table
Connection Name Network Adapter Physical Address
=============== ======================== =================
Ethernet Intel(R) I219-V 00-1A-2B-3C-4D-5E
Change MAC Address (Registry Method):
PowerShell:
# Find adapter
$adapter = Get-NetAdapter -Name "Ethernet"
# Set MAC via registry
$regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\000" + $adapter.DeviceID
# Remove hyphens from MAC
$mac = "001A2B3C4D5E"
Set-ItemProperty -Path $regPath -Name "NetworkAddress" -Value $mac
# Restart adapter
Disable-NetAdapter -Name "Ethernet" -Confirm:$false
Enable-NetAdapter -Name "Ethernet" -Confirm:$false
GUI Method:
- Device Manager → Network adapters → [Adapter] → Properties
- Advanced tab → Network Address
- Value:
001A2B3C4D5E(no delimiters) - OK → Disable/Enable adapter
Third-Party Tools:
- Technitium MAC Address Changer (free, GUI)
- SMAC (shareware)
macOS MAC Address Management
Display Current MAC:
ifconfig en0 | grep ether
# Output: ether ac:bc:32:12:34:56
Change MAC (Temporary):
# Disassociate from current network
sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -z
# Set new MAC
sudo ifconfig en0 ether 02:11:22:33:44:55
# Verify
ifconfig en0 | grep ether
Persistent MAC (Network Location):
Create script: ~/change_mac.sh
#!/bin/bash
sudo ifconfig en0 ether 02:11:22:33:44:55
Add to Login Items (System Preferences → Users & Groups → Login Items)
Restore Original MAC:
# macOS stores original in nvram
sudo ifconfig en0 ether $(networksetup -getmacaddress en0 | awk '{print $3}')
Cross-Platform Python Script
#!/usr/bin/env python3
"""
mac_manager.py - Cross-platform MAC address management
"""
import subprocess
import platform
import random
import re
def get_current_mac(interface):
"""Get current MAC address of interface"""
system = platform.system()
if system == "Linux":
cmd = f"cat /sys/class/net/{interface}/address"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
return result.stdout.strip()
elif system == "Darwin": # macOS
cmd = f"ifconfig {interface} | grep ether | awk '{{print $2}}'"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
return result.stdout.strip()
elif system == "Windows":
cmd = f"getmac /v /fo csv | findstr {interface}"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
# Parse CSV output
mac = re.search(r'([0-9A-F]{2}-){5}[0-9A-F]{2}', result.stdout)
return mac.group(0).replace('-', ':') if mac else None
def generate_random_mac(local=True):
"""Generate random MAC address"""
# First octet
if local:
# Locally administered (bit 1 = 1), unicast (bit 0 = 0)
first = 0x02 | (random.randint(0, 255) & 0xFC)
else:
first = random.randint(0, 255) & 0xFE # Unicast only
# Remaining octets
mac = [first] + [random.randint(0, 255) for _ in range(5)]
return ':'.join(f'{b:02x}' for b in mac)
def set_mac(interface, mac):
"""Set MAC address on interface"""
system = platform.system()
if system == "Linux":
subprocess.run(f"sudo ip link set dev {interface} down", shell=True)
subprocess.run(f"sudo ip link set dev {interface} address {mac}", shell=True)
subprocess.run(f"sudo ip link set dev {interface} up", shell=True)
elif system == "Darwin": # macOS
subprocess.run(f"sudo ifconfig {interface} ether {mac}", shell=True)
elif system == "Windows":
mac_no_colon = mac.replace(':', '')
# Requires PowerShell with admin privileges
cmd = f'''
$adapter = Get-NetAdapter -Name "{interface}"
$regPath = "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Class\\{{4d36e972-e325-11ce-bfc1-08002be10318}}\\000" + $adapter.DeviceID
Set-ItemProperty -Path $regPath -Name "NetworkAddress" -Value "{mac_no_colon}"
Restart-NetAdapter -Name "{interface}"
'''
subprocess.run(['powershell', '-Command', cmd])
def main():
interface = "eth0" if platform.system() == "Linux" else "en0"
print(f"Current MAC: {get_current_mac(interface)}")
new_mac = generate_random_mac(local=True)
print(f"Generated MAC: {new_mac}")
response = input("Apply this MAC? (y/n): ")
if response.lower() == 'y':
set_mac(interface, new_mac)
print(f"New MAC: {get_current_mac(interface)}")
if __name__ == "__main__":
main()
Tools and Resources
Official MAC Address Generator
Orbit2x MAC Address Generator:
- 👉 Generate MAC Addresses
- Features:
- 5 industry formats (colon, hyphen, dot, plain, space)
- 30+ vendor OUI prefixes (Cisco, Apple, VMware, Intel, etc.)
- Unicast/multicast addressing
- Locally/universally administered
- Batch generation (up to 100 addresses)
- One-click copy to clipboard
- 100% client-side (private, no data sent to server)
Complementary Orbit2x Tools
Network Planning:
- Subnet Calculator - Plan IP addressing with DHCP reservations
- IP Lookup - Geolocate devices by IP address
- DNS Lookup - Verify DNS records for network services
Development:
- UUID Generator - Generate unique device identifiers
- Random String Generator - Create passwords, API keys
- Hash Calculator - Verify firmware checksums
System Analysis:
- Bottleneck Calculator - Verify server/VM performance
- PSU Calculator - Power requirements for network equipment
- Unit Converter - Convert data rates (Mbps, Gbps)
External MAC Address Resources
IEEE Standards and Databases:
- IEEE Registration Authority - Official OUI registry
- IEEE OUI Public Listing - Search vendor OUIs
- IEEE 802.3 Standard - Ethernet specification (PDF)
- IEEE 802.11 Standard - WiFi specification
OUI Lookup Tools:
- Wireshark OUI Lookup - Identify vendors
- MAC Vendors API - RESTful API for lookups
- MAC Address Lookup - Web-based tool
Network Analysis:
- Wireshark - Packet capture and MAC analysis
- Nmap - Network scanning with MAC detection
- arp-scan - Local network MAC discovery
Virtualization Documentation:
- VMware MAC Addresses - Official VMware MAC ranges
- VirtualBox Networking - MAC assignment documentation
- Docker Networking - Container MAC management
Privacy and Security:
- macchanger - Linux MAC spoofing tool
- RFC 7844 - DHCP Privacy - MAC randomization standard
- EFF: MAC Address Tracking - Privacy implications
Learning Resources
Academic Papers:
- IEEE 802.3 MAC Addressing - Technical deep dive
- MAC Address Randomization Effectiveness - Privacy research
- Large-Scale MAC Tracking Study - Real-world analysis
Wikipedia References:
- MAC Address - Comprehensive overview
- Organizationally Unique Identifier - OUI explained
- ARP - MAC to IP mapping
- Ethernet Frame - Layer 2 structure
Video Tutorials:
- YouTube: NetworkChuck - “MAC Addresses Explained”
- YouTube: Professor Messer - “MAC Address Filtering - CompTIA Network+”
- Cisco Learning Network - MAC addressing in switching
Online Courses:
- Cisco NetAcad: CCNA - Layer 2 addressing (free enrollment)
- Coursera: Computer Networks - Data Link layer fundamentals
- Udemy: Networking Basics - MAC vs IP addressing
Best Practices and Quick Reference
MAC Address Generation Rules of Thumb
✅ Use vendor OUI for realism (VMs should use VMware 00:50:56, not random)
✅ Set bit 1 for locally administered (prevents conflicts with real hardware)
✅ Ensure bit 0 = 0 for unicast (99.9% of use cases)
✅ Document assignments (spreadsheet of MAC → device/VM mapping)
✅ Check for duplicates (collision = network failure)
✅ Use consistent format (match OS: colon for Linux, hyphen for Windows)
✅ Reserve ranges (dev: 02:00:00:xx:xx:xx, prod: 02:00:01:xx:xx:xx)
✅ Test before deployment (ping test, ARP table verification)
Format Selection by Platform
| Platform | Format | Example | Command |
|---|---|---|---|
| Linux/Unix | Colon | 00:1A:2B:3C:4D:5E |
ip link |
| Windows | Hyphen | 00-1A-2B-3C-4D-5E |
ipconfig /all |
| Cisco IOS | Dot | 001A.2B3C.4D5E |
show interfaces |
| Programming/API | Plain | 001A2B3C4D5E |
Database storage |
| IEEE Docs | Space | 00 1A 2B 3C 4D 5E |
Standards |
Common MAC Prefix Reference
Virtualization:
00:50:56:xx:xx:xx VMware ESXi/Workstation
08:00:27:xx:xx:xx VirtualBox
00:15:5D:xx:xx:xx Microsoft Hyper-V
00:16:3E:xx:xx:xx Xen
52:54:00:xx:xx:xx KVM/QEMU (default)
Locally Administered (Safe for Custom Use):
02:xx:xx:xx:xx:xx General locally administered
06:xx:xx:xx:xx:xx Alternative
0A:xx:xx:xx:xx:xx Alternative
0E:xx:xx:xx:xx:xx Alternative
02:42:xx:xx:xx:xx Docker containers
Multicast (Group Addressing):
01:00:5E:xx:xx:xx IPv4 multicast
33:33:xx:xx:xx:xx IPv6 multicast
01:80:C2:00:00:xx Reserved protocols (STP, LLDP)
Address Type Quick Check
def analyze_mac(mac):
# Remove delimiters
clean = mac.replace(':', '').replace('-', '').replace('.', '')
# Get first octet
first_octet = int(clean[0:2], 16)
# Check bit 0 (I/G)
is_multicast = bool(first_octet & 0x01)
# Check bit 1 (U/L)
is_local = bool(first_octet & 0x02)
return {
'multicast': is_multicast,
'locally_administered': is_local,
'type': 'multicast' if is_multicast else 'unicast',
'admin': 'local' if is_local else 'universal'
}
# Examples
print(analyze_mac('00:1A:2B:3C:4D:5E'))
# {'multicast': False, 'locally_administered': False, 'type': 'unicast', 'admin': 'universal'}
print(analyze_mac('02:1A:2B:3C:4D:5E'))
# {'multicast': False, 'locally_administered': True, 'type': 'unicast', 'admin': 'local'}
print(analyze_mac('01:00:5E:01:02:03'))
# {'multicast': True, 'locally_administered': False, 'type': 'multicast', 'admin': 'universal'}
Common Pitfalls to Avoid
❌ Don’t use all zeros (00:00:00:00:00:00 - invalid address)
❌ Don’t use broadcast (FF:FF:FF:FF:FF:FF - only for destination)
❌ Don’t clone VMs without changing MAC (catastrophic network failure)
❌ Don’t use manufacturer OUIs without IEEE license (trademark/legal issues)
❌ Don’t forget to document (lost MAC assignments = troubleshooting nightmare)
❌ Don’t assume uniqueness (always test for collisions in your network)
❌ Don’t mix formats (consistency is key for automation/scripts)
❌ Don’t hardcode MACs in software (use configuration files for flexibility)
Conclusion: Mastering MAC Address Management
Key Takeaways
1. MAC Addresses are Critical Network Identifiers
- Operate at Layer 2 (Data Link) enabling local network communication
- Required for ARP, switching, DHCP, and access control
- Globally unique when IEEE OUI-assigned (manufacturer responsibility)
- Locally customizable for VMs, testing, privacy (set bit 1 to 1)
2. Understanding Structure Prevents Errors
- 48 bits = OUI (24) + NIC (24)
- Bit 0 = unicast (0) vs multicast (1)
- Bit 1 = universal (0) vs local (1)
- 5 formats: colon, hyphen, dot, plain, space (platform-specific)
3. Use Cases Span Enterprise to Consumer
- Virtual machine deployment (VMware, VirtualBox, Hyper-V)
- Network testing (GNS3, Packet Tracer simulations)
- DHCP reservations (MAC-based static IPs)
- IoT manufacturing (factory programming ESP32, Arduino)
- Privacy protection (MAC randomization on public WiFi)
- Security research (authorized penetration testing)
4. Vendor OUIs Enable Device Identification
- 36,000+ registered IEEE OUIs globally
- Major vendors: Cisco (
00:1E:14), Apple (00:1B:63), Intel (00:15:17) - Virtualization: VMware (
00:50:56), Hyper-V (00:15:5D) - Locally administered (
02:xx:xx:xx:xx:xx) for custom use
5. Proper Management Prevents Catastrophic Failures
- Duplicate MACs cause broadcast storms, ARP poisoning, packet loss
- Document all assignments (spreadsheet or database)
- Use our MAC Address Generator for conflict-free addresses
- Test deployments before production (ARP table verification)
MAC Address Checklist
For Virtual Machine Deployment:
- Generate MACs with vendor OUI (VMware for vSphere, locally admin for others)
- Document MAC → VM mapping in CMDB
- Configure DHCP reservations if needed
- Test for conflicts (ping, ARP scan)
- Script assignment for automation (PowerCLI, Terraform)
For Network Testing:
- Assign vendor-appropriate OUIs (Cisco for routers, realistic simulation)
- Use consistent format (dot for Cisco, colon for Linux)
- Document lab topology with MAC assignments
- Practice ARP, CAM table exercises with real MACs
For IoT Manufacturing:
- Purchase IEEE OUI ($1,265-$3,190 based on scale)
- Generate MAC pool in database
- Implement programming fixtures
- Test network connectivity post-programming
- Track assignments for warranty/support
For Privacy Protection:
- Enable OS-level MAC randomization (iOS 14+, Android 10+, Windows 11)
- Use different MAC per WiFi network
- Rotate MACs periodically (daily or weekly)
- Verify locally administered bit is set (
02,06,0A,0E)
Next Steps
1. Generate Your MACs:
👉 Use MAC Address Generator Now
- Select vendor (30+ options) or locally administered
- Choose format (colon, hyphen, dot, plain, space)
- Batch generate up to 100 addresses
- Copy to clipboard or export
2. Plan Your Network:
- Subnet Calculator - Design IP addressing scheme
- IP Lookup - Identify device locations
- DNS Lookup - Verify network services
3. Analyze Performance:
- Bottleneck Calculator - Server/VM sizing
- PSU Calculator - Network equipment power
4. Explore More Tools:
- Browse 50+ Tools - Complete toolkit
- Technical Blog - Deep dive guides
5. Get Support:
- Contact Us - MAC addressing questions
- FAQ - Common issues
Frequently Asked Questions (FAQ)
Q: What’s the difference between a MAC address and an IP address?
A: MAC and IP addresses serve different purposes at different network layers:
MAC Address (Layer 2 - Data Link):
- Purpose: Hardware identification within local network (same subnet)
- Format: 48-bit hexadecimal (
00:1A:2B:3C:4D:5E) - Assignment: Manufacturer (burned into NIC) or administratively set
- Scope: Local network only (not routed beyond Layer 2 boundary)
- Changes: Rarely (only when NIC replaced or manually overridden)
- Used by: Switches, ARP, Ethernet frames
IP Address (Layer 3 - Network):
- Purpose: Logical addressing for routing across networks
- Format: IPv4 32-bit (
192.168.1.10) or IPv6 128-bit (2001:db8::1) - Assignment: DHCP (dynamic) or static configuration
- Scope: Global (can route across internet)
- Changes: Frequently (DHCP lease expiration, network changes)
- Used by: Routers, IP packets, internet communication
Analogy:
- MAC address = Your apartment number (identifies you in your building)
- IP address = Your full mailing address (identifies you globally for mail delivery)
Relationship:
- ARP (Address Resolution Protocol) maps IP → MAC on local network
- Example: “Who has IP 192.168.1.100?” → Response: “I do, my MAC is 00:1A:2B:3C:4D:5E”
When you need which:
- MAC: Switch port security, DHCP reservations, Wake-on-LAN, access control
- IP: Routing, firewall rules, DNS, application addressing
Q: Can two devices have the same MAC address?
A: Technically yes, but it causes catastrophic network failures:
What Happens with Duplicate MACs:
Scenario: Two devices (00:1A:2B:3C:4D:5E) on same subnet
Switch Behavior:
Switch CAM Table:
MAC Address Port VLAN
00:1A:2B:3C:4D:5E Gi0/1 10
00:1A:2B:3C:4D:5E Gi0/2 10 ← Duplicate!
Result: Switch "flaps" between ports, forwarding to wrong device
Consequences:
- Packet loss: Frames sent to wrong device (50% packet loss)
- ARP confusion: IP address binds to wrong MAC
- DHCP conflicts: Server assigns same IP to both devices
- Authentication failures: 802.1X thinks one device, sees two
- Broadcast storms: Switches flood frames trying to resolve
Real-World Example:
“Cloned 100 VMs from same template, forgot to change MACs. Entire data center network collapsed in 5 minutes. Switches maxed CPU trying to learn MAC tables. Took 2 hours to identify root cause.” - Reddit r/sysadmin
How to Prevent:
1. Virtual Machines:
# VMware: Auto-generate new MAC on clone
# Ensure "Generate New MAC Addresses" is checked
# Check for duplicates
Get-VM | Get-NetworkAdapter | Group-Object MacAddress | Where {$_.Count -gt 1}
2. Network Scan:
# Find duplicate MACs on network
sudo arp-scan -l | sort -k2 | uniq -D -f 1
3. Switch Detection:
! Cisco: Show MAC address table
Switch# show mac address-table | include 001a.2b3c.4d5e
1 001a.2b3c.4d5e DYNAMIC Gi0/1
1 001a.2b3c.4d5e DYNAMIC Gi0/2 ← Duplicate detected!
Are Global Duplicates Possible?
Yes, but extremely rare:
- Manufacturers assign sequential MACs within their OUI
- 16.7 million addresses per OUI (2^24)
- Theoretically possible if manufacturer reuses range
- Practically impossible on same network (statistical improbability)
Exception: Different VLANs/subnets (Layer 3 boundaries) can have duplicate MACs without issues, since they’re isolated Layer 2 domains.
Q: How do I find the vendor of a MAC address?
A: Use the first 6 hex digits (OUI) to identify the manufacturer:
Method 1: Online OUI Lookup
IEEE Official Database:
- Visit: IEEE OUI Public Listing
- Enter first 6 digits:
00:1A:2Bor00-1A-2Bor001A2B - Returns vendor name
Wireshark OUI Lookup:
- Visit: Wireshark OUI Lookup
- Enter MAC:
00:1A:2B:3C:4D:5E - Instant result: Cisco Systems, Inc.
Our Tool:
- MAC Address Generator (reverse lookup coming soon)
- Select vendor to see their OUI prefixes
Method 2: Command Line Tools
Linux/macOS:
# Install ieee-oui package
pip install python-oui
# Lookup
python-oui 00:1A:2B:3C:4D:5E
# Output: Cisco Systems, Inc.
PowerShell (Windows):
# Download OUI database
Invoke-WebRequest -Uri "http://standards-oui.ieee.org/oui/oui.txt" -OutFile oui.txt
# Search
Select-String -Path oui.txt -Pattern "00-1A-2B"
# Output: 00-1A-2B (hex) Cisco Systems, Inc.
Method 3: Wireshark Packet Capture
- Capture traffic: Wireshark → Start
- Select packet → Ethernet II → Source/Destination
- Wireshark auto-resolves:
Cisco_12:34:56 (00:1a:2b:12:34:56)
Method 4: Programmatic Lookup (API)
Python:
import requests
def lookup_vendor(mac):
# Remove delimiters
clean = mac.replace(':', '').replace('-', '').replace('.', '')
oui = clean[0:6]
# Query API
response = requests.get(f"https://api.macvendors.com/{mac}")
if response.status_code == 200:
return response.text
else:
return "Vendor not found"
print(lookup_vendor('00:1A:2B:3C:4D:5E'))
# Output: Cisco Systems, Inc
cURL:
curl https://api.macvendors.com/00:1A:2B:3C:4D:5E
# Output: Cisco Systems, Inc
Common Vendor OUI Reference:
00:1A:2B → Cisco Systems
00:50:56 → VMware, Inc.
00:1B:63 → Apple, Inc.
AC:BC:32 → Apple, Inc.
08:00:27 → Oracle VirtualBox
00:15:5D → Microsoft Hyper-V
00:15:17 → Intel Corporation
Unknown/Custom MACs:
- Locally administered (
02:xx:xx:xx:xx:xx) won’t be in IEEE database - Custom OUI: Some vendors don’t register publicly (CID option)
- Old equipment: Devices from defunct companies (acquisitions, bankruptcies)
Q: Is MAC address spoofing illegal?
A: Legal status depends on intent and context:
Legal Uses (Authorized):
1. Privacy Protection:
iOS/Android MAC randomization: Legal
Public WiFi privacy: Legal
Preventing tracking: Legal
- No law against changing your own device’s MAC
- Comparable to using VPN or private browsing
2. Network Testing:
Authorized penetration testing: Legal (with permission)
Lab environments: Legal (your own network)
Professional training (CCNA labs): Legal
3. Technical Purposes:
Virtual machine configuration: Legal
IoT device programming: Legal
Bypassing broken DHCP server: Legal (your own network)
Illegal Uses (Unauthorized):
1. Bypassing Access Control:
Spoofing neighbor's MAC to steal WiFi: Illegal
- Computer Fraud and Abuse Act (CFAA) violation
- Theft of services
- Potential $250,000 fine + prison
2. Network Intrusion:
MAC spoofing to bypass corporate security: Illegal
- CFAA 18 U.S.C. § 1030
- Unauthorized access to protected computer
- Federal crime in USA
3. Identity Theft:
Impersonating another device for fraud: Illegal
- Wire fraud (18 U.S.C. § 1343)
- Identity theft statutes
Legal Precedents:
United States:
- CFAA (Computer Fraud and Abuse Act): Criminalizes unauthorized access
- Wiretap Act: Intercepting communications via MAC spoofing
- No specific “MAC spoofing” law, but covered under broader cybercrime statutes
Europe (GDPR):
- MAC randomization encouraged for privacy
- MAC addresses considered personal data (requires consent for tracking)
United Kingdom:
- Computer Misuse Act 1990: Unauthorized access via MAC spoofing = crime
- Maximum penalty: 10 years imprisonment
Authorized Penetration Testing:
Written agreement ("get out of jail free card"):
- Scope of work defining allowed techniques
- MAC spoofing for authorized security assessment
- Legal protection if discovered by third parties
Best Practice:
- Own network: Legal to change your own device MACs
- Employer network: Get IT authorization in writing
- Public WiFi: Privacy randomization legal, bypassing payment illegal
- Penetration testing: Signed contract required
Bottom Line:
- Changing your own device MAC: Legal
- Impersonating someone else’s device: Illegal
Reference: CFAA Overview
Q: Can WiFi networks block MAC addresses?
A: Yes, via MAC filtering (whitelist or blacklist):
How MAC Filtering Works:
Whitelist (Allow List):
Router Configuration:
Allowed MACs:
- 00:1A:2B:3C:4D:5E (John's laptop)
- 00:50:56:12:34:56 (Server)
- AC:BC:32:AB:CD:EF (Jane's iPhone)
Result: Only listed MACs can connect, all others blocked
Blacklist (Deny List):
Router Configuration:
Blocked MACs:
- 01:23:45:67:89:AB (Suspicious device)
- DE:AD:BE:EF:CA:FE (Former employee)
Result: Listed MACs blocked, all others allowed
Configuration Examples:
Consumer Router (Web GUI):
- Access router:
http://192.168.1.1 - Wireless → MAC Filtering
- Enable: “Allow” or “Deny” mode
- Add MACs:
00:1A:2B:3C:4D:5E - Save/Apply
Cisco Business Router:
! Create access list
access-list 700 permit 001a.2b3c.4d5e 0000.0000.0000
access-list 700 permit 0050.5612.3456 0000.0000.0000
! Apply to wireless interface
interface Dot11Radio0
bridge-group 1
bridge-group 1 subscriber-loop-control
bridge-group 1 spanning-disabled
bridge-group 1 block-unknown-source
no bridge-group 1 source-learning
no bridge-group 1 unicast-flooding
bridge-group 1 input-address-list 700
Linux hostapd (WiFi AP):
/etc/hostapd/hostapd.conf:
macaddr_acl=1 # 0=accept all, 1=whitelist, 2=use external RADIUS
accept_mac_file=/etc/hostapd/accept_mac.txt
/etc/hostapd/accept_mac.txt:
00:1a:2b:3c:4d:5e
00:50:56:12:34:56
ac:bc:32:ab:cd:ef
Effectiveness and Limitations:
Pros:
- Simple to configure
- Immediate blocking (no authentication attempt)
- Low overhead (hardware-level filtering)
Cons:
- Easily bypassed: Attacker clones allowed MAC
- Management burden: Adding every device manually
- Mobile devices: Randomized MACs break whitelists
- False security: Users think network is “secure”
Bypass Example:
# Attacker sniffs allowed MACs
sudo airodump-ng wlan0mon
# Sees allowed MAC: 00:1A:2B:3C:4D:5E
# Clones MAC
sudo ifconfig wlan0 down
sudo ifconfig wlan0 hw ether 00:1A:2B:3C:4D:5E
sudo ifconfig wlan0 up
# Connects successfully (filter bypassed)
Better Alternatives:
WPA3-Enterprise (802.1X):
- Certificate-based authentication
- MAC filtering + credentials
- Per-user encryption keys
RADIUS Server:
- Centralized authentication
- Can use MAC + username/password
- Audit logging
Captive Portal:
- Web-based authentication
- Can enforce MAC registration
- Guest access management
When MAC Filtering Makes Sense:
- Home network: Simple device management
- IoT devices: Whitelist known sensors/cameras
- Legacy equipment: Devices without WPA2/3 support
- Defense in depth: Additional layer (not sole security)
When NOT to Use:
- Primary security: Use WPA3 instead
- Enterprise networks: Use 802.1X/RADIUS
- Public WiFi: Use captive portal + firewall
Q: Do I need to pay IEEE to generate MAC addresses?
A: Only if you want universally administered (global) MACs with vendor identification:
Free Options (Locally Administered):
No Payment Required:
- Set bit 1 of first octet to
1:02,06,0A,0E,12,16, etc. - Generate unlimited addresses:
02:xx:xx:xx:xx:xx - Valid for: VMs, testing, internal use, personal projects
- Our MAC Address Generator creates these free
Example:
Locally Administered MACs (Free):
02:00:00:12:34:56
06:A1:B2:C3:D4:E5
0A:11:22:33:44:55
No IEEE registration needed
No vendor identification
Administrator ensures uniqueness
Paid Options (IEEE OUI):
When You Must Pay:
- Manufacturing network equipment commercially
- Want vendor identification in OUI lookup tools
- Need globally unique addresses (IEEE guarantees no conflicts)
- Legal requirement to use registered prefix
Pricing (2025):
| Type | Cost | Addresses | Public | Use Case |
|---|---|---|---|---|
| MA-L | $3,190 | 16,777,216 (2^24) | Yes | Large manufacturers (Cisco, Apple) |
| MA-M | $2,535 | 1,048,576 (2^20) | Yes | Medium manufacturers |
| MA-S | $1,265 | 4,096 (2^12) | Yes | Small batches, prototypes |
| CID | $2,535 | 16,777,216 | No | Private use (not in public DB) |
Purchase Process:
- Visit IEEE Registration Authority
- Select MA-L/MA-M/MA-S
- Provide company information
- Pay fee (credit card/wire transfer)
- Receive OUI assignment (1-2 weeks)
- Appears in public database
Cost Justification:
Scenario 1: Hobbyist Building Smart Home Devices
- Quantity: 10 devices
- Solution: Locally administered MACs (
02:xx:xx:xx:xx:xx) - Cost: $0 (use our free generator)
Scenario 2: Startup Manufacturing 50,000 IoT Sensors/Year
- Quantity: 50,000 devices
- Solution: MA-L OUI ($3,190)
- Cost per device: $3,190 / 50,000 = $0.06 per device
- Benefit: Vendor identification, global uniqueness
Scenario 3: Enterprise Deploying 5,000 VMs
- Quantity: 5,000 VMs
- Solution: Locally administered MACs or virtualization vendor OUI
- Cost: $0 (VMware provides OUI
00:50:56)
Break-Even Analysis:
MA-L cost: $3,190
Alternative (locally admin): $0
Need to manufacture 1 device to justify? No
Need to manufacture 10,000 devices? Possibly
Manufacturing commercially? Yes (brand value)
Free Alternatives for Commercial Use:
1. Virtualization Platform OUIs:
Use vendor's OUI if deploying on their platform:
- VMware: 00:50:56 (included with license)
- VirtualBox: 08:00:27 (open-source, free)
- Hyper-V: 00:15:5D (included with Windows Server)
2. Open-Source Hardware:
Some projects provide OUI ranges:
- Arduino: No official OUI (use locally administered)
- ESP32: Espressif provides OUIs for commercial licensees
3. Contract Manufacturing:
ODM (Original Design Manufacturer) includes MAC in production:
- Factory assigns from their OUI
- No IEEE purchase required by you
- Product appears under manufacturer's vendor ID
Bottom Line:
- Personal/internal use: Free locally administered MACs
- Commercial manufacturing: Consider MA-L for branding
- VMs/testing: Free (use platform OUI or locally admin)
Q: What’s the difference between MAC filtering and 802.1X?
A: MAC filtering is Layer 2 hardware-based; 802.1X is credential-based authentication:
MAC Filtering (Simple but Weak):
How it Works:
- Device broadcasts association request (WiFi) or sends Ethernet frame
- Access point/switch checks MAC against whitelist
- If allowed → Grant access, if denied → Block
Configuration:
Router: Wireless → MAC Filtering
- Mode: Allow
- MACs: 00:1A:2B:3C:4D:5E, 00:50:56:12:34:56
Pros:
- ✅ Simple to configure (web GUI)
- ✅ No client software required
- ✅ Works with any device (even IoT without auth support)
- ✅ Low overhead (hardware filtering)
Cons:
- ❌ Easily bypassed (attacker clones allowed MAC)
- ❌ Manual management (add every device)
- ❌ No user accountability (shared device MACs)
- ❌ Mobile randomization breaks it (iOS/Android)
- ❌ False sense of security
Bypass:
# Attacker observes allowed MAC
sudo airodump-ng wlan0mon
# Sees: 00:1A:2B:3C:4D:5E (allowed device)
# Spoof MAC
sudo macchanger -m 00:1A:2B:3C:4D:5E wlan0
# Connect successfully (bypassed in 30 seconds)
802.1X (Enterprise-Grade):
How it Works:
- Device connects → 802.1X supplicant initiates
- Authenticator (switch/AP) relays to RADIUS server
- RADIUS validates credentials (username/password or certificate)
- Success → RADIUS returns VLAN, ACL → Grant access
- Failure → Block
Components:
- Supplicant: Client software (built into Windows/macOS/Linux)
- Authenticator: Switch or wireless AP
- Authentication Server: RADIUS (FreeRADIUS, Cisco ISE, Microsoft NPS)
Authentication Methods:
- EAP-TLS: Certificate-based (most secure, no passwords)
- PEAP-MSCHAPv2: Username/password with TLS tunnel
- EAP-TTLS: Username/password (less common)
Configuration Example (Cisco Switch):
! Enable AAA
aaa new-model
aaa authentication dot1x default group radius
! RADIUS server
radius server ISE
address ipv4 192.168.1.100 auth-port 1812 acct-port 1813
key SecureKey123
! Interface config
interface GigabitEthernet0/1
description User Access Port
switchport mode access
authentication port-control auto
dot1x pae authenticator
Windows 802.1X Client:
Network Adapter → Properties → Authentication
- Enable IEEE 802.1X authentication
- Method: Microsoft: Protected EAP (PEAP)
- Validate server certificate
- Trusted Root CA: CompanyCA
- Authentication: EAP-MSCHAPv2
- Username: john.doe
- Password: ******
Pros:
- ✅ Strong security (credentials + encryption)
- ✅ User-based (not device-based) - accountability
- ✅ Centralized management (RADIUS server)
- ✅ Dynamic VLAN assignment (role-based access)
- ✅ Cannot bypass (no valid credentials = no access)
- ✅ Certificate-based (no passwords)
- ✅ Audit trail (who connected when)
Cons:
- ❌ Complex setup (RADIUS server, certificates)
- ❌ Client configuration required (supplicant)
- ❌ Incompatible with some IoT devices (no supplicant)
- ❌ Higher overhead (authentication process)
- ❌ Single point of failure (RADIUS down = no access)
Comparison Table:
| Feature | MAC Filtering | 802.1X (PEAP) | 802.1X (EAP-TLS) |
|---|---|---|---|
| Security | Low | High | Very High |
| Setup Complexity | Easy | Medium | Hard |
| User Authentication | No | Yes | Yes |
| Bypass Difficulty | Trivial | Hard | Very Hard |
| IoT Support | Yes | Limited | Limited |
| Certificate Needed | No | Server only | Server + client |
| Cost | Free | RADIUS server | RADIUS + PKI |
| Scalability | Poor | Excellent | Excellent |
Best Use Cases:
MAC Filtering:
- Home networks (simple device management)
- IoT-only networks (cameras, sensors, printers)
- Guest WiFi (combined with captive portal)
- Defense in depth (additional layer, not primary)
802.1X:
- Enterprise corporate WiFi (employee access)
- Secure wired networks (dynamic VLAN assignment)
- BYOD policies (certificate distribution)
- Compliance requirements (HIPAA, PCI-DSS, SOC 2)
Hybrid Approach:
Network Segmentation:
- Employee SSID: WPA3-Enterprise + 802.1X (EAP-TLS)
- IoT SSID: WPA2 + MAC whitelist (cameras, sensors)
- Guest SSID: Captive portal (no 802.1X, limited access)
Recommendation:
- Small business/home: MAC filtering acceptable (understand limitations)
- Enterprise: 802.1X mandatory (security requirement)
- Hybrid: Both (802.1X for users, MAC for IoT)
Ready to generate your MAC addresses?
👉 Launch MAC Address Generator Now
Explore More:
- All Network Tools - Complete toolkit
- Technical Blog - Deep dive guides
- Contact Support - MAC addressing questions
Last updated: November 2025
Keywords: mac address generator, ieee 802, oui prefix, vendor mac address, generate mac address, random mac generator, vmware mac address, cisco mac format, locally administered mac, universally administered mac, mac address lookup, mac spoofing, dhcp mac reservation, virtual machine mac, network testing mac, arp table mac, mac randomization, privacy mac address, mac filtering bypass, 802.1x authentication