These issues were discovered when ttdnsd was in the default DNS resolution loop. Since then, we decided (85zk731slu.fsf@boum.org) to pull ttdnsd out of the "normal" DNS resolution loop, but leave it installed, configured and running. This was done in Tails 0.13.

the bugs

ttdnsd can't resolve

Running:

host -t A boum.org 127.0.0.2

produces the result:

;; connection timed out; no servers could be reached

In Tails' ttdnsd is configured to use Google's DNS server (8.8.8.8) which seem to have started to block connections originating from the Tor network. Configuring ttdnsd to use OpenDNS (208.67.2222.222) instead fixes this issue.

ttdnsd has concurrency issues, part 1 (upstream bug?)

In Tails, when Iceweasel starts, ttdnsd crashes. When Iceweasel starts it concurrently does an A and AAAA query for several of the search engines and the startpage. It seems like this is the cause of ttdnsd crashing. A crash can reliably be reproduced the following way:

host -t A boum.org 127.0.0.2 &
host -t AAAA boum.org 127.0.0.2 &

It has been verified via packet sniffing that ttdnsd indeed gets both the A and AAAA queries sent by iceweasel (which is weird, see below), which creates the same situation as running the two commands above.

Running ttdnsd with the -c option seems to prevent the crash, but then no circuits are built, so ttdnsd is still useless.

It seems this crash only occurs when ttdnsd is configured to use a DNS server that blocks the Tor network, like Google DNS. Switching to OpenDNS prevents the crash, but...

ttdnsd has concurrency issues, part 2 (upstream bug?)

When using OpenDNS, running:

host -t A boum.org 127.0.0.2 &
host -t AAAA boum.org 127.0.0.2 &

fails with the same old timeout error for both requests. It seems ttdnsd can only handle one request at a time; if a request is made while it handles another, both fails.

ttdnsd gets A queries (it shouldn't)

A fine question is why ttdnsd gets both the A and AAAA requests. Tails' system resolver, pdnsd, is configured to first use Tor's resolver (i.e. DNSPort), which should work for A requests, and fallback to ttdnsd only if the former failed, i.e. for all non-A requests. Explicitly using the system resolver shows this expected behaviour:

host -t A boum.org 127.0.0.1 &
host -t AAAA boum.org 127.0.0.1 &

i.e. Tor's resolver handles At and ttdnsd handles AAAA.