ping6.net
Best Practices

How to Enable IPv6 on Windows, macOS, Linux, and Routers

Get IPv6 working on your devices and network. Step-by-step instructions for Windows, macOS, Linux, and popular router brands.

ping6.netMarch 1, 202412 min read
IPv6configurationWindowsmacOSLinuxroutersetup

Prerequisites#

You need three things before enabling IPv6:

  1. ISP support - Call your ISP or check their documentation. If they don't offer IPv6, nothing else matters.
  2. Router support - Any router from the last 5-7 years should work. Check the spec sheet if unsure.
  3. Modern OS - Windows 7+, macOS 10.7+, or any Linux from the last decade all include IPv6.

Most ISPs have enabled IPv6 without telling anyone. You might already have it.

TL;DR - Quick Summary

Key Points:

  • Check if you already have IPv6 by visiting ping6.net or running ping6 ipv6.google.com
  • Windows/macOS/Linux: IPv6 is enabled by default—just configure your router
  • Routers: Enable IPv6, set connection type to "Native/Auto", enable Router Advertisement
  • Security: Configure IPv6 firewall rules to match your IPv4 policies
  • Privacy: Enable privacy extensions on client devices to prevent MAC address tracking

Skip to: Windows Configuration | macOS Setup | Linux Guide | Router Config


Check If You Already Have IPv6#

Before configuring anything, check your current status. Visit ping6.net to see if your IPv6 address is detected automatically.

From the command line, try pinging an IPv6-only host:

# Windows
ping -6 ipv6.google.com

This command uses the -6 flag to force IPv6 connectivity testing.

# macOS/Linux
ping6 ipv6.google.com

If you get replies, you're done. If not, keep reading.


Windows 10/11#

IPv6 is enabled by default on Windows, but here's how to verify or re-enable it.

GUI Method#

  1. Press Win + R, type ncpa.cpl, hit Enter
  2. Right-click your network adapter → Properties
  3. Find Internet Protocol Version 6 (TCP/IPv6) in the list
  4. Make sure the checkbox is checked
  5. Select it, click Properties
  6. Choose Obtain an IPv6 address automatically
  7. Choose Obtain DNS server address automatically
  8. Click OK

PowerShell Method#

Open PowerShell as Administrator:

# Check IPv6 status
Get-NetAdapterBinding -ComponentID ms_tcpip6

This command shows which network adapters have IPv6 enabled.

# Enable IPv6 on a specific adapter
Enable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6
 
# Enable on all adapters
Get-NetAdapter | Enable-NetAdapterBinding -ComponentID ms_tcpip6

These commands activate IPv6 on your network adapters.

# Verify it worked
Get-NetIPAddress -AddressFamily IPv6
 
# Test connectivity
Test-NetConnection -ComputerName ipv6.google.com

If things aren't working, reset the IPv6 stack:

netsh int ipv6 reset
ipconfig /flushdns

The first command resets the IPv6 configuration to defaults, and the second clears the DNS cache.

Then restart your network adapter or reboot.

Don't Disable IPv6 on Windows

Microsoft explicitly recommends leaving IPv6 enabled even if you're not using it. Disabling it breaks DirectAccess, HomeGroup, and can cause DNS resolution delays.


macOS#

IPv6 is enabled by default. Here's how to verify or configure it.

System Settings#

  1. Open System SettingsNetwork
  2. Select your connection (Wi-Fi or Ethernet)
  3. Click Details
  4. Go to TCP/IP tab
  5. Under Configure IPv6, choose:
    • Automatically - For SLAAC/DHCPv6 (recommended)
    • Link-local only - Only for local network
    • Manually - For static addresses

Terminal#

# Check current IPv6 config
networksetup -getinfo "Wi-Fi"

This displays your current network configuration including IPv6 settings.

# Enable automatic IPv6
networksetup -setv6automatic "Wi-Fi"
 
# Show all IPv6 addresses
ifconfig | grep inet6

These commands configure automatic IPv6 addressing and display all assigned IPv6 addresses.

