Actually you can manually configure IPv6 on WindowsXP. First make sure it is enabled:
netsh int ipv6 install
Secondly, be aware that WindowsXP configures Teredo automatically. Teredo is an (in my view obscure and creepy) implementation of IPv6 via 6to4. To quote the Wikipedia Teredo article:
Teredo is a transition technology that gives full IPv6 connectivity for IPv6-capable hosts which are on the IPv4 Internet but which have no direct native connection to an IPv6 network. Compared to other similar protocols its distinguishing feature is that it is able to perform its function even from behind network address translation (NAT) devices such as home routers.
Teredo is designed as a last resort transition technology and is intended to be a temporary measure: in the long term, all IPv6 hosts should use native IPv6 connectivity. Teredo should therefore be disabled when IPv6 connectivity becomes available.
I always disable this, it's the first thing I do after IPv6 is enabled. You can disable it with the command:
netsh int teredo set state disabled
Thirdly, consider whether you want Windows XP privacy extensions. They make sure that the configured IPv6 is not configured to reveal your MAC address in EUI-64 format by using various randomly generated, temporary outgoing addresses. Microsoft uses some custom voodoo to create the "cloaked" IPv6 address, not conforming to RFC 4941 iirc. You can disable privacy extensions in this way:
netsh int ipv6 set privacy disabled
Something important to note -- many people do not know is that this still does not enable EUI-64 addresses. You will have to employ one additional command to get the normal behaviour (these days we are used to having to employ scores of commands in Microsoft environments to get normal behaviour from the OS):
netsh int ipv6 set global randomizeidentifiers=disabled store=persistent
And now we are ready to get connectivity; the next step is to configure WindowsXP to connect with a tunnel.
netsh interface ipv6 add v6v4tunnel "tunnel name" $host-ipv4 $router-ipv4
netsh interface ipv6 add address "tunnel name" $tunnel-v6host
netsh interface ipv6 add route ::/0 "tunnel name" $tunnel-v6router
Voilà, IPv6 should be working.
Although WindowsXP unfortunately provides no way to integrate DHCPv6 server, relay and client functionality out of the box, you can choose to use external software for DHCPv6 in both stateful and stateless mode. One example of such software is "Dibbler".
Now I want to make a few points based on personal experience:
- WindowsXP is nearing its End of Life cycle. Update your software, preferably to something that is Open Source so that you can look under the hood and more importantly, because Open Source technology makes less use of internal standards and conforms more to RFCs.
- There is a Technet article titled "Internet Protocol Version 6: Request for Comments and Internet Drafts", last updated in 2003, that has documented the RFCs to which WindowsXP is said to conform. Yes, I intentionally sound cynical about Microsoft's claims because Microsoft frequently proves that they continue to break conformity to RFCs.
- Subscribe to IPv6 mailing lists. You can ask/answer questions there and learn about security implications. Security is a critical aspect of IPv6. Contrary to popular belief there are many, many differences to IPv4 and people who like to pry, prod and poke IPv6 networks have been doing so for a very long time. One such mailing list is "ipv6hackers".
- Further information with regards to IPv6 security: "Security Implications of IPv6". I just have to stress that IPv6 is not a toy: it's srsbsns. Especially on corporate and governmental networks.
And finally, lest I digress too far I want to show you one more operational citation from a Technet article titled "Using Windows Tools to Obtain IPv6 Configuration Information":
The interface ID (the last 64 bits of a unicast IPv6 address) can be:
- Based on the IEEE 802 address of an installed network adapter
The IEEE 802 address, commonly referred to as a media access control (MAC) address, is 48 bits and assigned to each network adapter as it is manufactured. The Extended Unique Identifier (EUI)-64 address is a newer 64-bit MAC address. IEEE 802 addresses can be converted to EUI-64 addresses. Interface IDs for unicast IPv6 addresses can be based on the EUI-64 address of a network adapter.
RFC 3041 defines temporary IPv6 addresses, which use a randomly generated interface ID and a relatively short valid lifetime. Temporary IPv6 addresses are typically used by client applications when initiating communication, such as a Web browser, and are not registered in DNS. Public IPv6 addresses are typically used by server applications for incoming connections, such as a Web server, and are registered in DNS. Public IPv6 addresses can have randomly generated or EUI-64-based interface IDs.