IPv6 Privacy Addresses (RFC 4941/8981)
SLAAC privacy extensions: temporary vs stable interface identifiers, how they protect privacy, and configuration guidance.
What are IPv6 Privacy Addresses?
IPv6 privacy addresses (temporary addresses) are automatically generated to prevent tracking based on stable interface identifiers. They're created alongside stable addresses and change periodically. Without privacy extensions, devices use predictable interface identifiers (often based on MAC addresses), making them trackable across networks.
The Privacy Problem
Standard IPv6 addresses often contain predictable interface identifiers that remain constant across different networks, creating privacy concerns similar to a permanent device fingerprint.
IPv6 Address Types
2001:db8:1234:5678:21a:2bff:fe3c:4d5e
Characteristics:
- Interface identifier stays the same across networks
- Often derived from MAC address using EUI-64
- Predictable and trackable across network changes
- Required for some services that need consistent addressing
2001:db8:1234:5678:a1b2:c3d4:e5f6:7890
Characteristics:
- Randomly generated interface identifier
- Changes periodically (daily by default)
- Multiple temporary addresses can coexist
- Used for outbound connections by default
2001:db8:1234:5678:9abc:def0:1234:5678
Characteristics:
- Stable within the same network
- Changes when moving to different networks
- More predictable than temporary addresses
- Good balance of privacy and stability
How Privacy Extensions Work
Address Generation Process
- Device receives Router Advertisement with prefix
- Creates stable address using EUI-64 or configured method
- Generates temporary address using cryptographic random bits
- Both addresses are assigned to the same interface
- Temporary address preferred for outbound connections
Temporary Address Lifecycle
- New temporary address generated periodically
- Old temporary addresses remain valid until expiry
- Multiple temporary addresses can coexist
- Addresses have preferred and valid lifetimes
- Deprecated addresses still accept incoming traffic
Default Operating System Behavior
- Outbound connections use temporary addresses
- Inbound services use stable addresses
- Applications can request specific address types
- Operating system manages address selection automatically
Address Lifetimes
Operating System Support
Configuration:
netsh interface ipv6 set global randomizeidentifiers=enabled
netsh interface ipv6 set privacy state=enabled
Registry: HKLM\System\CurrentControlSet\Services\Tcpip6\Parameters
Useful Commands:
netsh interface ipv6 show privacy
netsh interface ipv6 show addresses
Configuration:
sysctl net.ipv6.conf.all.use_tempaddr=2
sysctl net.ipv6.conf.default.use_tempaddr=2
/proc/sys/net/ipv6/conf/*/use_tempaddr
Values:
0 = Disabled
1 = Enabled but prefer stable
2 = Enabled and prefer temporary
Useful Commands:
ip -6 addr show scope global
cat /proc/sys/net/ipv6/conf/eth0/use_tempaddr
Configuration:
Built into system preferences
networksetup command line tool
System-wide setting affects all interfaces
Useful Commands:
ifconfig | grep inet6
networksetup -getinfo Wi-Fi
Configuration:
Settings > Network & Internet > Advanced
Developer options for advanced control
Per-network configuration possible
Useful Commands:
Identifying Address Types
Method | Stable Address | Temporary Address | Example |
---|---|---|---|
Interface Identifier Pattern | Often contains 'fffe' in middle (EUI-64) or predictable pattern | Random-looking interface identifier | Stable: ::21a:2bff:fe3c:4d5e vs Temporary: ::a1b2:c3d4:e5f6:7890 |
Address Consistency | Same interface ID across different network prefixes | Different interface ID on each network | Device keeps same ::21a:2bff:fe3c:4d5e on all networks vs random on each |
Command Output | Often labeled as 'permanent' or primary | Labeled as 'temporary' or 'deprecated' | Linux ip command shows 'temporary' flag |
Troubleshooting
Symptoms: Same IPv6 address on different networks, Tracking concerns
Diagnosis: Check OS privacy extension settings
- Enable privacy extensions in OS settings
- Verify router supports SLAAC
- Check for disabled IPv6 privacy in network manager
Symptoms: Multiple IPv6 addresses per interface, Address list constantly changing
Diagnosis: Privacy extensions working normally
- This is normal behavior for privacy extensions
- Adjust regeneration timers if needed
- Reduce max temporary addresses if causing issues
Symptoms: Server not reachable, Unexpected source addresses
Diagnosis: Address selection preference issues
- Configure application to bind specific addresses
- Adjust address selection policy
- Use stable addresses for server applications
Symptoms: Always using stable addresses for outbound
Diagnosis: Address selection policy favoring stable addresses
- Configure temporary address preference
- Check application-specific settings
- Verify privacy extension configuration
Security Considerations
Benefits:
- Prevents device tracking across networks
- Makes traffic analysis more difficult
- Reduces correlation of activities
- Protects against location tracking
Limitations:
- Application-layer tracking still possible
- DNS queries may reveal information
- Stable addresses still exposed for services
- Requires proper application configuration
Benefits:
- Devices harder to target maliciously
- Reduces effectiveness of IP-based blocking
- Makes reconnaissance more difficult
Challenges:
- Harder to whitelist specific devices
- Complicates network troubleshooting
- May interfere with IP-based access control
- Requires different monitoring approaches
When to Use Privacy Addresses
Best Practices
- Enable privacy extensions on client devices
- Use stable addresses only for servers and infrastructure
- Configure appropriate regeneration intervals
- Monitor for privacy extension support in applications
- Balance privacy with network management needs
- Document which services require stable addressing
- Test applications with privacy addresses enabled
- Consider RFC 7217 stable privacy addresses for better balance
Common Mistakes
- Assuming all IPv6 addresses are permanent
- Not testing applications with privacy addresses
- Blocking temporary addresses in firewalls
- Using temporary addresses for server services
- Not understanding address selection preferences
- Confusing temporary addresses with link-local addresses
- Expecting consistent addressing with privacy extensions enabled