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.
Prerequisites#
You need three things before enabling IPv6:
- ISP support - Call your ISP or check their documentation. If they don't offer IPv6, nothing else matters.
- Router support - Any router from the last 5-7 years should work. Check the spec sheet if unsure.
- 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.comThis command uses the -6 flag to force IPv6 connectivity testing.
# macOS/Linux
ping6 ipv6.google.comIf 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#
- Press
Win + R, typencpa.cpl, hit Enter - Right-click your network adapter → Properties
- Find Internet Protocol Version 6 (TCP/IPv6) in the list
- Make sure the checkbox is checked
- Select it, click Properties
- Choose Obtain an IPv6 address automatically
- Choose Obtain DNS server address automatically
- Click OK
PowerShell Method#
Open PowerShell as Administrator:
# Check IPv6 status
Get-NetAdapterBinding -ComponentID ms_tcpip6This 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_tcpip6These commands activate IPv6 on your network adapters.
# Verify it worked
Get-NetIPAddress -AddressFamily IPv6
# Test connectivity
Test-NetConnection -ComputerName ipv6.google.comIf things aren't working, reset the IPv6 stack:
netsh int ipv6 reset
ipconfig /flushdnsThe 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#
- Open System Settings → Network
- Select your connection (Wi-Fi or Ethernet)
- Click Details
- Go to TCP/IP tab
- 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 inet6These commands configure automatic IPv6 addressing and display all assigned IPv6 addresses.
# Test connectivity
ping6 ipv6.google.comFor static configuration:
# Set static address
sudo networksetup -setv6manual "Wi-Fi" 2001:db8::10 64 2001:db8::1This 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:
- Settings → Network
- Click the gear icon next to your connection
- Go to IPv6 tab
- Set method to:
- Automatic - SLAAC with Router Advertisement (default)
- Automatic, DHCP only - DHCPv6 only
- Manual - Static configuration
- Click Apply
Command line with nmcli:
# Check current settings
nmcli connection show "Wired connection 1" | grep ipv6This 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 dhcpSLAAC 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::1The IPv6AcceptRA=yes setting enables Router Advertisement processing for SLAAC.
Restart the service:
sudo systemctl restart systemd-networkdManual Configuration with ip Commands#
For temporary configuration or troubleshooting:
# Show current IPv6 addresses
ip -6 addr showThis 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 eth0These commands manually assign an address and set up routing.
# Check routing table
ip -6 route showThis 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::8888This tests connectivity to Google's public DNS server.
# Ping hostname over IPv6
ping -6 google.com
# Traceroute
traceroute6 google.comThese commands verify DNS resolution and trace the network path.
# Check routing table
ip -6 route show
# Show neighbor discovery cache
ip -6 neigh showRouter 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#
- Log into your router (usually
192.168.1.1or192.168.0.1) - Find IPv6 settings (under Advanced, Internet, or WAN)
- Enable IPv6
- 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)
- Enable Router Advertisement for your LAN
- Enable SLAAC or DHCPv6 (or both) for your LAN clients
- Save and reboot if needed
Wait 30-60 seconds after rebooting, then check your devices for IPv6 addresses.
ASUS Routers#
- Advanced Settings → IPv6
- Connection Type: Native or Auto
- Interface: Match your WAN type (PPP for PPPoE, Ethernet for DHCP)
- DHCP-PD: Enable
- Router Advertisement: Enable
- Apply
ASUS routers usually auto-detect the right settings. If "Auto" doesn't work, try "Native."
TP-Link Routers#
- Advanced → IPv6
- Enable IPv6: On
- Internet Connection Type: Dynamic IP (SLAAC/DHCPv6)
- Save
TP-Link firmware varies significantly by model. Some older models need "Auto Configuration" or "Auto Detect" instead.
Netgear Routers#
- Advanced → Advanced Setup → IPv6
- Internet Connection Type: Auto Detect (or Auto Config)
- Apply
Netgear's auto-detection works well with most ISPs. If it fails, try "DHCPv6" manually.
UniFi (Ubiquiti)#
- Settings → Internet
- Select your WAN network
- IPv6 Connection: DHCPv6
- Prefix Delegation Size: /60 (or /56 if your ISP provides it)
- IPv6 RA: Enable
- DHCPv6/RDNSS DNS Control: Auto
- Apply Changes
UniFi is pickier about configuration. Check your ISP's documentation for the correct prefix delegation size.
pfSense / OPNsense#
WAN Interface:
- Interfaces → WAN
- IPv6 Configuration Type: DHCPv6
- DHCPv6 Prefix Delegation size: 60 or 56 (check with ISP)
- Request only an IPv6 prefix: Unchecked (you want both a WAN address and a prefix)
- Send IPv6 prefix hint: Check if your ISP requires it
- Save → Apply
LAN Interface:
- Interfaces → LAN
- IPv6 Configuration Type: Track Interface
- IPv6 Interface: WAN
- IPv6 Prefix ID: 0 (increment for additional VLANs)
- Save → Apply
Router Advertisement:
- Services → DHCPv6 Server & RA
- Select LAN interface
- Router Mode: Assisted (enables SLAAC + DHCPv6)
- Router Priority: Normal
- 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#
| Provider | Primary | Secondary | Features |
|---|---|---|---|
| Google Public DNS | 2001:4860:4860::8888 | 2001:4860:4860::8844 | Fast, no filtering |
| Cloudflare | 2606:4700:4700::1111 | 2606:4700:4700::1001 | Privacy-focused, fast |
| Quad9 | 2620:fe::fe | 2620:fe::9 | Malware blocking |
| OpenDNS | 2620:119:35::35 | 2620:119:53::53 | Content 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::8844Linux (systemd-resolved):
Edit /etc/systemd/resolved.conf:
[Resolve]
DNS=2001:4860:4860::8888 2001:4860:4860::8844This sets the system-wide DNS servers for systemd-resolved.
Then restart:
sudo systemctl restart systemd-resolvedLinux (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 privacyThis displays the current privacy extension configuration.
# Enable if needed
netsh interface ipv6 set privacy state=enabledmacOS:
# Check status (should return 1)
sysctl net.inet6.ip6.use_tempaddrPrivacy 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_tempaddrA 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 -pFor more details, see our article on IPv6 privacy extensions.
Verification#
After configuring IPv6, verify everything works:
- Check for an address: Use
ipconfig /all(Windows),ifconfig(macOS/Linux), orip -6 addr(Linux) - Verify connectivity: Visit ping6.net or use our connectivity test
- Test DNS: Use our IPv6 DNS lookup tool
- 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:
- Does your ISP support IPv6? Call them or check their website.
- Is IPv6 enabled on your router? Log in and verify.
- Is Router Advertisement enabled on your router? It must broadcast RA messages.
- 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:
- Do you have a default route? Run
ip -6 route(Linux) ornetstat -rn -f inet6(macOS) and look for adefaultentry. - Can you ping your gateway? Find your gateway with
ip -6 route, then ping it withping6 <gateway>. - Can you ping external IPv6 hosts? Try
ping6 2001:4860:4860::8888. - 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.comThis 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.
Related Articles#
- IPv6 Troubleshooting Guide - Diagnose and fix common IPv6 connectivity issues
- DHCPv6 vs SLAAC - Choose the right address assignment method for your network
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.