incompatibility between dnsmasq and uClibc resolver

Mathias Kresin openwrt at kresin.me
Sat Oct 11 11:16:34 UTC 2014


Hello,

querying dnsmasq from a system which uses uClibc can result in a
partly not working name resolution.

I'm using dnsmasq 2.71 and uClibc 0.9.33.2 on openWRT 14.07
(mips/x86). The openwrt version of uClibc includes already a lot of
fixes from HEAD. I've checked the commits between $version and HEAD of
both programs and couldn't spot any related change.

To hit this incompatibility the requested hostname must not a dnsmasq
dhcp client and not mentioned in any hosts file.

When querying for a _non_ FQDN the uClibc resolver sends first a query
for the hostname only. If the server response code is NXDOMAIN (3) or
SERVERFAIL (2) it resends the query as FQDN using the search value
from /etc/resolv.conf[1].

Unfortunately dnsmasqs response code to the query for the hostname is
NOERROR (0). As this isn't s.th. that uClibc does expect in case of a
none existing hostname, the query for the FQDN is never send.

For reference I checked what other DNS resolvers are doing when
querying for non existent hosts with a search value in resolv.conf
using 'nslookup host':

linux + uclibc:
    1. query for host

linux + glibc:
    1. query for host.domain.tld
    2. query for host

windows7:
    1. query: host.domain.tld

macos 10.9:
    1. query for host.domain.tld
    2. query for host

And even what other DNS Servers[2] are returning on 'nslookup host':

microsoft dns: SERVERFAIL (2)
google public dns: NXDOMAIN (3)
bind 9.10.0-P2 : NOERROR (0)
powerdns: NOERROR (0)

Due lack of a deeper knowledge of the DNS RFCs I can't say who behaves
wrong here. According to [3],[4] and [5] I'm not the only one who
found the oddity.

Regards
Mathias Kresin

[1] http://git.uclibc.org/uClibc/tree/libc/inet/resolv.c?id=a9bdc5d28e692c04f51bcea1bb8e87f9c72ad09f#n1463
[2] http://www.ungefiltert-surfen.de/nameserver/de.html
[3] https://dev.openwrt.org/ticket/13685
[4] http://freetz.org/ticket/1560
[5] https://bugs.alpinelinux.org/issues/469


More information about the uClibc mailing list