# Test connectivity
ping6 ipv6.google.com

For static configuration:

# Set static address
sudo networksetup -setv6manual "Wi-Fi" 2001:db8::10 64 2001:db8::1

This assigns a static IPv6 address with a /64 prefix and gateway.


Linux#

Configuration method depends on your distribution and network manager.

NetworkManager (Ubuntu, Fedora, RHEL)#

GUI:

  1. SettingsNetwork
  2. Click the gear icon next to your connection
  3. Go to IPv6 tab
  4. Set method to:
    • Automatic - SLAAC with Router Advertisement (default)
    • Automatic, DHCP only - DHCPv6 only
    • Manual - Static configuration
  5. Click Apply

Command line with nmcli:

# Check current settings
nmcli connection show "Wired connection 1" | grep ipv6

This displays all IPv6-related settings for your connection.

# Enable SLAAC
nmcli connection modify "Wired connection 1" ipv6.method auto
 
# Enable DHCPv6
nmcli connection modify "Wired connection 1" ipv6.method dhcp

SLAAC uses Router Advertisements for autoconfiguration, while DHCPv6 uses a DHCP server.

# Static configuration
nmcli connection modify "Wired connection 1" \
  ipv6.method manual \
  ipv6.addresses "2001:db8::10/64" \
  ipv6.gateway "2001:db8::1"
 
# Apply changes
nmcli connection up "Wired connection 1"

systemd-networkd (Arch, Debian server installs)#

Edit /etc/systemd/network/20-wired.network:

[Match]
Name=eth0
 
[Network]
DHCP=yes
IPv6AcceptRA=yes
 
# Or for static:
# Address=2001:db8::10/64
# Gateway=2001:db8::1

The IPv6AcceptRA=yes setting enables Router Advertisement processing for SLAAC.

Restart the service:

sudo systemctl restart systemd-networkd

Manual Configuration with ip Commands#

For temporary configuration or troubleshooting:

# Show current IPv6 addresses
ip -6 addr show

This displays all IPv6 addresses assigned to your interfaces.

# Add IPv6 address
sudo ip -6 addr add 2001:db8::10/64 dev eth0
 
# Add default route
sudo ip -6 route add default via 2001:db8::1 dev eth0

These commands manually assign an address and set up routing.

# Check routing table
ip -6 route show

This configuration won't survive a reboot. For permanent changes, use NetworkManager or systemd-networkd.

Testing on Linux#

# Ping an IPv6 address
ping6 2001:4860:4860::8888

This tests connectivity to Google's public DNS server.

# Ping hostname over IPv6
ping -6 google.com
 
# Traceroute
traceroute6 google.com

These commands verify DNS resolution and trace the network path.

# Check routing table
ip -6 route show
 
# Show neighbor discovery cache
ip -6 neigh show

Router Configuration#

Your router needs to request IPv6 from your ISP and advertise prefixes to your LAN. Configuration varies by brand.

Generic Steps for Consumer Routers#

  1. Log into your router (usually 192.168.1.1 or 192.168.0.1)
  2. Find IPv6 settings (under Advanced, Internet, or WAN)
  3. Enable IPv6
  4. Choose connection type based on your ISP:
    • Native/Auto - Most common, use this first
    • DHCPv6 - ISP uses DHCPv6 prefix delegation
    • PPPoE - If you use PPPoE for IPv4
    • 6rd or 6to4 - Legacy tunneling (rare)
  5. Enable Router Advertisement for your LAN
  6. Enable SLAAC or DHCPv6 (or both) for your LAN clients
  7. Save and reboot if needed

Wait 30-60 seconds after rebooting, then check your devices for IPv6 addresses.

ASUS Routers#

  1. Advanced SettingsIPv6
  2. Connection Type: Native or Auto
  3. Interface: Match your WAN type (PPP for PPPoE, Ethernet for DHCP)
  4. DHCP-PD: Enable
  5. Router Advertisement: Enable
  6. Apply

