Converting Windows XP to IPv6 I have a mixed group of computers here, mainly because of my work. Most of them run operating systems which don't understand IPv6 and will never do. It is obvious that Microsoft won't release updates for my Windows 95 and Windows 2000 laptops because these devices are not supported anymore, but I was a little bit disappointed that also my Windows Mobile 2003 PDA has no IPv6 support. Even though when this OS was launched, it was rumored that IPv6 would be implemented. The only other Microsoft OS I have here which could be a candidate for conversion is Windows XP with service pack 3.
The installation of IPv6 on XP took one more step than on Windows 7. On Windows 7 the IPv6 protocol has already be loaded and only has to be activated, on XP you have to install the protocol first, which takes another 15 or 20 seconds. After it had been succesfully installed I couldn't change the properties button and I therefore restarted the box. A normal procedure for a Microsoft system if an installation seems to have been completed for only 90%.
After the OS came back up, I was immediately able to ping Google on its IPv6 address. So everything was working fine, including receiving the IPv6 address of my ADSL router over the network. But the Properties button in the network settings was still gray. It took me some time to realize that Microsoft didn't allow me to change any of the IPv6 settings, including the own IP address or the IP address of the router. There may be some settings in the registry which could be used for that but that is something out of the reach of most XP users. So for now is my conclusion that if you want to work with IPv6, you have to accept the default settings and there is no way to structure the IP addresses of your internal network in any way.
Converting Linux to IPv6 I have a number of Linux versions here. Some old fashioned Debian 3 installations are mainly used for testing and developing stuff for specific customers and they have to be fully compatible with those customer's system. Even though converting might be possible, I therefore won't touch these boxes. That leaves only my PlayStation 3 running Yellow Dog Linux and my Centos 5.4 installations to be converted to IPv6. IPv6 is present in all modern Linux kernels and the only thing you have to do is to switch it on. Centos and Yellow Dog linux are family members in the same Linux source tree and configuration files are therefore on the same location. In short, add the following line to /etc/sysconfig/network
NETWORKING_IPV6=yes
and the following two lines to /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6ADDR=<the box IPv6 address>
IPV6_DEFAULTGW=<the router IPv6 address>
restart the network services and it should work.
Yes, you have read it well, it
should work, but it didn't. Two problems were preventing me from pinging www.google.com on it's IPv6 address.
Linux vs. Windows approach After having played with IPv6 on Windows for a few days, I thought that ping www.google.com would automatically try to ping on the IPv6 address. This is not the case and the difference is in the approach Microsoft has taken versus the Linux approach.
Microsoft develops software for users. In their way of thinking about IPv6, they have decided that most users don't know anything about protocols, network packets, addressing or routing. The network connection should work with very few manual intervention, and the OS should solve problems related to the underlying protocol. Therefore all utilities and software I have tested on Windows take an approach where they automatically first search for an AAAA (IPv6) record for a domain name, and use an IPv4 A record only if there is no IPv6 version available. Ping, tracert and browsers will therefore connect you automatically over IPv6, unless it isn't available.
Linux is different. Linux was written by geeks for geeks, and geeks seem to want to be in control of everything, including low level network packet addressing when they in fact are working on a high level application level. This has caused a strange, and in my opinion wrong approach by duplicating network tools into a IPv4 and an IPv6 version. You have
ping for IPv4 and
ping6 for IPv6.
traceroute for IPv4 and
traceroute6 for IPv6. The tool nslookup under Windows automatically gives you the A and AAAA records if you provide a domain name, the Linux version requires you to first set the query type with the command
type=AAAA, before you see the IPv6 address of a domain. But you won't see IPv4 addresses once you have done this.
Although I have above average technological knowledge, I love the Microsoft approach. In cases where you need to specificy the protocol you want to use, you simply add the
-4 or
-6 option to the ping or tracert command line and it will use IPv4 or IPv6 addressing only. It hides the technological layers, unless you need to see them. And it makes an easy transition from IPv4 to IPv6 also easier than the separated approach used in Linux.
Google and IPv6 [disclaimer]
It may look like this section is a rant on Google. It isn't. In fact Google is the only Alexa top 100 company who have made a lot of their services available under IPv6. But this problem really needs a fix.
[/disclaimer]
With the knowledge I had gained that Linux uses ping6 to check connectivity with IPv6 devices, I tried that to see if I could make a connection with www.google.com over IPv6.
It didn't work. :(
The ping6 command could reach my local devices, my router and after some testing it could also ping to bare IPv6 addresses over the Internet. But I couldn't get IPv6 to work with normal domain names. It seemed that www.google.com didn't resolve to an IPv6 address, even though it
did work under Windows 7 and Windows XP. It took me quite some time to understand the reason, but after a number of tries, I discovered that Google was the source of this problem. Look at the following screen dump I made from my test Linux system.
-bash-3.2$ nslookup
> set type=AAAA
> server 10.0.0.138
Default server: 10.0.0.138
Address: 10.0.0.138#53
> www.google.com
Server: 10.0.0.138
Address: 10.0.0.138#53
Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
www.l.google.com has AAAA address 2a00:1450:8001::63
www.l.google.com has AAAA address 2a00:1450:8001::68
www.l.google.com has AAAA address 2a00:1450:8001::93
Authoritative answers can be found from:
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> www.google.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
www.l.google.com canonical name = www-tmmdi.l.google.com.
Authoritative answers can be found from:
l.google.com
In the first part, I use the local address 10.0.0.138 of my ADSL router as a DNS server. It forwards queries to the DNS server of my ISP and gives correct answers on my IPv6 queries. In the second part I used server 8.8.8.8 as a DNS server, which is
Google's public DNS server [webmasterworld.com]. That IP address was set up as default for DNS resolving on my test Linux box. Google's public DNS server doesn't resolve IPv6 addresses. It doesn't even resolve the IPv6 address of Google's own main domain name. This means that all people who have done a quick install of their DNS settings with the 8.8.8.8 and 8.8.4.4 addresses, won't have any outbound IPv6 connectivity, even if their ISP supports it and all the other local settings are correct.
Administration of IPv6 networks In my next post I will focus more on hosts files, setting up DNS servers and firewalling.