IPv6 Address Types Reference
Loopback, link-local, ULA, multicast scopes, global unicast โ the full IPv6 address taxonomy.
The IPv6 address taxonomy
IPv6 addresses are 128 bits, written as eight 16-bit groups separated by colons. Unlike IPv4, the value of the first few bits tells you what kind of address it is.
| Prefix | Type | Use |
|---|---|---|
| ::1/128 | Loopback | Localhost. IPv6 equivalent of 127.0.0.1. |
| ::/128 | Unspecified | "No address." Used as source before DHCPv6 assigns one. |
| fe80::/10 | Link-local | Auto-configured on every IPv6 interface. Only valid on the local link. |
| fc00::/7 | Unique Local (ULA) | Private internal use. IPv6 equivalent of RFC 1918. fd00::/8 in practice. |
| 2000::/3 | Global Unicast | Public, internet-routable addresses. |
| 2001:db8::/32 | Documentation | Reserved for examples and docs. Like 192.0.2.0/24 in v4. |
| ::ffff:0:0/96 | IPv4-mapped | How v6 sockets represent v4 connections (::ffff:192.0.2.1). |
| 64:ff9b::/96 | NAT64 | NAT64 prefix translation (v6-only client โ v4 server). |
| ff00::/8 | Multicast | Replaces both v4 broadcast and multicast. |
Link-local โ present on every interface
Every IPv6-enabled interface gets a link-local address (fe80:: + interface ID) automatically. DHCPv6, neighbor discovery, and router advertisements all use link-local. Because link-local isn't unique across links, you must specify the interface โ usually with a zone ID like fe80::1%eth0.
Multicast scopes
| Scope | Reach |
|---|---|
| 1 โ Interface-local | Same machine |
| 2 โ Link-local | Same network segment |
| 5 โ Site-local | Site / corporate network |
| 8 โ Organization-local | Multiple sites of one organization |
| 14 (e) โ Global | The entire internet |
Well-known multicast addresses
| Address | Used for |
|---|---|
| ff02::1 | All nodes on the link |
| ff02::2 | All routers on the link |
| ff02::5 | OSPFv3 routers |
| ff02::1:2 | DHCPv6 servers and relay agents |
| ff02::fb | mDNS / Bonjour |
ULA โ Unique Local Addresses (fc00::/7)
Private internal networks. Format: fd + 40 random bits + 16-bit subnet ID + 64-bit interface ID. The 40 random bits make collisions vanishingly unlikely if two ULAs ever meet. Always use fd00::/8, never fc00::/8 (reserved).
One of the design goals of IPv6 is end-to-end connectivity. There's enough address space that you should never need NAT. Use ULA only for things that should be unreachable from outside; for everything else, give devices real global IPv6 addresses and let the firewall control what's allowed in.
Privacy: don't leak your MAC
Older systems derived the last 64 bits from the MAC address (EUI-64). This leaked your MAC to every server. Modern systems use random "Privacy Extensions" (RFC 4941) that rotate frequently. On Windows: enabled by default. macOS/iOS: enabled by default. Linux: echo 2 > /proc/sys/net/ipv6/conf/all/use_tempaddr.