ASUS routers usually auto-detect the right settings. If "Auto" doesn't work, try "Native."

  1. AdvancedIPv6
  2. Enable IPv6: On
  3. Internet Connection Type: Dynamic IP (SLAAC/DHCPv6)
  4. Save

TP-Link firmware varies significantly by model. Some older models need "Auto Configuration" or "Auto Detect" instead.

Netgear Routers#

  1. AdvancedAdvanced SetupIPv6
  2. Internet Connection Type: Auto Detect (or Auto Config)
  3. Apply

Netgear's auto-detection works well with most ISPs. If it fails, try "DHCPv6" manually.

UniFi (Ubiquiti)#

  1. SettingsInternet
  2. Select your WAN network
  3. IPv6 Connection: DHCPv6
  4. Prefix Delegation Size: /60 (or /56 if your ISP provides it)
  5. IPv6 RA: Enable
  6. DHCPv6/RDNSS DNS Control: Auto
  7. Apply Changes

UniFi is pickier about configuration. Check your ISP's documentation for the correct prefix delegation size.

pfSense / OPNsense#

WAN Interface:

  1. InterfacesWAN
  2. IPv6 Configuration Type: DHCPv6
  3. DHCPv6 Prefix Delegation size: 60 or 56 (check with ISP)
  4. Request only an IPv6 prefix: Unchecked (you want both a WAN address and a prefix)
  5. Send IPv6 prefix hint: Check if your ISP requires it
  6. SaveApply

LAN Interface:

  1. InterfacesLAN
  2. IPv6 Configuration Type: Track Interface
  3. IPv6 Interface: WAN
  4. IPv6 Prefix ID: 0 (increment for additional VLANs)
  5. SaveApply

Router Advertisement:

  1. ServicesDHCPv6 Server & RA
  2. Select LAN interface
  3. Router Mode: Assisted (enables SLAAC + DHCPv6)
  4. Router Priority: Normal
  5. Save

pfSense and OPNsense give you the most control but require understanding your ISP's IPv6 deployment method. Most cable ISPs use DHCPv6-PD with a /60 prefix.


DNS Configuration#

Your devices will receive DNS servers via Router Advertisement or DHCPv6, but you can override them with public IPv6 DNS servers.

Public IPv6 DNS Servers#

ProviderPrimarySecondaryFeatures
Google Public DNS2001:4860:4860::88882001:4860:4860::8844Fast, no filtering
Cloudflare2606:4700:4700::11112606:4700:4700::1001Privacy-focused, fast
Quad92620:fe::fe2620:fe::9Malware blocking
OpenDNS2620:119:35::352620:119:53::53Content filtering available

Setting DNS Servers#

Windows (PowerShell):

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

This configures Google's public DNS servers for IPv6.

macOS:

networksetup -setdnsservers "Wi-Fi" 2001:4860:4860::8888 2001:4860:4860::8844

Linux (systemd-resolved):

Edit /etc/systemd/resolved.conf:

[Resolve]
DNS=2001:4860:4860::8888 2001:4860:4860::8844

This sets the system-wide DNS servers for systemd-resolved.

Then restart:

sudo systemctl restart systemd-resolved

Linux (NetworkManager):

nmcli connection modify "Wired connection 1" \
  ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
nmcli connection up "Wired connection 1"

Privacy Extensions#

Without privacy extensions, your IPv6 address contains your MAC address. This is trackable across networks.

Privacy extensions (RFC 4941) generate temporary addresses that rotate periodically. Modern systems enable this by default, but verify.

Windows:

# Check status
netsh interface ipv6 show privacy

This displays the current privacy extension configuration.

# Enable if needed
netsh interface ipv6 set privacy state=enabled

macOS:

# Check status (should return 1)
sysctl net.inet6.ip6.use_tempaddr

Privacy extensions are enabled by default on macOS. If it returns 0, something is wrong with your system configuration.

Linux:

# Check status (2 = prefer temporary addresses)
sysctl net.ipv6.conf.all.use_tempaddr

