Disable IPv6 address autoconfiguration on Windows XP

In Windows Vista and later versions, you can assign a static IPv6 address and the gateway to the interface via a GUI or alternatively with netsh. Addresses can also be statically configured on Windows XP with

netsh interface ipv6 add address "Local Area Network" 2001:db8::bad:f00d

And the default route with:

netsh interface ipv6 add route ::/0 "Local Area Network" 2001:db8::1

But the problem with this is that if RA-emmiting router is present on link, the Windows XP will also assign itself a automatically generated address based on the advertised prefix and a link-local (fe80::) address of the router as a default gateway.

How can I turn off the autoconfiguration if the host is addressed statically?

UPDATE

It seems that there is no straightforward way of disabling SLAAC without disabling IPv6 itself. Is there a registry setting to do so?


Getting an XP box up on my local IPv6 network was... fun. Not.

So, in one image, here's the problem: XP's support for IPv6 is minimal at best. I don't believe it's possible to disable stateless autoconfiguration - or even to use anything but.

Windows XP IPv6 FAIL

First off, I get my stateless autoconfiguration just fine, as well as my privacy address. The privacy address works on the global Internet, which I confirmed by visiting my IP address tool in Google Chrome.

So we start fiddling.

First, the GUI doesn't provide any configuration options for IPv6; see that "Properties" is grayed out. Everything you might want to do must be done from the command line.

The routerdiscovery=disabled suggestion from @MikePennington doesn't work because this command isn't supported on XP at all. It requires Vista or later.

The so-called Advanced Networking Pack for Windows XP can be downloaded for SP1 systems, but this functionality was included in SP2 and whatever it provides should be available already on any SP2 or higher system.

Once installed, an ipv6 command becomes available, but it doesn't provide anything relevant to disabling neighbor discovery.

Unfortunately, Windows Firewall on XP doesn't distinguish between IPv4 and IPv6 connections, and so it's impossible to select ICMPv6 messages to block in the firewall. This rules out any Windows Firewall workarounds.

Finally, XP doesn't even support DHCPv6.

IPv6 itself has matured since this code was released in 2003 (and Microsoft seemingly never updated it on XP) so it is limited by what was known about IPv6 almost ten years ago. As far as I can tell, IPv6 support in Windows XP should be considered "technology preview" and not used in production, or at least used with extreme caution and full understanding of its limitations.

Of course, XP is nearing the end of its useful life at this point, (and some would say it already passed the end of its useful life) so if you can upgrade the box, that's probably the easiest solution.

TL;DR: Look at the pretty picture. Weep. Upgrade to a current version of Windows.


How can I turn off the autoconfiguration if the host is addressed statically?

It's worth asking why you're assigning a static default and address if you already have ipv6 autoconfiguration on your routers.

However, to accomplish what you're looking for, use this command from an administrator's cmd.exe shell...

netsh interface ipv6 set interface "Local Area Connection" routerdiscovery=disabled

Source: MSDN technet

EDIT

Since you're using XP, block the RA messages with Windows Firewall.