If your Hetzner server has been assigned a public IPv6 subnet, such as a /64, you can configure multiple IPv6 addresses on your Windows Server.
This can be useful for services and applications that need to use specific IPv6 addresses for outbound connections.
This guide explains how to configure a Hetzner IPv6 subnet on Windows Server 2019 using both the graphical interface and PowerShell.
Important: Before changing network settings, make sure you have access to the server through the Hetzner KVM or another recovery console. Incorrect network settings may interrupt your RDP connection.
Example Network Configuration
In this guide, we will use the following example IPv6 subnet:
- IPv6 subnet:
2a01:4f9:123:abcd::/64 - Server IPv6 address:
2a01:4f9:123:abcd::2 - Prefix length:
64 - IPv6 gateway:
fe80::1
Important: Replace the example IPv6 subnet and addresses with the values assigned to your server.
For Hetzner dedicated servers and supported virtual server platforms, the IPv6 gateway is normally:
fe80::1
You can verify the network information assigned to your server in the Hetzner control panel.
Step 1. Open the Network Adapter Settings
Open:
Control Panel → Network and Internet → Network and Sharing Center → Change adapter settings
Locate the network adapter connected to the Internet. It is usually named Ethernet.
Right-click it and select Properties.
Step 2. Open the IPv6 Settings
In the adapter properties, select:
Internet Protocol Version 6 (TCP/IPv6)
Click Properties.
Step 3. Configure the Primary IPv6 Address
Select:
Use the following IPv6 address
Enter the following values:
- IPv6 address:
2a01:4f9:123:abcd::2 - Subnet prefix length:
64 - Default gateway:
fe80::1
You must use the IPv6 address assigned to your own server instead of the example address above.
Step 4. Configure IPv6 DNS Servers
You can use the DNS servers provided by Hetzner or another DNS provider.
For example, Cloudflare DNS:
2606:4700:4700::1111
2606:4700:4700::1001
Or Google Public DNS:
2001:4860:4860::8888
2001:4860:4860::8844
Click OK to save the settings.
Then close the remaining network configuration windows.
Step 5. Add Additional IPv6 Addresses
A /64 IPv6 subnet contains a very large address range.
You can assign additional addresses from your subnet to the same Windows network adapter.
For example:
2a01:4f9:123:abcd::10
2a01:4f9:123:abcd::11
2a01:4f9:123:abcd::12
Important: Do not use addresses that are already assigned to another device or service.
Add Additional IPv6 Addresses via GUI
Open the IPv6 properties again and click Advanced….
Under IP addresses, click Add….
Enter the additional IPv6 address and use:
Subnet prefix length: 64
Repeat this process for every additional IPv6 address you want to use.
You do not need to configure a separate gateway for each additional IPv6 address.
Configure IPv6 Using PowerShell
PowerShell can be more convenient when configuring multiple addresses or automating server setup.
Open PowerShell as Administrator.
Step 1. Find the Network Interface Name
Run:
Get-NetAdapter
Locate the network interface connected to the Internet.
In this example, the interface is named:
Ethernet
Step 2. Configure the Primary IPv6 Address
Run:
New-NetIPAddress `
-InterfaceAlias "Ethernet" `
-IPAddress "2a01:4f9:123:abcd::2" `
-PrefixLength 64 `
-DefaultGateway "fe80::1"
Replace Ethernet and the IPv6 address with the values used by your server.
Step 3. Add Additional IPv6 Addresses
For example:
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "2a01:4f9:123:abcd::10" -PrefixLength 64
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "2a01:4f9:123:abcd::11" -PrefixLength 64
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "2a01:4f9:123:abcd::12" -PrefixLength 64
No additional default gateway is required for these secondary addresses.
Disable Temporary IPv6 Addresses
Windows may automatically create temporary IPv6 addresses for outgoing connections.
If you need applications to use the static IPv6 addresses you configured, you can disable temporary IPv6 addressing.
Open PowerShell as Administrator and run:
Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
Set-NetIPv6Protocol -UseTemporaryAddresses Disabled
You can then check the configured IPv6 addresses again.
Verify the IPv6 Configuration
Check Assigned Addresses
Run:
ipconfig /all
Verify that the expected IPv6 addresses appear on the correct network adapter.
Test IPv6 Connectivity
Run:
ping -6 google.com
If IPv6 connectivity is working, you should receive replies over IPv6.
Check the Public IPv6 Address
Run:
curl -6 https://ifconfig.co
The command should return the IPv6 address currently being used for the outbound connection.
Check the IPv6 Route
You can also verify the IPv6 routing table using:
Get-NetRoute -AddressFamily IPv6
Look for the default IPv6 route:
::/0
The gateway should normally be:
fe80::1
Using Multiple IPv6 Addresses
After multiple IPv6 addresses have been assigned to the network adapter, Windows and individual applications can use them for network connections.
Common use cases include:
- Web services
- API connections
- Proxy services
- VPN and tunnel configurations
- Mail services
- Applications that support binding to a specific local IPv6 address
Applications that support source-address binding can be configured to use a specific IPv6 address from the assigned subnet.
Troubleshooting
If IPv6 does not work after configuration, check the following:
- The IPv6 address belongs to the subnet assigned to your server.
- The prefix length is set to 64.
- The default gateway is configured as
fe80::1. - The IPv6 address is not already in use.
- Windows Firewall is not blocking the required traffic.
- The correct network adapter was configured.
You can display all IPv6 addresses configured on the server with:
Get-NetIPAddress -AddressFamily IPv6
You can display the routing table with:
Get-NetRoute -AddressFamily IPv6
Conclusion
Your Windows Server 2019 is now configured to use the public IPv6 subnet assigned by Hetzner.
You can add multiple static IPv6 addresses from the subnet to the same network interface and configure applications to use specific addresses when required.