Try the Subnet Calculator β€” IPv4 & IPv6

IPv6 Address Types: Why One Interface Has Link-Local, ULA, and Global Addresses All at Once

A single IPv6 interface normally has 3-4 different addresses simultaneously β€” link-local, unique local (ULA), and one or more global unicast addresses, each with different scope and purpose. Here's what each address type does, why ULAs exist alongside global addresses unlike IPv4's NAT model, and why privacy extensions cause global addresses to rotate.

By sadiqbd Β· June 12, 2026

Share:
IPv6 Address Types: Why One Interface Has Link-Local, ULA, and Global Addresses All at Once

IPv6 doesn't have one "type" of address the way IPv4 effectively does β€” it has several distinct categories with fundamentally different scopes, and a single network interface normally has multiple IPv6 addresses simultaneously, each serving a different purpose

In IPv4, an interface typically has one address, used for everything. IPv6 was designed with multiple address types from the start β€” link-local addresses, unique local addresses, and global unicast addresses each serve different purposes and have different scopes (the network extent over which they're valid/routable) β€” and a typical IPv6-enabled interface has at least two of these simultaneously, which can be confusing when looking at ip addr output and seeing multiple IPv6 addresses where IPv4 shows just one.


Link-local addresses (fe80::/10)

Every IPv6 interface automatically has a link-local address, regardless of any other configuration β€” it's generated automatically (commonly via a method based on the interface's MAC address, or via privacy-oriented random generation in modern implementations) as soon as the interface is brought up, without requiring any DHCP, router, or manual configuration.

Scope: link-local addresses are valid only on the local network segment (link) β€” they're not routable beyond it. Two devices on the same Ethernet segment or WiFi network can communicate using link-local addresses directly; a router will not forward packets with link-local source/destination addresses between different links.

Purpose: link-local addresses enable fundamental IPv6 operations that need to work before any other addressing is configured β€” including the Neighbor Discovery Protocol (IPv6's replacement for ARP, used to discover other devices' link-layer addresses) and Router Advertisement messages (how devices learn about available IPv6 prefixes for further address configuration, discussed below). Link-local addresses are always present β€” even on an interface that has no global connectivity at all, it will have a link-local address and can communicate with other devices on the same link via it.

What you'll see: an address starting with fe80: β€” e.g., fe80::1a2b:3c4d:5e6f:7g8h (with the latter portion derived from the interface identifier).


Unique Local Addresses (ULA) β€” fc00::/7

ULAs are IPv6's rough equivalent to IPv4's private address ranges (192.168.x.x, 10.x.x.x, 172.16-31.x.x) β€” addresses intended for use within a private network, not globally routable on the internet.

