Saturday 21 November 2009

Eircom Netopia 2247 and IPv6

I've had a problem with IPv6 on my home network for a long time. With Vista\Win7\recent Ubuntu releases I found that ipv6 aware applications (like Firefox) would slow to a crawl and spend ages "resolving" addresses that I could use nslookup to resolve without an issue. Some digging pointed at IPv6 name resolution and I found that disabling ipv6 at the OS level or disabling ipv6 internally in Firefox using the network.dns.disableIPv6 setting in about:config fixed the symptom.

I've been playing with Chrome OS in a VM today and I found that it was spending an insane amount of time (apparently) resolving addresses so I started to look around and see if there was any way to disable IPv6 DNS lookups in Chrome\Chrome OS as that seemed to be a likely suspect. It appears that the developers are taking an ideologically purist approach to this and are deliberately not including a user switch to disable IPv6 because they feel that if they mask the problem at the user level then the incentive for providers to fix their buggy IPv6 infrastructure will be seriously diminished. That's a reasonable policy I suppose so I had to dig further into the IPv6 problems at my end.

The root of my problem turns out to be the Netopia 2247 DSL router that I got from Eircom. By default it sets itself up as a DNS proxy and it doesn't handle IPv6 AAAA requests well. The Netopia's web based GUI doesn't have any obvious way to disable this "feature" and all clients that get DHCP addresses from it end up with the router address as their single DNS server address. It does have Telnet management interface that gives you much finer control of the config though.

To fix the problem telnet into the Console - (download Putty if you're on a newer Windows OS that doesn't have a native Telnet client). Login using the same credentials you use for the web interface (the defaults are Username: Admin, Password is not set, just hit return). Then use the following commands:

configure
set dns proxy-enable off
save
restart

The router will reboot, this will force all clients to reconnect and their new DHCP settings will now point directly at whatever DNS servers it has been configured with rather than the router itself.

Chrome OS now boots and authenticates rapidly and there's no lag at all now while it tries to resolve addresses so I think I've finally found a proper fix for the problem.