IPv6 Troubleshooting: Fix Common Connection Problems
Diagnose and fix IPv6 connectivity issues with this step-by-step guide. From 'no address' to 'works but slow', solve real problems.
When IPv6 breaks, the symptoms vary: no address assigned, connectivity to some sites but not others, or everything works but feels sluggish. This guide walks through systematic diagnosis, from quickest checks to deep network analysis.
TL;DR - Quick Summary
Key Points:
- Start with three questions: Do you have an address? Can you reach by IP? Can you reach locally?
- Check Router Advertisements if you have no global address (only link-local)
- ICMPv6 must not be blocked—it's essential for IPv6 operation
- Use traceroute6 to find where packets stop
Skip to: Local Configuration | Common Problems | When to Call ISP
Start with Three Questions#
Before running commands, narrow the problem:
- Do you have an IPv6 address? If not, the issue is at the assignment level (DHCP, SLAAC, or router advertisements).
- Can you reach IPv6 sites by address but not by name? DNS is the culprit.
- Can you reach link-local addresses but nothing beyond? Routing or firewall issues.
These three questions eliminate 80% of troubleshooting paths.
Check Your Local Configuration#
Start by verifying your device has an IPv6 address and knows its gateway.
Linux:
ip -6 addr show
ip -6 route showmacOS:
ifconfig
netstat -nr -f inet6Windows:
ipconfig
netsh interface ipv6 show routeLook for a global unicast address (starts with 2 or 3). You should also see a link-local address (starts with fe80::). If you only have link-local, your host isn't receiving a proper IPv6 prefix.
Verify Router Advertisements#
Most IPv6 networks use SLAAC (Stateless Address Autoconfiguration), where routers broadcast their presence and network prefix. If your device has no global address, router advertisements might not be reaching you.
Check RA reception (Linux):
sudo rdisc6 eth0Check RA reception (macOS/Windows): Use Wireshark or tcpdump to capture ICMPv6 type 134 (Router Advertisement) packets:
sudo tcpdump -i en0 'icmp6 and ip6[40] == 134'If you see no RAs after 30 seconds, either your router isn't advertising, or something is filtering them. Check your router's IPv6 settings first.
Test Link-Local Connectivity#
Link-local addresses work without any router configuration. If these fail, you have a layer 2 problem.
Find your gateway's link-local address:
# Linux
ip -6 route show defaultThis shows the default route and gateway.
# macOS/Windows
# Use the gateway shown in routing tablePing it with the interface specified:
# Linux
ping6 -c 4 fe80::1%eth0
# macOS
ping6 -c 4 fe80::1%en0
# Windows
ping -6 fe80::1%12Replace fe80::1 with your actual gateway address and eth0/en0/12 with your interface name/number. If this fails, check cables, switches, and WiFi connectivity.
Test Internet Connectivity#
Use known-good IPv6 addresses to bypass DNS entirely.
# Cloudflare DNS
ping6 2606:4700:4700::1111This tests connectivity to Cloudflare's DNS service.
# Google DNS
ping6 2001:4860:4860::8888
# ping6.net
ping6 2a07:8dc0:18:0:78:47ff:fe6e:da5aIf these work, your IPv6 stack is functional and DNS is the problem (skip ahead). If they fail, test whether the issue is local or upstream.
Check DNS Resolution#
Many "IPv6 doesn't work" reports are actually DNS issues. Your device might have connectivity but can't resolve AAAA records.
Test AAAA record lookup:
# Use system resolver
nslookup -type=AAAA google.comThis queries for IPv6 (AAAA) records.
# Use specific DNS server
dig @2001:4860:4860::8888 AAAA google.com
# Windows
nslookup -type=AAAA google.com 2001:4860:4860::8888If AAAA queries fail but A queries (IPv4) succeed, your DNS server might not have IPv6 connectivity or isn't configured to handle AAAA records. Try changing to Cloudflare (2606:4700:4700::1111) or Google (2001:4860:4860::8888) DNS servers.
Verify DNS server is reachable over IPv6:
ping6 2606:4700:4700::1111If unreachable, either configure an IPv6-capable DNS server or your network is blocking outbound connections to it.
Analyze the Path#
When you can ping some destinations but not others, use traceroute to find where packets stop.
# Linux/macOS
traceroute6 google.com
# Windows
tracert -6 google.comLook for:
- Timeouts at hop 1-2: Local network problem (gateway, firewall)
- Timeouts after several hops: ISP routing issue
- Asymmetric routes or loops: BGP misconfiguration (contact ISP)
You can also use our Traceroute tool to see hop-by-hop latency and identify where packets are dropped.
Common Problems and Fixes#
No IPv6 Address Assigned#
Symptoms: Only fe80:: link-local address shows up.
Causes:
- Router not sending RAs
- DHCPv6 server unreachable
- Interface disabled for IPv6
Fixes:
- Check router has IPv6 enabled and prefix delegation configured
- Restart network interface:
sudo ifdown eth0 && sudo ifup eth0(Linux) or toggle WiFi off/on - Force SLAAC:
sudo dhclient -6 -r && sudo dhclient -6(Linux) - On Windows:
netsh interface ipv6 resetand reboot
Link-Local Only (No Default Route)#
Symptoms: Have fe80:: address, can ping local link, but no internet.
Causes:
- Router sending RAs without prefix information
- Firewall blocking ICMPv6
- Static route misconfiguration
Fixes:
- Check router is delegating a /64 prefix (not just advertising itself)
- Ensure ICMPv6 isn't blocked:
sudo ip6tables -L(Linux) or Windows Firewall settings - Manually add default route (temporary):
sudo ip -6 route add default via fe80::1 dev eth0
Has Address But No Connectivity#
Symptoms: Global IPv6 address assigned, routing table looks correct, but can't reach anything.
Causes:
- ISP blocking traffic
- MTU issues (packet fragmentation failures)
- Firewall dropping established connections
Fixes:
- Test with ISP support line (they might need to activate IPv6)
- Lower MTU:
sudo ip link set eth0 mtu 1280(IPv6 minimum) - Check firewall rules allow outbound IPv6
- Verify you're not behind CGNAT that strips IPv6
IPv6 Slower Than IPv4#
Symptoms: Sites load, but with noticeable delay compared to IPv4.
Causes:
- Tunnel overhead (6to4, Teredo, 6rd)
- Suboptimal routing (packets taking long path)
- Happy Eyeballs timeout issues
Fixes:
- If using a tunnel, switch to native IPv6 from ISP
- Compare traceroute hops:
traceroute google.comvstraceroute6 google.com - Disable tunnels if native is available:
netsh interface teredo set state disabled(Windows) - Test with our IPv6 Ping tool to measure baseline latency
Works for Some Sites, Not Others#
Symptoms: Can reach Google, Cloudflare, but many sites fail.
Causes:
- Sites have broken IPv6 (misconfigured AAAA records)
- Path MTU discovery failures
- Firewall blocking specific prefixes
Fixes:
- Test if site actually has IPv6:
dig AAAA example.comor use our DNS Lookup tool - If AAAA record exists but fails, site's IPv6 is broken (not your fault)
- Force IPv4: Add entry to
/etc/hosts(Linux/macOS) orC:\Windows\System32\drivers\etc\hosts(Windows) - Report to site operator (they may not know it's broken)
When to Contact Your ISP#
Call your ISP if:
- Router shows "IPv6 not supported" or "waiting for prefix delegation"
- You're assigned a prefix but it's not routable (test with external ping)
- Traceroute shows failures immediately after leaving your network
- None of the above fixes work and your configuration looks correct
Before calling, gather:
- Output from
ip addroripconfig - Your assigned IPv6 prefix
- Results from
ping6 2001:4860:4860::8888 - Traceroute output showing where failures occur
This cuts down support call time significantly.
Related Articles#
- How to Enable IPv6 - Step-by-step guide to configuring IPv6 on common operating systems
- IPv6 Security Best Practices - Secure your IPv6 network against common threats
Test Your IPv6 Configuration
Use our diagnostic tools to verify your setup:
- IPv6 Ping - Test connectivity and latency
- Traceroute - Find where packets are dropped
- MTR - Combined ping and traceroute for comprehensive diagnostics