How to Configure IPv6 on Windows

IPv6 (Internet Protocol version 6) is the latest version of the Internet Protocol and is increasingly important for modern internet connectivity. Windows 10, Windows 11, and Windows Server come with IPv6 enabled by default in a dual-stack configuration alongside IPv4. This comprehensive guide will walk you through checking, configuring, and troubleshooting IPv6 on Windows systems.

Table of Contents

Checking Your Current IPv6 Status

Using the GUI

  1. Open Settings (press Win + I)
  2. Navigate to Network & Internet
  3. Click on Advanced network settings
  4. Under "More settings," click View hardware and connection properties
  5. Look for entries labeled "IPv6 address" or "Link-local IPv6 address"

Alternatively, using Control Panel:

  1. Open Control Panel > Network and Sharing Center
  2. Click on your active network connection
  3. Click Details
  4. Look for "IPv6 Address" and "IPv6 Default Gateway" entries

Using Command Line

Open Command Prompt or PowerShell and run:

ipconfig

Look for lines containing "IPv6 Address" or "Link-local IPv6 address". A typical output shows:

Ethernet adapter Ethernet:
   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : 2001:db8:1234:5678::abcd
   Link-local IPv6 Address . . . . . : fe80::1234:5678:abcd:ef01%12
   IPv4 Address. . . . . . . . . . . : 192.168.1.100

Using PowerShell

For more detailed information, use PowerShell:

Get-NetIPAddress -AddressFamily IPv6

To check IPv6 binding status on network adapters:

Get-NetAdapterBinding -ComponentID ms_tcpip6

Enabling or Disabling IPv6

Important Note: Microsoft does not recommend disabling IPv6. Windows Vista, Windows 7, and all newer Windows versions treat IPv6 as a mandatory component. Many modern applications and services depend on IPv6, and disabling it may cause unexpected issues.

Method 1: Using Network Adapter Settings (GUI)

To Disable IPv6:

  1. Open Control Panel > Network and Sharing Center
  2. Click Change adapter settings (or search "View Network Connections" in Start Menu)
  3. Right-click on your network adapter (e.g., "Ethernet" or "Wi-Fi")
  4. Select Properties
  5. Uncheck Internet Protocol Version 6 (TCP/IPv6)
  6. Click OK
  7. Restart your computer for changes to take effect

To Enable IPv6:

Follow the same steps but check the IPv6 checkbox instead.

To Disable IPv6:

Disable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6

Replace "Ethernet" with your adapter name. To see all adapter names:

Get-NetAdapter

To Enable IPv6:

Enable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6

Method 3: Using Registry (Advanced)

For complete IPv6 disabling across all interfaces:

  1. Press Win + R, type regedit, and press Enter
  2. Navigate to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
  3. Create a new DWORD (32-bit) value named DisabledComponents
  4. Set the value to 0xFF (hexadecimal) to disable IPv6 completely
  5. Restart your computer

Registry Values:

Configuring [Static IPv6 Addresses](assign-static-ipv6-address)

Using GUI

  1. Open Control Panel > Network and Sharing Center
  2. Click Change adapter settings
  3. Right-click your network adapter and select Properties
  4. Select Internet Protocol Version 6 (TCP/IPv6) and click Properties
  5. Select Use the following IPv6 address
  6. Enter your IPv6 configuration:
    • IPv6 address: Your static IPv6 address (e.g., 2001:db8:1234:5678::100)
    • Subnet prefix length: Typically 64 (automatically filled when you press Tab)
    • Default gateway: Your router's IPv6 address (e.g., 2001:db8:1234:5678::1)
  7. Click OK to apply

How to Determine Your IPv6 Address Range:

If you're unsure what IPv6 address to use, check your current automatic configuration:

  1. Run ipconfig in Command Prompt
  2. Note your current IPv6 address and prefix
  3. Use an address within the same prefix range for your static configuration

Using PowerShell

Configure a static IPv6 address:

New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "2001:db8:1234:5678::100" -PrefixLength 64 -DefaultGateway "2001:db8:1234:5678::1"

Remove an IPv6 address:

Remove-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "2001:db8:1234:5678::100"

Modify existing IPv6 settings:

Set-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "2001:db8:1234:5678::100" -PrefixLength 64

Using Command Prompt (netsh)

netsh interface ipv6 set address "Ethernet" "2001:db8:1234:5678::100"
netsh interface ipv6 add route ::/0 "Ethernet" "2001:db8:1234:5678::1"

Setting [IPv6 DNS Servers](test-ipv6-dns-resolution)

Using GUI

  1. Follow steps 1-4 from the static IPv6 configuration section above
  2. Select Use the following DNS server addresses
  3. Enter DNS server IPv6 addresses:
    • Preferred DNS server: Primary IPv6 DNS (e.g., 2001:4860:4860::8888 for Google DNS)
    • Alternate DNS server: Secondary IPv6 DNS (e.g., 2001:4860:4860::8844 for Google DNS)
  4. Click OK to apply

Popular Public IPv6 DNS Servers:

Using PowerShell

Set DNS servers:

Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "2001:4860:4860::8888","2001:4860:4860::8844"

View current DNS configuration:

Get-DnsClientServerAddress -InterfaceAlias "Ethernet" -AddressFamily IPv6

Reset to automatic DNS:

Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ResetServerAddresses

Using Command Prompt (netsh)

netsh interface ipv6 set dns "Ethernet" static 2001:4860:4860::8888
netsh interface ipv6 add dns "Ethernet" 2001:4860:4860::8844 index=2

PowerShell Commands Reference

View IPv6 Configuration

# Show all IPv6 addresses
Get-NetIPAddress -AddressFamily IPv6

