ping6.net
Best Practices

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.

ping6.netDecember 14, 20247 min read
IPv6troubleshootingconnectivitynetworkdebugging

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:

  1. Do you have an IPv6 address? If not, the issue is at the assignment level (DHCP, SLAAC, or router advertisements).
  2. Can you reach IPv6 sites by address but not by name? DNS is the culprit.
  3. 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 show

macOS:

ifconfig
netstat -nr -f inet6

Windows:

ipconfig
netsh interface ipv6 show route

Look 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 eth0

Check 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.


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 default

This shows the default route and gateway.

# macOS/Windows
# Use the gateway shown in routing table

Ping it with the interface specified:

# Linux
ping6 -c 4 fe80::1%eth0
 
# macOS
ping6 -c 4 fe80::1%en0
 
# Windows
ping -6 fe80::1%12

Replace 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::1111

This tests connectivity to Cloudflare's DNS service.

# Google DNS
ping6 2001:4860:4860::8888
 
# ping6.net
ping6 2a07:8dc0:18:0:78:47ff:fe6e:da5a

If 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.com

This 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::8888

If 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::1111

If 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.com

Look 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:

  1. Check router has IPv6 enabled and prefix delegation configured
  2. Restart network interface: sudo ifdown eth0 && sudo ifup eth0 (Linux) or toggle WiFi off/on
  3. Force SLAAC: sudo dhclient -6 -r && sudo dhclient -6 (Linux)
  4. On Windows: netsh interface ipv6 reset and reboot

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:

  1. Check router is delegating a /64 prefix (not just advertising itself)
  2. Ensure ICMPv6 isn't blocked: sudo ip6tables -L (Linux) or Windows Firewall settings
  3. 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:

  1. Test with ISP support line (they might need to activate IPv6)
  2. Lower MTU: sudo ip link set eth0 mtu 1280 (IPv6 minimum)
  3. Check firewall rules allow outbound IPv6
  4. 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:

  1. If using a tunnel, switch to native IPv6 from ISP
  2. Compare traceroute hops: traceroute google.com vs traceroute6 google.com
  3. Disable tunnels if native is available: netsh interface teredo set state disabled (Windows)
  4. 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:

  1. Test if site actually has IPv6: dig AAAA example.com or use our DNS Lookup tool
  2. If AAAA record exists but fails, site's IPv6 is broken (not your fault)
  3. Force IPv4: Add entry to /etc/hosts (Linux/macOS) or C:\Windows\System32\drivers\etc\hosts (Windows)
  4. 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 addr or ipconfig
  • Your assigned IPv6 prefix
  • Results from ping6 2001:4860:4860::8888
  • Traceroute output showing where failures occur

This cuts down support call time significantly.

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