Windows 10 is not using the IPv6 address by default

dnsipv6networkingwindows 10

I have IPv6 addresses from but if I ping a host that has both IPv4 and IPv6 addresses (i.e. or I get the IPv4 address on windows 10 but on all the windows 7 and windows 8.1 machines in the same network get the IPv6 address. I have to use -6 to force it to ping the IPv6.

I have tried the shortcuts mentioned here to prefer IPv6 over IPv4 but it does not fix the issue. When I go to web sites that are IPv4 and IPv6 I always get the IPv4 page. is telling me that my browser has a real working IPv6 address but is avoiding using it.


Pinging [] with 32 bytes of data:
Reply from bytes=32 time=8ms TTL=87

h:\>ping -6

Pinging [2a03:2880:f013:1:face:b00c:0:1] with 32 bytes of
Reply from 2a03:2880:f013:1:face:b00c:0:1: time=145ms
netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        35      4  ::ffff:0:0/96
        30      2  2002::/16
         5      5  2001::/32
         3     13  fc00::/7
         1     11  fec0::/10
         1     12  3ffe::/16
         1      3  ::/96


Thought there was an issue with my router. When I upgraded from Shibby Tomato v131 to v132 it seemed to fix the issue but now it's back again. It still works with Windows 7 and 8.1 but not Windows 10. I use fixed wireless so there is some latency in my internet connection already. When I use the IPv6 tunnel it sometimes adds significant latency (59-100ms). I think there is a feature of windows 10 that will favor IPv4 if IPv6 is significantly slower but I don't know what the limits are.

2nd Update

If I disable IPv4 then IPv6 works properly. If I ping a hostname that has both IPv4 and IPv6 it will ping the IPv6 address.


Pinging [2a03:2880:2130:7f20:face:b00c:0:25de] with 32 bytes of da
Reply from 2a03:2880:2130:7f20:face:b00c:0:25de: time=161ms
Reply from 2a03:2880:2130:7f20:face:b00c:0:25de: time=317ms
Reply from 2a03:2880:2130:7f20:face:b00c:0:25de: time=215ms
Reply from 2a03:2880:2130:7f20:face:b00c:0:25de: time=154ms

Ping statistics for 2a03:2880:2130:7f20:face:b00c:0:25de:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 154ms, Maximum = 317ms, Average = 211ms

Best Answer

I had the same niggling issue -- ipv4 and ipv6 both work, but if I try to ping (or browse etc.) any name with an IPv4 A record, Windows would always prefer that over the v6 (AAAA) address. There is logic inside the network stack that sorts the addresses from a DNS query to choose which to prefer. In my case, it was preferring the v4 addresses because my Wifi interface supports wake-on-LAN aka always-on-always-connected (AOAC), but apparently only for IPv4.

There's an ETW trace point you can enable to find out exactly what is happening when it sorts the addresses; here's an example of how to do that using the built-in netsh tool. I'm using as an example, but any host with both A and AAAA records should work.

netsh trace start provider=Microsoft-Windows-TCPIP level=5 keywords=ut:TcpipRoute
ping -n 1
netsh trace stop
netsh trace convert %TEMP%\NetTraces\NetTrace.etl

Now, look in the nettrace.txt file that it wrote, and hopefully you'll find a clue. In my case, it was:

[Microsoft-Windows-TCPIP]IP: Address pair (::ffff:, ::ffff: is preferred over (2601:XXX:XXX:XXX:XXX:XXX:XXX:XXX, 2607:f8b0:400e:c04::67) by SortOptions: 0, Reason: Prefer Aoac Interface  (Rule D 1.1).

(where XXX is my public IPv6 address that I've redacted).

I don't know if there is any way to override this specific rule (now I know why it's making that choice, I'm comfortable enough leaving it as-is).