# Show IPv6 configuration for specific adapter
Get-NetIPAddress -InterfaceAlias "Ethernet" -AddressFamily IPv6

# View IPv6 protocol settings
Get-NetIPv6Protocol

# Check IPv6 routes
Get-NetRoute -AddressFamily IPv6

# View DNS servers
Get-DnsClientServerAddress -AddressFamily IPv6

Configure IPv6

# Enable IPv6 on adapter
Enable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6

# Disable IPv6 on adapter
Disable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6

# Add static IPv6 address
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "2001:db8::100" -PrefixLength 64

# Set default gateway
New-NetRoute -InterfaceAlias "Ethernet" -DestinationPrefix "::/0" -NextHop "2001:db8::1"

# Configure DNS servers
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "2001:4860:4860::8888"

# Modify IPv6 protocol settings
Set-NetIPv6Protocol -RandomizeIdentifiers Enabled -UseTemporaryAddresses Enabled

Windows Version Differences

Windows 10

Windows 11

Windows Server (2016, 2019, 2022)

Important for Domain Environments:

Windows Server Active Directory and DNS rely on IPv6 for optimal operation. Disabling IPv6 on domain controllers can cause:

Troubleshooting Common Issues

Issue 1: IPv6 Shows "No Internet Access"

Symptoms: Your adapter shows IPv6 connectivity but displays "No internet access" or you cannot reach IPv6 websites.

Solutions:

  1. Check router IPv6 support: Ensure your router supports IPv6 and has it enabled
  2. Verify ISP IPv6 support: Contact your ISP to confirm IPv6 is available on your plan
  3. Reset network adapter:
    netsh int ipv6 reset
    ipconfig /release6
    ipconfig /renew6
    
  4. Check firewall settings: Ensure Windows Firewall allows IPv6 traffic
  5. Update network adapter drivers: Outdated drivers may have IPv6 compatibility issues

Issue 2: Slow DNS Resolution

Symptoms: Websites take a long time to load, DNS lookups timeout initially then fall back to IPv4.

Solutions:

  1. Configure working IPv6 DNS servers: Use public DNS like Google or Cloudflare
  2. Disable IPv6 if not supported: If your network doesn't support IPv6:
    Disable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6
    
  3. Prefer IPv4 over IPv6: Set registry value DisabledComponents to 0x20 (see Registry method above)
  4. Flush DNS cache:
    ipconfig /flushdns
    

Symptoms: You only see a fe80:: address (link-local) and no global IPv6 address.

Solutions:

  1. Check DHCP/SLAAC: Ensure your router is advertising IPv6 prefixes
  2. Verify router configuration: Check if IPv6 DHCP (DHCPv6) or SLAAC is enabled
  3. Restart adapter:
    Restart-NetAdapter -Name "Ethernet"
    
  4. Check cable/wireless connection: Physical connectivity issues can prevent IPv6 autoconfiguration

Issue 4: Active Directory/DNS Problems

Symptoms: Domain controllers experience DNS timeouts, LDAP failures, or nslookup defaults to ::1.

Solutions:

  1. Do not disable IPv6 on domain controllers: This is critical
  2. Remove link-local fe80::1 from DNS server list:
    Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "Correct-DNS-IPv6-Address"
    
  3. Configure proper IPv6 DNS: Use global unicast addresses, not link-local
  4. Verify DNS server IPv6 configuration: Ensure DNS servers have working IPv6 connectivity

Issue 5: Cannot Connect to IPv6-Only Services

Symptoms: Some websites or services don't work, but IPv4 sites do.

Solutions:

  1. Test IPv6 connectivity: Use ping -6 ipv6.google.com
  2. Check default route:
    Get-NetRoute -AddressFamily IPv6 -DestinationPrefix "::/0"
    
  3. Configure default gateway: Ensure you have a valid IPv6 default gateway
  4. Test with direct IPv6 ping:
    ping -6 2001:4860:4860::8888
    

General Troubleshooting Commands

# Reset TCP/IP stack
netsh int ip reset
netsh winsock reset

# Release and renew IPv6 address
ipconfig /release6
ipconfig /renew6

# Flush DNS cache
ipconfig /flushdns

# View IPv6 routing table
netsh interface ipv6 show route

# Test IPv6 connectivity
ping -6 ipv6.google.com
Test-NetConnection -ComputerName ipv6.google.com

# View detailed IPv6 interface info
netsh interface ipv6 show interface

Testing Your Configuration

After configuring IPv6, it's essential to verify that everything works correctly.

Quick Tests

1. Ping IPv6 hosts:

ping -6 ipv6.google.com
ping -6 2001:4860:4860::8888

2. Test IPv6 DNS resolution:

nslookup -type=AAAA google.com

3. Check routing:

Get-NetRoute -AddressFamily IPv6

Comprehensive IPv6 Testing

For a thorough test of your IPv6 configuration and connectivity, visit test-ipv6.run. This free online tool will:

The test runs entirely in your browser and gives you immediate feedback on your IPv6 configuration status. It's an excellent way to confirm that your Windows IPv6 settings are working correctly and that your ISP is providing IPv6 connectivity.

Additional Online Tools

Conclusion

IPv6 is an essential protocol for modern networking, and Windows provides robust built-in support across all recent versions. While Windows enables IPv6 by default, understanding how to configure, troubleshoot, and optimize IPv6 settings ensures the best possible network performance.

Key Takeaways:

By following this guide, you should have a solid understanding of IPv6 configuration on Windows and be able to troubleshoot common issues effectively. As the internet continues its transition to IPv6, having a properly configured IPv6 setup will ensure you're ready for the future of internet connectivity.