Comment 5 for bug 1003842

Revision history for this message
Thomas Hood (jdthood) wrote : Re: Precise NM with "dns=dnsmasq" breaks systems with non-equivalent upstream nameservers

In the past it has been noticed that dnsmasq does not try the nameservers one after the other as some resolver libraries do (including the GNU libc resolver(3)). People have asked if dnsmasq can be enhanced to exhibit the one-after-the-other behavior. But dnsmasq's author, Simon Kelley, writes (http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2011q2/005060.html):
> [T]he idea of searching a set of servers in a particular order is problematic.
>
> Assume you have two servers, one of which knows about some domains
> but the other does not. You query the "special" server first so that it can
> tell you about those domains. But DNS uses UDP, which is an unreliable
> transport, so at random, the queries to the special server might get
> lost, and then the queries will get answered from the second server, and
> randomly your extra domains get lost. Good luck diagnosing the problem.

This critique pertains to the aforementioned resolver libraries, too, of course.

From this we can infer that the networks with non-equivalent nameservers are badly configured.

Simon Kelley continues:
> Dnsmasq is written with the strong assumption that all "normal" upstream
> servers have the same view of the DNS. You can redirect queries for some
> domains to other servers like this
>
> server=/example.com/1.2.3.4
>
> and *.example.com will go to the special server and only the special
> server

He explains further at http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2009q3/003295.html

Given that such misconfigured networks exist, however, how should Ubuntu help users to deal with them?

* Should "dns=dnsmasq" be optional, not the default?
* Should there be an easy way of disabling "dns=dnsmasq"?
* Would it be possible for Ubuntu automatically to detect nonhomogeneous sets of nameservers and to turn off "dns=dnsmasq" in the event that such a set is detected?