From: Natanael Copa <ncopa@alpinelinux.org>
To: Rich Felker <dalias@libc.org>
Cc: musl@lists.openwall.com
Subject: Re: DNS resolver patch
Date: Thu, 6 Dec 2018 16:23:49 +0100 [thread overview]
Message-ID: <20181206162349.19319ffb@ncopa-desktop.copa.dup.pw> (raw)
In-Reply-To: <20181206141301.GA23599@brightrain.aerifal.cx>
On Thu, 6 Dec 2018 09:13:01 -0500
Rich Felker <dalias@libc.org> wrote:
> On Wed, Dec 05, 2018 at 09:31:55PM -0800, Tarun Johar wrote:
> > Hi Team,
> >
> > The VirtualBox --natdnsresolver does not support IPv6 AAAA address
> > queries. It returns "NotImp" (code 4) for such queries.
> >
> > The MUSL library (https://www.musl-libc.org/) resolver does not
> > recognize this code and retries the query until the timeout. This
> > causes DNS lookups to take several seconds after which they are
> > eventually successful.
> >
> > The GLIBC resolver works properly with the same configuration,
> > suggesting that a fix should be made to MUSL to handle the "NotImp"
> > response code.
> >
> > The root cause is this section of code in musl/src/network/res_msend.c:149
> > /* Only accept positive or negative responses;
> > * retry immediately on server failure, and ignore
> > * all other codes such as refusal. */
> > switch (answers[next][3] & 15) {
> > case 0:
> > case 3:
> > break;
> > case 2:
> > if (servfail_retry && servfail_retry--)
> > sendto(fd, queries[i],
> > qlens[i], MSG_NOSIGNAL,
> > (void *)&ns[j], sl);
> > default:
> > continue;
> > }
> >
> > If "case 4" is added after "case 3" and before "break", the NotImp
> > code is treated as a positive or negative response and the name
> > resolution loop completes immediately.
> >
> > Can the patch for this be included in MUSL 1.1.21 ?
>
> No, this is specifically wrong. If one buggy nameserver is responding
> with "NotImp", the correct behavior is waiting for a response from a
> different one that's not broken. It's possible that we could try to
> remember such errors for each nameserver, and abort the lookup early
> with an error (not a negative result, since this is not a result) if
> *all* of them have failed, but it's not clear that that's the right
> thing to do if there might be multiple actual servers behind each
> logical one (ip address), which is probably the case for things like
> 8.8.8.8; in that case an error from one should not result in aborting
> the query. Note also that treating it as an error would not help with
> the practical need, since then the whole query would fail and you
> wouldn't get the IPv4 results either.
>
> The real fix here is just making VirtualBox's nameserver do the right
> thing, or bypassing it and querying a real nameserver. Apparently
> there's some reason it's desirable for use with certain NAT setups,
> but I'm not clear on what this is. If it's returning real results, it
> should just support AAAA and pass it through. If it's returning faked
> results for some reason, and doesn't use IPv6 for them, it should just
> return NxDomain for AAAA queries rather than an error. I'm happy to
> help in explaining to upstream why the current behavior is problematic
> if needed.
For the record, here is a good explanation:
https://nlnetlabs.nl/pipermail/unbound-users/2017-August/004866.html
RCODE 4 means "Not Implemented - The name server does not support the
requested kind of query." where "kind of query" is specified in OPCODE[1]
field (eg query or notify) and is not the RR type.
-nc
[1]: https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-5
next prev parent reply other threads:[~2018-12-06 15:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <882247050.3003099.1544074074084.JavaMail.zimbra@totalphase.com>
2018-12-06 5:31 ` Tarun Johar
2018-12-06 14:13 ` Rich Felker
2018-12-06 15:23 ` Natanael Copa [this message]
2018-12-06 14:53 ` Florian Weimer
2018-12-06 15:48 ` Natanael Copa
2018-12-06 18:18 ` Florian Weimer
2018-12-06 18:38 ` A. Wilcox
2018-12-06 19:46 ` Laurent Bercot
2018-12-25 2:06 ` Rich Felker
2018-12-27 19:18 ` Florian Weimer
2018-12-28 17:21 ` Rich Felker
2019-05-30 8:50 ` Florian Weimer
2019-05-30 13:54 ` Rich Felker
2018-12-06 20:36 ` Florian Weimer
2018-12-06 21:01 ` Rich Felker
2018-12-06 18:50 ` Tarun Johar
2018-12-06 19:36 ` Tarun Johar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181206162349.19319ffb@ncopa-desktop.copa.dup.pw \
--to=ncopa@alpinelinux.org \
--cc=dalias@libc.org \
--cc=musl@lists.openwall.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).