IPv6 on Windows XP

After ran “ipv6 install” on a network with an active radvd server, you may have a problem… I assume that you’ve turned off v4 completely and XP just sets itself an autoconfiguring address.

Windows XP does not use the IPv6 nameserver information properly. It wants to use an IPv4 resolver. So, we need a forwarder installed locally.

You can install a current edition of ISC BIND for windows. Although I had problems keeping it secure and switched to DJBDNS for my main dns servers, it can be okay far this simple task. Put something like the following in C:\WINDOWS\system32\dns\etc\named.conf, substituting for the real IPv6 nameserver address.

options {
	listen-on {
		127.0.0.1;
	};

	forward only;
	forwarders {
		2001:db8::1;
	};

	directory "C:\WINDOWS\system32\dns\etc";	
};

Once it is running and working. (Test it with nslookup) We just need to set windows to use it…

netsh interface ip>add dns "Local Area Connection" 127.0.0.1
127.0.0.1 is not an acceptable value for addr.

What? ☺ Let’s try again with some other one.

netsh interface ip>add dns "Local Area Connection" 169.254.0.0
Ok.

Ok, it accepted it this time. If this happens, it is necessary to edit the registry to correct the address back to 127.0.0.1. Look around HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

Once this is done 127.0.0.1 is shown in the GUI instead of the fake random address. ping now works, as does Internet Explorer, for IPv6 sites.

Another way to get IPv6 DNS may be to use a small program

Forwarding IPv4 localhost to your IPv6 Server

Most programs other than DNS use TCP, so the internal forwarder can be used. We restrict the listen address to 127.0.0.1 in case the remote server does access control by IPv6 addresses.

Use the portproxy

netsh interface ipv6 set privacy state=disabled store=active
netsh interface ipv6 set privacy state=disabled store=persistent
netsh interface ipv6 set global randomizeidentifiers=disabled store=active
netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent
netsh interface portproxy add v4tov6 listenaddress=127.0.0.1 listenport=3128 connectaddress=2001:db8::1 connectport=3128 protocol=tcp
proxycfg -p 127.0.0.1:3128