Windows – How to get Firefox/Chrome to reach IPv6 websites

firefoxipv6teredowindows 7

I have been experimenting with IPv6 using a Windows7 client with the default Teredo IPv6 tunnel enabled.

I can reach IPv6 hosts (ipv6.google.com & www.v6.facebook.com) successfully using PING -6. I can also make HTTP requests to these hosts successfully using a Python script (using an IPv6-based socket).

Using Firefox/Chrome/IE doesn't work. A packet capture shows that these browsers are making DNS A queries whereas my Python script results in an AAAA query to resolve the Ipv6 query successfully.

Update 1:
I tested with the (very useful) link that Matt suggested and got the following information:

You also appear to have Teredo enabled. You did successfully connect to an IPv6 site during this test – but only when forcing the connection by connecting to an IPv6 numeric address, instead of a web site name. This setting will not help or hurt you going forward to reach IPv6 web sites.
Teredo (a tunneling protocol for Windows computers) advice will be posted hopefully soon

Update 2
I've concluded that the answer to my question is 'by not using teredo for IPv6'. This page contains the following statement at the bottom:

Due to current absence of Teredo
relays on the Internet, connections to
native IPv6 addresses are unlikely to
succeed over the Teredo interface. If
WSAConnectByName is called, Windows
Vista will not issue AAAA queries when
Teredo is the only IPv6 capable
interface available. This ensures that
native IPv6 addresses are not obtained
as a destination and that connections
are attempted over IPv4, which has the
highest chance of success. In order to
obtain IPv6 addresses when Teredo is
the only IPv6 capable interface, an
application must explicitly use the
DnsQuery API for AAAA records.

This means that when an application resolves a hostname to an IP address, Windows will not issue a request for IPv6 records (AAAA) if teredo is the only IPv6 access available unless the app specifically requests an IPv6 address. Most apps will not do this as the best practice is to query for all types of address (eg by passing AF_UNSPEC to getaddrinfo)

I have set up alternative IPv6 tunneled access using the free service from Hurricane Electric and can now browse over IPv6 to my hearts content 🙂

Best Answer

Go to the following registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parameters

Add a DWORD value:

AddrConfigControl = 0

You will have DNS resolving through the Teredo tunnel.

Related Question