Generation: ULA prefixes are typically generated to include a pseudo-random component (intended to make collision between different organizations' ULA prefixes statistically unlikely, even without any central allocation authority β€” unlike IPv4 private ranges, which are small, fixed, well-known ranges that commonly collide between different private networks, e.g., many home networks all using 192.168.1.x).

Why ULAs exist alongside (not instead of) global addresses: unlike IPv4, where a device on a private network typically has only a private address (with NAT providing internet connectivity by translating to a public address at the network boundary), IPv6's design philosophy generally favors every device having a global address (given IPv6's vast address space, the address-exhaustion motivation for NAT doesn't apply) β€” ULAs serve a different purpose: providing addressing that remains stable and internally functional even if global connectivity changes (e.g., if an ISP changes the global IPv6 prefix delegated to a home network β€” which can happen, particularly with prefixes obtained via DHCPv6-PD that aren't guaranteed static β€” devices' global addresses would change accordingly, but ULA addresses, being independent of any ISP-assigned prefix, remain stable for internal communication).

Practical usage pattern: a home network might have devices configured with both a ULA address (for stable internal addressing β€” e.g., for accessing a home NAS or smart home hub by a consistent address, regardless of ISP prefix changes) and a global unicast address (for internet connectivity) β€” using each for its respective purpose.


Global Unicast Addresses (2000::/3, in current allocation practice)

These are the IPv6 addresses that are globally routable on the internet β€” the IPv6 equivalent of a "public IP address" in IPv4 terms.

Allocation: global unicast addresses are allocated hierarchically β€” from IANA to RIRs, to ISPs, to end customers β€” similar in concept to IPv4 allocation, but at a vastly larger scale (individual end-customer allocations are often /64 or larger β€” a /64 alone contains 2^64 addresses, vastly more than the entirety of IPv4's address space).

SLAAC (Stateless Address Autoconfiguration): one common way devices obtain global unicast addresses β€” a router on the local network sends Router Advertisement messages announcing the network's global prefix (e.g., 2001:db8:abcd:1234::/64), and devices combine this prefix with a locally-generated interface identifier (historically MAC-address-derived, though modern implementations often use privacy-oriented random identifiers that change periodically, specifically to avoid the privacy implications of a stable, hardware-derived address being trackable across networks) to form their own global address β€” without requiring a DHCP server in the way IPv4 typically does (though DHCPv6 also exists and is used in some configurations, particularly for networks wanting more centralized address management/tracking).


Temporary/Privacy addresses (RFC 4941)

Building on SLAAC: because a MAC-address-derived interface identifier would be stable across networks (the same device would have the "same" portion of its IPv6 address regardless of which network it connects to, since the MAC address doesn't change) β€” creating a privacy concern (a device could be tracked/correlated across different networks based on this stable identifier portion) β€” RFC 4941 defines privacy extensions: periodically-regenerated, effectively-random interface identifiers used for outgoing connections (the "temporary" or "privacy" addresses), while a more stable address (sometimes still derived in the traditional way, or also managed) might be retained for incoming connections to services the device itself offers (if any).

What you'll observe: a device might have multiple global unicast addresses with the same network prefix but different interface-identifier portions β€” one (or more) "temporary" addresses (changing periodically, used as the source address for new outgoing connections) and one more stable address. This is normal IPv6 behavior on modern operating systems with privacy extensions enabled (which is the default in most current desktop/mobile operating systems) β€” and can initially seem confusing ("why does this device have three different global IPv6 addresses?") without understanding the privacy-extension mechanism.


Multicast addresses (ff00::/8)

IPv6 has no broadcast addresses (unlike IPv4's broadcast concept) β€” functionality that IPv4 handled via broadcast is handled via specific multicast addresses in IPv6. Certain multicast addresses are well-known and reserved for specific purposes β€” e.g., ff02::1 is the "all nodes on this link" multicast address (roughly analogous to IPv4's link-local broadcast for some purposes), and ff02::2 is "all routers on this link." Various IPv6 protocol operations (including aspects of Neighbor Discovery) rely on these well-known multicast addresses.


Putting it together: a typical interface's IPv6 addresses

A typical IPv6-enabled network interface, on a network with both ULA and global connectivity configured, might simultaneously have:

  • One link-local address (fe80::...) β€” always present, link-scope only
  • One ULA address (fc00::... or fd00::... range) β€” for stable internal addressing
  • One or more global unicast addresses (2xxx::... or similar) β€” for internet connectivity, potentially including both a "stable" and "temporary/privacy" address per the RFC 4941 mechanism

Seeing 3-4 IPv6 addresses on a single interface, where IPv4 shows just 1, is normal and reflects this multi-purpose addressing design β€” not a misconfiguration.


How to use the Subnet Calculator on sadiqbd.com

  1. For IPv6 subnetting: the calculator handles IPv6 prefix calculations (e.g., understanding what range of addresses a /64 prefix encompasses) β€” relevant for understanding global unicast and ULA prefix allocations
  2. Identify address types from their prefixes: fe80::/10 (link-local), fc00::/7 (ULA), and global unicast ranges have distinct prefix patterns that the calculator can help verify when examining a specific address
  3. Plan ULA prefixes: if setting up a ULA range for internal use, the calculator can help verify the resulting address ranges and subnet boundaries within a chosen ULA prefix

Frequently Asked Questions

If every device has a global IPv6 address, doesn't that mean every device is directly exposed to the internet, unlike IPv4 with NAT? Having a globally-routable address doesn't mean a device is reachable β€” firewalls (on the device itself, and/or on the network's router/gateway) can and typically do restrict incoming connections to IPv6 addresses, similar in effect (though different in mechanism) to how NAT restricts incoming IPv4 connections by default (as discussed in a previous article). Most home router IPv6 implementations include a default-deny stance for unsolicited incoming connections, similar in outcome to IPv4's NAT-based default β€” IPv6 having "real" global addresses doesn't inherently mean "no firewall," it means the firewall (where present) is doing more explicit work that NAT's address-translation side-effect did implicitly for IPv4.

Why does my IPv6 global address sometimes change, even though my ULA address stays the same? This is most likely the RFC 4941 privacy-extension behavior described above β€” "temporary" global addresses are designed to change periodically by design, for privacy reasons. The ULA address (and, separately, link-local) aren't subject to this rotation, which is part of why they remain useful for stable internal references even as the global address(es) rotate.

Is the Subnet Calculator free? Yes β€” completely free, no sign-up required.

Try the Subnet Calculator free at sadiqbd.com β€” calculate IPv4 and IPv6 subnets, prefixes, and address ranges instantly.

Share:

More Subnet Calculator β€” IPv4 & IPv6 articles