runs locally — no data sent

IPv6 is the successor to IPv4, using 128-bit addresses to solve exhaustion of the 32-bit IPv4 space. With 340 undecillion possible addresses, every device can have a globally routable address. This reference covers notation rules, address types, common prefixes, and the CLI commands you need when troubleshooting IPv6 on Linux, macOS, or network devices.

Address Format & Notation Rules

Structure

2001:0db8:85a3:0000:0000:8a2e:0370:7334
8 groups of 4 hex digits, separated by colons
128 bits total — 16 bits per group

Abbreviation Rules

Rule 1 — Drop leading zeros in each group
0db8 → db8|0000 → 0
Rule 2 — Replace one consecutive group of all-zero groups with ::
2001:db8:0:0:0:0:0:1 → 2001:db8::1
Rule 3 — :: can only appear once per address
2001::db8::1 ← INVALID
Full → Shortened example
2001:0db8:85a3:0000:0000:8a2e:0370:7334
2001:db8:85a3::8a2e:370:7334

Special Notation

Loopback
::1
Equivalent to 127.0.0.1 in IPv4
Unspecified
::
Equivalent to 0.0.0.0 in IPv4
IPv4-mapped IPv6
::ffff:192.168.1.1
Represents an IPv4 address in IPv6 notation
URL notation (brackets required)
http://[2001:db8::1]:8080/
Address Types
TypePrefixRangeScopeNotes
Loopback::1/128HostEquivalent to 127.0.0.1
Link-Localfe80::/10fe80:: – febf::LinkAuto-configured on every interface, not routable
Unique Local (ULA)fc00::/7fc00:: – fdff::SiteRFC 4193 — private use, like RFC 1918
Global Unicast2000::/32000:: – 3fff::GlobalPublicly routable addresses (ISP assigned)
Documentation2001:db8::/32RFC 3849 — examples and docs only, not routable
Multicastff00::/8ff00:: – ffff::VariesReplaces IPv4 broadcast; ff02::1 = all nodes
Solicited-Node Multicastff02::1:ff00:0/104LinkUsed by NDP (replaces ARP)
6to42002::/16GlobalDeprecated IPv4-to-IPv6 transition mechanism
Teredo2001::/32GlobalNAT traversal tunnel, largely deprecated
Common Prefix Lengths
PrefixAddressesTypical Use
/1281Single host — loopback, router interface
/1272Point-to-point links (RFC 6164)
/1264Point-to-point (legacy, avoid — use /127)
/6418,446,744,073,709,551,616Standard LAN subnet — required for SLAAC
/56256 × /64 subnetsTypical residential ISP allocation
/4865,536 × /64 subnetsStandard enterprise site allocation
/3265,536 × /48 sitesISP allocation to a single customer org
/298 × /32 allocationsLIR minimum allocation from RIR

Note: Unlike IPv4, IPv6 /64 subnets are standard for all LAN segments regardless of host count. Never subnet smaller than /64 on a LAN — SLAAC requires it.

IPv4 vs IPv6 Comparison
FeatureIPv4IPv6
Address length32-bit128-bit
Address space~4.3 billion340 undecillion
NotationDotted decimal (192.168.1.1)Hex colon (2001:db8::1)
SubnettingVLSM, any prefix/64 standard for LANs
Private addressesRFC 1918 (NAT required)ULA fc00::/7 (NAT not needed)
BroadcastYesNo — uses multicast
ARPYesNo — replaced by NDP
Auto-configurationDHCP onlySLAAC + DHCPv6
Header size20–60 bytes (variable)40 bytes (fixed)
IPsecOptionalBuilt-in (mandatory in spec)
FragmentationRouters and hostsHosts only (Path MTU discovery)
Loopback127.0.0.1::1
Default route0.0.0.0/0::/0
Common IPv6 Commands
// Linux (iproute2)
Show IPv6 addresses on all interfaces
ip -6 addr show
Show IPv6 routing table
ip -6 route show
Show neighbor table (replaces ARP)
ip -6 neigh show
Add a static IPv6 address
ip -6 addr add 2001:db8::1/64 dev eth0
Add a static IPv6 route
ip -6 route add 2001:db8::/32 via fe80::1 dev eth0
// Ping & Traceroute
Ping an IPv6 host (Linux)
ping6 2001:db8::1
Ping IPv6 with count
ping6 -c 4 2001:db8::1
Ping link-local (must specify interface)
ping6 fe80::1%eth0
Traceroute IPv6 (Linux)
traceroute6 2001:db8::1
Traceroute IPv6 (macOS / modern Linux)
traceroute -6 2001:db8::1
Ping IPv6 (Windows)
ping -6 2001:db8::1
// DNS & Connectivity
Query AAAA record (IPv6 DNS)
dig AAAA google.com
Query only IPv6 DNS server
dig AAAA google.com @2001:4860:4860::8888
Check if host supports IPv6
curl -6 https://ipv6.google.com
Show your public IPv6 address
curl -6 https://ifconfig.me
tcpdump IPv6 traffic
tcpdump -ni eth0 ip6
nmap IPv6 host scan
nmap -6 2001:db8::1
// Well-Known IPv6 Addresses
Google Public DNS (IPv6)
2001:4860:4860::8888 / 2001:4860:4860::8844
Cloudflare DNS (IPv6)
2606:4700:4700::1111 / 2606:4700:4700::1001
All nodes multicast (link-local)
ff02::1
All routers multicast (link-local)
ff02::2
Address Structure & Allocations

An IPv6 address is 128 bits, conventionally split between a network prefix and a interface identifier (IID). On a standard LAN that split is right down the middle: a /64 prefix for the network, 64 bits for the IID. The /64 boundary isn't arbitrary — SLAAC (StateLess Address AutoConfiguration) requires it, and most operating systems will refuse to autoconfigure on anything narrower. Even on point-to-point links between routers where /127 is now the recommended size (RFC 6164), the LAN-facing side stays at /64.

Common allocation sizes are tiered by who's giving them to whom. An ISP typically gets a /32 from its regional registry (or larger for big carriers). The ISP delegates a /48 to enterprise sites — that's 65,536 distinct /64 subnets, easily enough for any campus. Residential customers usually get a /56 via DHCPv6 prefix delegation, giving the home router 256 /64s to slice across LAN, IoT VLAN, guest network, etc. Some ISPs are stingy and hand out a single /64; it works but defeats the point of v6's address abundance.

The four address types you'll deal with most are GUA (Global Unicast, 2000::/3 — your routable public address), ULA (Unique Local, fc00::/7 — the IPv6 equivalent of RFC 1918, useful for internal services that should never leak to the internet), link-local (fe80::/10 — auto-configured on every interface, scoped to the link, used by NDP/RA/DHCPv6), and multicast (ff00::/8 — replaces broadcast entirely; ff02::1 is all-nodes, ff02::2 is all-routers).

The interface identifier itself has evolved. Original SLAAC used EUI-64 — derive a 64-bit IID from the 48-bit MAC by inserting fffe in the middle and flipping the U/L bit. That meant your IPv6 address embedded your MAC address and tracked you across networks, which was a privacy disaster. RFC 4941 added temporary addresses (rotated periodically), and RFC 7217 added stable-but-opaque IIDs that are stable per-network but can't be correlated across networks. Modern OSes default to 7217 + 4941 together — a stable address for incoming connections, a rotating temporary for outgoing.

Related Tools
CIDR Cheat Sheet Subnet Calculator Common Ports Reference