Windows · Windows Server  ·  medium  ·  Networking & connectivity

Intermittent connection failures where IPv6 is half-configured

Windows prefers IPv6 and will try it first. On a network with partial IPv6, that means a timeout before every connection falls back.

What you see

Everything works but slowly — a pause of several seconds before a page or a share opens, then normal speed. Common on networks where a router advertises IPv6 without a working route.

What is actually wrong

Router advertisements give the machine a global IPv6 address, so Windows treats IPv6 as usable and tries it first. There is no upstream IPv6 route, so each attempt waits for a timeout before falling back to IPv4.

Codes and articles

fe80::Teredoprefix policyISATAP

Fixes (2)

Change the preference, not the protocol
Elevated PowerShell15 minutesmedium riskreversible

You can only change the client.

  1. Confirm the diagnosis: an IPv6 address is present but nothing IPv6 is reachable.

    PowerShell
    Get-NetIPAddress -AddressFamily IPv6 | Format-Table InterfaceAlias,IPAddress,PrefixOriginTest-NetConnection ipv6.google.com -InformationLevel Detailed
  2. See the current preference table.

    PowerShell
    Get-NetPrefixPolicy | Sort-Object Precedence -Descending
  3. Prefer IPv4 over IPv6 without disabling IPv6.

    Command Prompt
    netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 60 4

    This raises the precedence of IPv4-mapped addresses above native IPv6, so IPv4 is tried first. It is far better than unbinding IPv6 — several Windows components, including parts of the failover cluster and Exchange stack, expect IPv6 to exist and behave badly when it does not.

  4. Do not disable IPv6 on the adapter, and do not set DisabledComponents to 0xff. Both are widely recommended online and both cause worse problems later.

Confirm it workedConnections open immediately, and IPv6 is still bound to the adapter.
PowerShell
Get-NetAdapterBinding -ComponentID ms_tcpip6 | Format-Table Name,Enabled
If you need to undo itnetsh interface ipv6 reset prefixpolicy restores the defaults.
Stop the router advertising a prefix it cannot route
The router or firewall30 minutesmedium riskreversible

You control the network. This is the correct fix and it fixes every client at once.

  1. Identify what is sending the advertisements.

    PowerShell
    Get-NetRoute -AddressFamily IPv6 | Format-Table DestinationPrefix,NextHop,InterfaceAlias
  2. Either give the network working IPv6 upstream, or turn router advertisements off entirely so clients never form a global address.

  3. Check for rogue sources — a Windows machine with Internet Connection Sharing, or a virtualisation host bridging a guest network, will advertise a prefix nobody intended.

  4. Re-test from a client after the lease expires, or force it.

    Command Prompt
    netsh interface ipv6 delete destinationcacheipconfig /renew6
Confirm it workedClients hold only a link-local fe80:: address, or a global address with genuine IPv6 connectivity.
If you need to undo itRe-enable advertisements on the router.

Where this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.