IPv6 may be the future but right now it can be painful

Here at the SkyCrystal office we have recently upgraded a few computers to Windows 8.1 and need to use the homegroup feature for easy sharing of resources between computers.

Two of the Windows 8.1 computers are on wired ethernet and the other three are on Wifi.  In the office we use a pfSense router which provides separate subnets for Wifi and wired ethernet (LAN) as well as the Internet (WAN).

There are number of pre-requisites to getting a homegroup up and running, one of these is the need for the IPv6 network protocol.  Microsoft state that "Your network connection must have IPv6 enabled to create or join a homegroup".

Up until this point we did not have homegroup working between the Wifi and LAN subnets, so it was natural to conclude that the problem was because that IPv6 had not been configured on the router. 

ISP does not support IPv6

I should also point out that like most ISPs, the one that is used by SkyCrystal does not provide an IPv6 service.  In other words our Internet router is provided an IPv4 address but not an IPv6 address.  So without tunneling IPv6 over IPv4, we have no access to IPv6 on the Internet.

Windows homegroup needs IPv6

However Microsoft asserts that you need IPv6 to use homegroup.  So naturally I configure IPv6 on the Wifi and LAN interfaces of the office router as well as a DHCP v6 service.

Unfortunately this didn't actually fix the connectivity of the homegroup between the Wifi and LAN subnets.  To fix this I had to bridge the Wifi and LAN subnets (that is not a task to be undertaken lightly on a pfSense router).

So happy days, I now have homegroup working nicely between all of the Windows 8 and 7 computers on the office network.  As a bonus I had also setup IPv6 on my internal router interfaces which I thought was quite cool.

Slow Web Browsing

Then a while later I really started to notice an extra lag when browsing Internet web sites.  Given that I had also recently upgraded one of the Windows 8.1 PCs to a new fast motherboard and SSD drive, I was a little dissapointed by this extra 5 to 8 second lag when loading a new internet site into my browser.

Peculiar DNS issue

After a while and lots of hair pulling I worked out it was a very peculiar DNS issue.  The Windows 7 PCs didn't have this issue but the Windows 8 PCs certainly did. 

By doing an IPCONFIG /ALL on a Windows 7 PC and comparing this to a Windows 8 PC, I noticed that the DNS server entry for the Windows 8 PC contained the IPv6 address of the office router (which is running a DNS resolver service).  Additionally the IPv6 address was before the IPv4 address. 

The Windows 7 PCs did not have the IPv6 address of the Router / DNS resolver.

IPv6 DNS server in IPCONFIG

DNS Servers . . . . . . . . . . . : fd4c::245c:c0c0:7e32

                                    192.168.0.1

I also noticed that whenever I performed an NSLOOKUP on an internet server like www.skycrystal.com.au it would not resolve, unless I specified the IPv4 address of the office router - 192.168.0.1. 

It seemed clear to me that the Windows 8 DNS client was using IPv6 DNS to resolve any Internet address and failing.  It was failing because I don't actually have an IPv6 service available from my ISP, which is right now probably like over 95% of the worlds Internet users.

Of course the DNS IPv6 resolution would time out after about 5 seconds and fail back to an IPv4 DNS lookup which would work quite nicely.

How I tried to fix it

Now that I had worked out that it was a DNS IPv6 resolving issue I attempted to fix it by prioritising IPv4 over IPv6, as per a Microsoft fixit tool.  Unfortunately this didn't resolve the issue.  I then disabled the Teredo tunnel adapter on the Windows 8 PCs, which also didn't help.

I then disabled DHCP v6 on the router.  Still no luck.

Then I blocked IPv6 on all interfaces on the router.  Still no joy.

How I fixed it

Finally I removed IPv6 addresses from the router's LAN and Wifi interfaces and then rebooted the Windows 8 PCs (running 'ipconfig /renew' was not enough).  Yep this fixed it and now I am browsing at full speed without the extra 5 - 8 seconds on every new site.

Last Words

Some may say that this is a corner case but I suspect there could be thousands of other people who are in the same situation, which is why I spent the time writing this blog.

So in summary, if you want to use homegroup on Windows 8 and your ISP does not support IPv6, then do not activate IPv6 on your home/office router.  Let Windows 8 work out its own IPv6 addressing without your router.

Now you can happily surf at full speed.