IPv6 Unique Local Addresses (fc00::/7)
Understand IPv6 Unique Local Addresses (ULA) in the fc00::/7 range. The IPv6 equivalent of RFC 1918 private addresses, used for internal networks without global routing.
IPv6 Unicast
Detailed Explanation
IPv6 Unique Local Addresses: fc00::/7
Unique Local Addresses (ULA) are the IPv6 equivalent of IPv4 private addresses (10.x, 172.16.x, 192.168.x). They are routable within an organization but not on the public internet.
Range
| Property | Value |
|---|---|
| Full range | fc00:: – fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff |
| Prefix | fc00::/7 |
| Currently used | fd00::/8 (locally assigned) |
| Reserved | fc00::/8 (not yet defined) |
Address Structure
| 7 bits | 1 | 40 bits | 16 bits | 64 bits |
| fc00::/7| L | Global ID | Subnet | Interface ID |
| | | (random) | ID | |
- L bit = 1 (fd00::/8): Locally assigned — this is what you should use
- L bit = 0 (fc00::/8): Reserved for future use
Generating a ULA Prefix
The Global ID should be randomly generated to minimize collision risk:
fd + 40 random bits + ::/48
Example: fd12:3456:789a::/48
ULA vs IPv4 Private Addresses
| Feature | IPv4 Private | IPv6 ULA |
|---|---|---|
| Ranges | 3 ranges (10, 172.16, 192.168) | 1 range (fd00::/8) |
| Collision risk | High (everyone uses same ranges) | Very low (random Global ID) |
| NAT required | Yes (for internet access) | No (use both ULA + global) |
| Unique | Not globally unique | Probabilistically unique |
Best Practice
Use ULA alongside global unicast addresses. Each interface gets both:
- A global address for internet communication
- A ULA address for internal services that should never be exposed
Use Case
An organization assigns fd12:3456:789a::/48 as their ULA prefix for internal services, ensuring lab servers communicate locally even if the ISP-provided global prefix changes.