How to Configure IPv6 on Windows Server 2016

IPv6 is the next-generation Internet Protocol designed to replace IPv4. It uses 128-bit addresses, providing a vastly larger address space compared to IPv4’s 32-bit addresses. Windows Server 2016 has native IPv6 support built into the networking stack and it is enabled by default on all network adapters. Configuring IPv6 correctly is important whether you are running a dual-stack environment alongside IPv4 or deploying a pure IPv6 network. This guide covers static and dynamic IPv6 configuration, DNS, routing, and useful verification commands.

IPv6 addresses are written as eight groups of four hexadecimal digits separated by colons, for example 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Leading zeros in each group can be omitted, and one consecutive sequence of all-zero groups can be replaced with a double colon (::). The address space is divided into types: global unicast addresses (2000::/3) are routable on the public internet, link-local addresses (fe80::/10) are automatically assigned to every interface and are only valid on the local link, and unique local addresses (fc00::/7) are the IPv6 equivalent of RFC 1918 private addresses.

Checking Current IPv6 Status

View all IPv6 addresses currently assigned to network adapters:

Get-NetIPAddress -AddressFamily IPv6

Check if IPv6 is bound to a specific adapter:

Get-NetAdapterBinding -ComponentID ms_tcpip6

Enable IPv6 on an adapter if it has been disabled:

Enable-NetAdapterBinding -Name "Ethernet" -ComponentID ms_tcpip6

Configuring a Static IPv6 Address

Assign a static global unicast IPv6 address with a /64 prefix length (the standard for most subnets) and specify the default gateway:

New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "2001:db8:acad:1::10" -PrefixLength 64 -DefaultGateway "2001:db8:acad:1::1"

Set IPv6 DNS server addresses:

Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "2001:db8:acad:1::53","2001:4860:4860::8888"

Verify the address was assigned:

Get-NetIPAddress -InterfaceAlias "Ethernet" -AddressFamily IPv6

Configuring DHCPv6 (Dynamic IPv6)

By default, Windows Server will attempt to obtain an IPv6 address via Stateless Address Autoconfiguration (SLAAC) from a router advertisement if a router sends one. To force the interface to use DHCPv6 for stateful address assignment, ensure the interface is set to use DHCP:

Set-NetIPInterface -InterfaceAlias "Ethernet" -AddressFamily IPv6 -Dhcp Enabled

Remove any static IPv6 addresses before switching to DHCP:

Remove-NetIPAddress -InterfaceAlias "Ethernet" -AddressFamily IPv6 -Confirm:$false

Configuring IPv6 Router Advertisement (SLAAC)

If this server will act as an IPv6 router and advertise prefixes to clients, install the Routing role service:

Install-WindowsFeature Routing -IncludeManagementTools

Enable IPv6 forwarding on all interfaces:

Set-NetIPInterface -Forwarding Enabled -AddressFamily IPv6

IPv6 Firewall Rules

Windows Firewall manages IPv6 and IPv4 rules separately. Allow ICMPv6, which is critical for IPv6 operation (neighbor discovery, path MTU discovery):

New-NetFirewallRule -DisplayName "Allow ICMPv6" -Direction Inbound -Protocol ICMPv6 -Action Allow

View existing IPv6-related firewall rules:

Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*IPv6*" -or $_.DisplayName -like "*ICMPv6*"}

Disabling IPv6 Transition Protocols

Windows includes IPv6 transition technologies like Teredo, ISATAP, and 6to4 that tunnel IPv6 traffic over IPv4 infrastructure. In managed enterprise networks, these are typically disabled as they can bypass firewall policies. Disable them with netsh:

netsh interface teredo set state disabled
netsh interface isatap set state disabled
netsh interface 6to4 set state disabled

Testing IPv6 Connectivity

Ping the IPv6 loopback address to verify the IPv6 stack is working:

ping ::1

Ping a link-local address on another host (you must specify the interface index with %):

ping fe80::1%12

Use Test-NetConnection for a more detailed IPv6 connectivity check:

Test-NetConnection -ComputerName "2001:db8:acad:1::1" -InformationLevel Detailed

Trace the IPv6 route to a destination:

tracert -6 2001:db8:acad:1::1

Display the IPv6 routing table:

Get-NetRoute -AddressFamily IPv6

Properly configured IPv6 on Windows Server 2016 enables full dual-stack operation and future-proofs your network infrastructure. Always ensure ICMPv6 is permitted at all network boundaries, as it is essential for IPv6 operation in ways that ICMP is not for IPv4. Monitor neighbor discovery tables and router advertisement settings when troubleshooting IPv6 connectivity issues.