default local DNS failover solution needed, nscd?

Chuck Anderson cra at WPI.EDU
Tue Apr 29 15:24:53 UTC 2014


On Fri, Apr 25, 2014 at 03:58:44PM -0700, Andrew Lutomirski wrote:
> > https://sourceware.org/ml/libc-alpha/2012-12/msg00416.html
> 
> I've never understood why something like nscd is even worth trying to
> support.  There's a simple, well specified protocol that program can
> use to talk to a DNS resolver.  It's called DNS.  Why try to shoehorn
> it into something else when all you're likely to do is come up with a
> poor imitation of what you get by sending DNS queries over DNS to a
> local resolver?

Well, nscd does a lot more than just DNS.

> I'm sure it would be possible to improve/rewrite nscd, but at
> best you'll match the quality of something like unbound.  And you'll
> never be compatible with all the third-party resolver clients out
> there.

Third-party resolver clients are a valid concern (lwres? app-specific
resolvers?).  It is interesting that historically, /etc/resolv.conf
was the configuration for just the stub resolver built into the C
library, but now it has become the configuration for third-party
resolvers as well.

>From the man page lwres(3):

    The lwresd library implements multiple name service APIs. The
    standard gethostbyname(), gethostbyaddr(), gethostbyname_r(),
    gethostbyaddr_r(), getaddrinfo(), getipnodebyname(), and
    getipnodebyaddr() functions are all supported. To allow the lwres
    library to coexist with system libraries that define functions of
    the same name, the library defines these functions with names
    prefixed by lwres_. To define the standard names, applications
    must include the header file <lwres/netdb.h> which contains macro
    definitions mapping the standard function names into lwres_
    prefixed ones. Operating system vendors who integrate the lwres
    library into their base distributions should rename the functions
    in the library proper so that the renaming macros are not needed.

That last sentence is intriguing to me.  Does that mean we could
replace/override the dumb stub resolver in glibc with lwres/lwresd
system-wide to solve the DNS failover problem?


More information about the devel mailing list