A value of 2 means temporary addresses are preferred for outbound connections.

# Enable temporarily
sudo sysctl -w net.ipv6.conf.all.use_tempaddr=2
 
# Enable permanently
echo "net.ipv6.conf.all.use_tempaddr = 2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

For more details, see our article on IPv6 privacy extensions.


Verification#

After configuring IPv6, verify everything works:

  1. Check for an address: Use ipconfig /all (Windows), ifconfig (macOS/Linux), or ip -6 addr (Linux)
  2. Verify connectivity: Visit ping6.net or use our connectivity test
  3. Test DNS: Use our IPv6 DNS lookup tool
  4. Check routing: Use our Traceroute tool to trace paths to 2001:4860:4860::8888

You should see both an IPv6 address (starting with 2 or 3, not fe80) and successful connectivity to IPv6 hosts.

What About fe80 Addresses?

Link-local addresses starting with fe80:: are normal and exist on every IPv6 interface. They're only used for local network communication, not Internet connectivity. You need a globally routable address (starts with 2 or 3) to reach the IPv6 Internet.


Troubleshooting#

No IPv6 Address#

Check in order:

  1. Does your ISP support IPv6? Call them or check their website.
  2. Is IPv6 enabled on your router? Log in and verify.
  3. Is Router Advertisement enabled on your router? It must broadcast RA messages.
  4. Is your firewall blocking ICMPv6? ICMPv6 is mandatory for IPv6, unlike ICMP for IPv4.

Quick test: Connect a device directly to your modem (bypassing the router). If you get an IPv6 address, the problem is in your router configuration.

Have Address But No Connectivity#

Check in order:

  1. Do you have a default route? Run ip -6 route (Linux) or netstat -rn -f inet6 (macOS) and look for a default entry.
  2. Can you ping your gateway? Find your gateway with ip -6 route, then ping it with ping6 <gateway>.
  3. Can you ping external IPv6 hosts? Try ping6 2001:4860:4860::8888.
  4. Is your DNS working? Try nslookup google.com 2001:4860:4860::8888.

Most "no connectivity" issues are either missing default routes or firewall rules blocking IPv6 traffic.

Slow or Inconsistent IPv6#

This usually indicates broken Path MTU Discovery (PMTUD). Some ISPs or routers block ICMPv6 "Packet Too Big" messages, breaking PMTUD.

Test:

# Ping with large packet size
ping6 -s 1400 ipv6.google.com

This sends packets larger than typical MTU to test PMTUD functionality.

If this fails but small pings work, you have a PMTUD issue. Contact your ISP or reduce MTU on your router's WAN interface to 1480.

For detailed troubleshooting, see our guide on troubleshooting IPv6 connectivity.


Test Your IPv6 Connection

Use our Ping Tool and DNS Lookup to verify your IPv6 connectivity is working properly.

Frequently Asked Questions#

Do I need to disable IPv4 when enabling IPv6?

No. IPv6 and IPv4 run side-by-side in what's called dual-stack mode. This is the recommended approach. Your devices will have both IPv4 and IPv6 addresses and will automatically prefer IPv6 when available while falling back to IPv4 for services that don't support IPv6 yet.

Will enabling IPv6 slow down my network?

No. IPv6 often performs better than IPv4 due to simpler header processing and no NAT overhead. You might see slightly longer addresses in logs, but actual network performance is typically the same or better.

Can I enable IPv6 on just one device for testing?

Yes, but the full benefit comes from enabling it network-wide. You can enable IPv6 on a single device for testing, but you'll need your router and ISP to support IPv6 for the device to get global connectivity. Link-local addresses will work without any infrastructure.

What if my ISP doesn't support IPv6?

You have several options: switch to an ISP that supports IPv6, use a tunnel broker like Hurricane Electric for free IPv6 connectivity over your IPv4 connection, or wait for your ISP to deploy IPv6. Many ISPs now offer IPv6, so it's worth checking with them about their timeline.