EUI-64 (Extended Unique Identifier-64) is a method used to automatically generate IPv6 interface identifiers from a network device's MAC address. This technique was designed to simplify IPv6 address configuration by leveraging the unique hardware identifier already present in every network interface card. While elegant in concept, EUI-64 has become controversial due to significant privacy implications, leading to the development of alternative addressing methods.
EUI-64 is a standardized method for creating 64-bit interface identifiers from 48-bit MAC addresses. In IPv6, addresses are 128 bits long, divided into two parts:
The primary purpose of EUI-64 was to enable Stateless Address Autoconfiguration (SLAAC), allowing devices to automatically configure their own IPv6 addresses without requiring a DHCP server. By deriving the interface identifier from the MAC address, every device could generate a unique, globally routable IPv6 address with minimal configuration.
The EUI-64 approach offered several advantages:
The actual format used in IPv6 is called Modified EUI-64, involving three specific steps to transform a 48-bit MAC address into a 64-bit interface identifier.
A MAC address consists of 48 bits (6 bytes), typically written in hexadecimal format separated by colons or hyphens:
Example MAC Address: FC-99-47-75-CE-E0
The MAC address is divided into two 24-bit segments:
To expand the 48-bit MAC address to 64 bits, the hexadecimal value FFFE (16 bits) is inserted between the two 24-bit segments:
Original MAC: FC-99-47 75-CE-E0
After Insertion: FC-99-47-FF-FE-75-CE-E0
This distinctive FFFE pattern serves as a clear indicator that an IPv6 address was generated using EUI-64.
The seventh bit from the left (the U/L bit in the first byte) is inverted:
This bit flip changes the meaning from "locally administered" to "globally unique" (or vice versa).
For our example:
First Byte: FC (binary: 11111100)
Flip bit 7: (binary: 11111110)
Result: FE (hexadecimal)
The final modified EUI-64 becomes: FE99:47FF:FE75:CEE0
Let's walk through a complete example with MAC address 39-A7-94-07-CB-D0:
Original MAC Address:
39-A7-94-07-CB-D0
Step 1 - Split into two parts:
Left 24 bits: 39-A7-94
Right 24 bits: 07-CB-D0
Step 2 - Insert FFFE:
39-A7-94-FF-FE-07-CB-D0
Step 3 - Flip bit 7 of first byte:
First byte: 39 (hex) = 00111001 (binary)
Flip bit 7: 00111011 (binary)
Result: 3B (hex)
Final Modified EUI-64 Interface Identifier:
3BA7:94FF:FE07:CBD0
If the network prefix is 2001:db8:1234:5678::/64, the complete IPv6 address becomes:
Network Prefix: 2001:0db8:1234:5678
Interface ID: 3ba7:94ff:fe07:cbd0
Complete Address: 2001:0db8:1234:5678:3ba7:94ff:fe07:cbd0
The universal/local bit flip might seem counterintuitive, but it serves an important purpose:
The bit flip ensures that the vast majority of commercially produced network cards (which have globally unique MAC addresses with U/L=0) will result in EUI-64 addresses with U/L=1, properly indicating their global uniqueness.
While technically elegant, EUI-64 introduces severe privacy vulnerabilities that have led to its decline in popularity.
Because MAC addresses are permanent hardware identifiers, EUI-64-generated IPv6 addresses remain constant regardless of which network the device connects to. This creates a persistent fingerprint that enables:
Consider a laptop using EUI-64:
At Home: 2001:db8:aaaa:1111:3ba7:94ff:fe07:cbd0
At Work: 2607:f8b0:bbbb:2222:3ba7:94ff:fe07:cbd0
At Café: 2001:470:cccc:3333:3ba7:94ff:fe07:cbd0
Despite changing networks (different prefixes), the interface identifier 3ba7:94ff:fe07:cbd0 remains identical, allowing third parties to track the device's location and activities across all three networks.
A critical flaw: a single device using EUI-64 can compromise the privacy of an entire household. Even if all other devices use privacy extensions, network observers can correlate traffic from one EUI-64 device to identify when other "anonymous" devices belong to the same household.
To address these privacy concerns, RFC 4941 (later updated by RFC 8981) introduced IPv6 Privacy Extensions.
Instead of deriving the interface identifier from the MAC address, privacy extensions:
A device using privacy extensions might have:
Stable address: 2001:db8:1234:5678:a5b3:22c1:d8e9:4f12 (for incoming connections)
Temporary address: 2001:db8:1234:5678:e8d1:9a72:3bc4:5e6f (for outbound, changes hourly)
Most modern operating systems now prefer privacy extensions:
Despite privacy concerns, EUI-64 remains in use for specific scenarios:
Link-local addresses (fe80::/10) frequently use EUI-64 because:
Example link-local address:
fe80::3ba7:94ff:fe07:cbd0
Cisco routers and switches use EUI-64 by default for:
eui-64 keywordApple macOS continues to generate EUI-64-based addresses for certain interfaces, though it also uses privacy extensions for outgoing connections.
Many Internet of Things (IoT) devices and embedded systems use EUI-64 because:
Network administrators may explicitly configure EUI-64 on router interfaces for consistency and easier troubleshooting.
RFC 7217 provides a middle ground between EUI-64 and random privacy extensions:
Dynamic Host Configuration Protocol for IPv6 (DHCPv6) provides centralized address assignment:
Some systems generate truly random interface identifiers during installation that remain static throughout the device's lifetime, providing uniqueness without exposing hardware addresses.
To check whether your device is using EUI-64 or privacy extensions, visit test-ipv6.run and examine your detected IPv6 address.
Look for the telltale FFFE pattern in the middle of the interface identifier (the last 64 bits):
2001:0db8:1234:5678:3ba7:94ff:fe07:cbd0
└───────┬──────────┘
Contains FFFE = EUI-64
Linux/macOS:
ifconfig | grep inet6
ip addr show | grep inet6
Windows:
ipconfig
netsh interface ipv6 show addresses
Look at your global IPv6 addresses:
ff:fe in the interface ID → likely EUI-64EUI-64 represents an elegant solution to IPv6 address autoconfiguration that, unfortunately, conflicts with modern privacy expectations. While it successfully achieves automatic address generation and global uniqueness, the persistent exposure of hardware identifiers creates unacceptable tracking risks for end users.
The networking industry has largely moved away from EUI-64 for general-purpose devices, embracing privacy extensions and stable privacy addresses instead. However, EUI-64 remains relevant for infrastructure devices, link-local addresses, and legacy systems where privacy is less critical or the benefits of simplicity outweigh privacy concerns.
Understanding EUI-64 remains important for network administrators and security professionals, as it's still encountered in:
For personal devices, users should ensure their operating systems use privacy extensions by default. You can verify your current IPv6 configuration and test your connectivity at test-ipv6.run, which provides comprehensive IPv6 connectivity testing and helps identify potential privacy issues in your network configuration.