This quick reference guide provides essential IPv6 information at your fingertips, including address formats, special addresses, common commands for different operating systems, and troubleshooting tools. Whether you're a network administrator, developer, or simply curious about IPv6, this cheat sheet covers the fundamentals you need to work with IPv6 effectively.
IPv6 addresses are 128 bits long, written as eight groups of four hexadecimal digits, separated by colons:
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
Example (full notation):
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Rule 1: Omit leading zeros
2001:0db8:0000:000b:02aa:00ff:fe28:9c5a
2001:db8:0:b:2aa:ff:fe28:9c5a
Rule 2: Use :: for consecutive zero segments (only once per address)
Full: 2001:0db8:0000:0000:0000:0000:0000:0001
Compressed: 2001:db8::1
Combined example:
Original: fe80:0000:0000:0000:0202:b3ff:fe1e:8329
Compressed: fe80::202:b3ff:fe1e:8329
IPv6 uses CIDR notation for network prefixes:
2001:db8:85a3::/64
The number after the slash indicates the prefix length (network portion).
Common prefix lengths:
/128 - Single host (like IPv4 /32)/64 - Standard subnet size (18.4 quintillion addresses)/56 - Typical home/small business allocation (256 subnets)/48 - Organization allocation (65,536 subnets)/32 - ISP/large organization allocationIPv6 addresses in URLs must be enclosed in square brackets:
Wrong: http://2001:db8::1:80/
Right: http://[2001:db8::1]:80/
HTTPS examples:
https://[2001:db8:85a3::8a2e:370:7334]/path
https://[2001:db8::1]:8443/api/endpoint
Why brackets? The colons in IPv6 addresses would conflict with the port separator (:) without brackets.
| Address | Compressed | Purpose | IPv4 Equivalent |
|---|---|---|---|
::1/128 |
::1 |
Loopback address (localhost) | 127.0.0.1 |
::/128 |
:: |
Unspecified address (no address) | 0.0.0.0 |
fe80::/10 |
fe80::... |
Link-local addresses (local network only) | 169.254.0.0/16 |
fc00::/7 |
fc00::... or fd00::... |
Unique local addresses (private) | 10.0.0.0/8, 192.168.0.0/16 |
2000::/3 |
2xxx:... or 3xxx:... |
Global unicast (public addresses) | Public IPv4 |
ff00::/8 |
ff... |
Multicast addresses | 224.0.0.0/4 |
2001:db8::/32 |
2001:db8::... |
Documentation/examples only | 192.0.2.0/24 |
| Address | Purpose |
|---|---|
ff02::1 |
All nodes on link-local (replaces IPv4 broadcast) |
ff02::2 |
All routers on link-local |
ff02::5 |
All OSPFv3 routers |
ff02::6 |
All OSPFv3 designated routers |
ff02::9 |
All RIP routers |
ff02::a |
All EIGRP routers |
ff02::1:2 |
All DHCP servers and relay agents |
Quick identification by prefix:
| First Hex Digits | Type |
|---|---|
::1 |
Loopback |
fe80 |
Link-local |
fc or fd |
Unique local (private) |
2 or 3 |
Global unicast (public) |
ff |
Multicast |
2001:db8 |
Documentation (do not route) |
2001:0db8:85a3:0000:0000:8a2e:0370:7334
└────┬────┘ └─┬─┘ └──────┬──────┘
Global Subnet Interface
Routing ID Identifier
Prefix (IID)
(48 bits) (16 bits) (64 bits)
Typical division:
View IPv6 configuration:
ipconfig /all
IPv6-specific routes:
netsh interface ipv6 show route
IPv6 neighbors (ARP equivalent):
netsh interface ipv6 show neighbors
Ping IPv6 address:
ping <ipv6-address>
ping 2001:4860:4860::8888
ping -6 google.com
IPv6 traceroute:
tracert -6 <hostname>
tracert -6 google.com
DNS lookup for AAAA records:
nslookup -type=AAAA google.com
Enable/disable IPv6 on interface:
netsh interface ipv6 set interface "Ethernet" forwarding=enabled
netsh interface ipv6 set interface "Ethernet" forwarding=disabled
Reset IPv6 configuration:
netsh int ipv6 reset
ipconfig /flushdns
Check IPv6 privacy extensions:
netsh interface ipv6 show privacy
Disable IPv6 privacy extensions:
netsh interface ipv6 set privacy state=disabled
View IPv6 addresses:
ifconfig en0 | grep inet6
All network interfaces with IPv6:
ifconfig | grep inet6
IPv6 routing table:
netstat -rn -f inet6
Find IPv6 default gateway:
netstat -rn inet6 | grep default
Ping IPv6 address:
ping6 <ipv6-address>
ping6 2001:4860:4860::8888
ping6 google.com
IPv6 traceroute:
traceroute6 google.com
DNS lookup for AAAA records:
dig AAAA google.com
host -t AAAA google.com
nslookup -type=AAAA google.com
View neighbor discovery cache:
ndp -a
Flush neighbor discovery cache:
sudo ndp -c
Flush DNS cache:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
Configure IPv6 (Network Preferences):
System Preferences → Network → Advanced → TCP/IP
Configure IPv6: Automatically / Manually / Link-local only / Off
View IPv6 addresses:
ip -6 addr show
ifconfig -a | grep inet6
IPv6 routing table:
ip -6 route show
netstat -rn -A inet6
Find default IPv6 route:
ip -6 route | grep default
Ping IPv6 address:
ping6 <ipv6-address>
ping6 2001:4860:4860::8888
ping6 google.com
IPv6 traceroute:
traceroute6 google.com
tracepath6 google.com
DNS lookup for AAAA records:
dig AAAA google.com
host -t AAAA google.com
nslookup -type=AAAA google.com
View neighbor discovery cache:
ip -6 neigh show
Flush neighbor discovery cache:
sudo ip -6 neigh flush all
Check if IPv6 is disabled:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
Returns 0 (enabled) or 1 (disabled)
Enable IPv6 (temporary):
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0
Disable IPv6 (temporary):
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Enable/disable IPv6 on specific interface:
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=0 # enable
sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=1 # disable
View IPv6 firewall rules (ip6tables):
sudo ip6tables -L -n -v
Test IPv6-enabled public DNS servers:
Google DNS: 2001:4860:4860::8888, 2001:4860:4860::8844
Cloudflare DNS: 2606:4700:4700::1111, 2606:4700:4700::1001
Ping test examples:
# Windows
ping 2001:4860:4860::8888
# macOS/Linux
ping6 2001:4860:4860::8888
1. Check if you have an IPv6 address:
# Windows
ipconfig | findstr "IPv6"
# macOS
ifconfig en0 | grep inet6
# Linux
ip -6 addr show | grep inet6
2. Check default gateway:
# Windows
netsh interface ipv6 show route | findstr "::/0"
# macOS
netstat -rn inet6 | grep default
# Linux
ip -6 route | grep default
3. Test DNS resolution:
# All platforms
nslookup -type=AAAA test-ipv6.run
4. Test connectivity to known IPv6 server:
# Windows
ping 2001:4860:4860::8888
# macOS/Linux
ping6 2001:4860:4860::8888
5. Trace route to identify where packets fail:
# Windows
tracert -6 google.com
# macOS/Linux
traceroute6 google.com
ICMPv6 is essential for IPv6 operation (unlike ICMP in IPv4). Never block all ICMPv6!
Critical ICMPv6 types:
Test ICMPv6:
# Windows (requires admin/elevated prompt)
netsh advfirewall firewall show rule name=all | findstr ICMPv6
# Linux
sudo ip6tables -L | grep icmpv6
| Feature | IPv4 | IPv6 |
|---|---|---|
| Address size | 32 bits | 128 bits |
| Address format | Decimal (192.168.1.1) | Hexadecimal (2001:db8::1) |
| Total addresses | ~4.3 billion | ~340 undecillion |
| Header size | Variable (20-60 bytes) | Fixed (40 bytes) |
| Fragmentation | Routers and hosts | Only sending host |
| Checksums | In header | None (handled by upper layers) |
| Broadcast | Yes | No (replaced by multicast) |
| Configuration | DHCP or manual | SLAAC, DHCPv6, or manual |
| IPSec | Optional | Built-in (though not mandatory) |
| ARP | Yes (separate protocol) | No (NDP via ICMPv6) |
| Task | IPv4 Command | IPv6 Command |
|---|---|---|
| Ping | ping <address> |
ping6 <address> (Unix)ping -6 <address> (Windows) |
| Traceroute | traceroute <host> |
traceroute6 <host> (Unix)tracert -6 <host> (Windows) |
| DNS lookup | nslookup -type=A <host> |
nslookup -type=AAAA <host> |
| Show routes | route print -4 (Windows)ip -4 route (Linux) |
netsh interface ipv6 show route (Windows)ip -6 route (Linux) |
| Show neighbors | arp -a |
netsh interface ipv6 show neighbors (Windows)ip -6 neigh (Linux)ndp -a (macOS) |
| Protocol | DNS Record | Example |
|---|---|---|
| IPv4 | A record | example.com A 192.0.2.1 |
| IPv6 | AAAA record (quad-A) | example.com AAAA 2001:db8::1 |
Good news: Port numbers work identically in IPv4 and IPv6!
Examples:
IPv4: http://192.0.2.1:8080/
IPv6: http://[2001:db8::1]:8080/
Hosts can configure themselves automatically without DHCP:
fe80::/10)ff02::2 (all routers)IPv6 DHCP provides stateful address assignment:
Generates temporary, random interface identifiers to prevent tracking:
Stable: 2001:db8:85a3::8a2e:370:7334 (based on MAC)
Temporary: 2001:db8:85a3::e4f2:1a33:92b5 (random, changes periodically)
Test your IPv6 readiness at test-ipv6.run
The site performs comprehensive tests including:
Score interpretation:
1. Check for IPv6 address:
# Look for global unicast address (starts with 2xxx: or 3xxx:)
ipconfig /all # Windows
ifconfig | grep inet6 # macOS/Linux
2. Verify default gateway:
# Should see fe80:: address of router
netstat -rn # All platforms
ip -6 route | grep default # Linux
3. Test DNS resolution:
nslookup -type=AAAA google.com
# Should return IPv6 addresses
4. Test connectivity:
# Windows
ping 2001:4860:4860::8888
# macOS/Linux
ping6 2001:4860:4860::8888
5. Compare latency:
# Test IPv4
ping 8.8.8.8
# Test IPv6
ping6 2001:4860:4860::8888
When IPv6 isn't working, check in this order:
nslookup -type=AAAA google.com)❌ Wrong:
Multiple :: in address: 2001::85a3::7334
No brackets in URL: http://2001:db8::1:80/
Uppercase/lowercase mix: (acceptable but inconsistent)
✅ Right:
Single :: only: 2001::85a3:0:7334
Brackets in URL: http://[2001:db8::1]:80/
Consistent case: 2001:db8::1 (lowercase preferred)
❌ Don't:
✅ Do:
Google Public DNS:
2001:4860:4860::8888
2001:4860:4860::8844
Cloudflare DNS:
2606:4700:4700::1111
2606:4700:4700::1001
OpenDNS:
2620:119:35::35
2620:119:53::53
This quick reference covers the essential IPv6 knowledge you need for daily operations:
::::1 (loopback), fe80::/10 (link-local), ff02::1 (all nodes)-6 flag or 6 suffix for IPv6-specific commands[2001:db8::1] for IPv6 addresses in URLsWhether you're troubleshooting connectivity issues, configuring networks, or developing IPv6-compatible applications, this reference provides the core information you need at your fingertips. For deeper understanding of specific topics, refer to the relevant RFCs or visit test-ipv6.run to verify your IPv6 configuration is working correctly.