Wednesday, February 4, 2009

Teredo IPv6 on Vista: no AAAA resolving by applications ... ?

Can someone please help, or explain? A Windows Vista machine has IPv6 connectivity (using Teredo), it can resolve IPv6/AAAA addresses using nslookup, it can ping literal IPv6 addresses, but ... it can not ping (nor browse) to a IPv6 domain name like ipv6.google.com. See below.

What's causing this? How can I solve this so that a "ping ipv6.google.com" just works?



Microsoft Windows [Version 6.0.6001]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.


C:\>nslookup ipv6.google.com
Server:  UnKnown
Address:  192.168.1.254

Non-authoritative answer:
Name:    ipv6.l.google.com
Address:  2001:4860:0:1001::68
Aliases:  ipv6.google.com

C:\>ping ipv6.google.com
Ping request could not find host ipv6.google.com. Please check the name and try again.

C:\>ping 2001:4860:0:1001::68

Pinging 2001:4860:0:1001::68 from 2001:0:d5c7:a2d6:2c9c:d8d7:ad55:e84b with 32 bytes of data:
Reply from 2001:4860:0:1001::68: time=284ms
Reply from 2001:4860:0:1001::68: time=194ms
Reply from 2001:4860:0:1001::68: time=76ms
Reply from 2001:4860:0:1001::68: time=184ms

Ping statistics for 2001:4860:0:1001::68:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 76ms, Maximum = 284ms, Average = 184ms

C:\>


7 comments:

Anonymous said...

Vista doesn't look up AAAA at all when it's on Teredo. It's intended behavior -- stupid, perhaps, but it's intended. See http://technet.microsoft.com/en-us/library/bb727035.aspx for all the details.

/* Steinar */

Quirinius said...

Steinar, thanks for the reply and URL.

The URL says
"If the host has only link-local or Teredo IPv6 addresses assigned, the DNS Client service sends a single query for A records.

If the host has at least one IPv6 address assigned that is not a link-local or Teredo address, the DNS Client service sends a DNS query for A records and then a separate DNS query to the same DNS server for AAAA records. If an A record query times out or has an error (other than name not found), the corresponding AAAA record query is not sent."

So only a non-Teredo IPv6 address is needed? Let's take care of that: I assisned a non-Teredo, fake IPv6 address 2222::2222:2 to my WLAN interface. A "ping news6.xs4all.nl" still leads to " ... could not find host".
I then assigned a fake default gateway 2222::2222:1 to the interface. The good news: ping news6.xs4all.nl leads to a resolved IPv6 address. The bad news: the ping was from/with the fake IPv6 address which does obviously not work:


C:\>ping news6.xs4all.nl

Pinging news6.xs4all.nl [2001:888:0:4::119:119] from 2222::2222:2 with 32 bytes of data:
Destination host unreachable.
Destination host unreachable.


Ai. So my trick doesn't work. And Microsoft's statement that only a non-Teredo IPv6 address is needed for AAAA lookup, is not true: it needs full non-Teredo IPv6 *connectivity* to the outside world.

Isn't there a registry setting that takes care of resolving?

Quirinius said...

PS: On Linux, Miredo (Teredo) and AAAA resolving work great together. ;-)

Simplius said...

Go to:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parameters

and add a DWORD value:
AddrConfigControl = 0

You will have DNS resolving through Teredo tunnel.

Quirinius said...

@Simplius: interesting! I have to test that on a Windows machine very soon.

Mashaal said...
This comment has been removed by the author.
Mashaal @ Phulas said...

Adding the value to the registry as Simplius mentioned works like a charm.