On Wed, 09 Aug 2006 18:26:32 +0000, Nick Maclaren wrote:
>
> In article <(E-Mail Removed)>, d
> <(E-Mail Removed)> writes:
> |>
> |> > Due to my broadbang provider going through a sticky patch, I have
> |> > discovered that my system is using only the first nameserver in
> |> > /etc/resolv.conf. If the reply is a non-authoritative does not
> |> > exist, it doesn't try the others.
> |> >
> |> > Does anyone recognise this, and preferably know what to do about it?
> |>
> |> That's the correct behaviour. If the NS responds with "DOES NOT EXIST"
> |> do you want it to confirm, by trying every other NS in
> |> /etc/resolv.conf?
>
> No, that is the correct behaviour for an AUTHORITATIVE "does not exist". A
> non-authoritative one really means "not known to me - try elsewhere". What
> it meant in this case was that the DNS server had lost its upstream links
> and couldn't pass the request on.
Yes, that is correct behaviour for a resolver. A caching nameserver
shouldn't ever return an authoritative answer for a domain hosted on
another server (older versions of bind used to if they had just fetched
the answer from the authoritative server, rather then answering from the
cache, but this isn't correct and has been fixed in bind9). The non
authoritative answer from a caching nameserver means "here is the answer,
I got it from somewhere else". It doesn't mean the answer shouldn't be
believed.
If a server really means "not known to me, try elsewhere", and a
legitimately used caching server never should, it should respond NOERROR,
no answer and an authority section (often listing the root or GTLD
nameservers). This will happen if you send a query to a server which is
denying you recursion, which a resolver shouldn't be doing.
The correct thing to do in this case is not to answer. Then the resolver
*will* try the next server in the list. If this is really what this
nameserver is doing it's not just its network links which are broken.
> I could tell you a lot of history about the politics of the networking
> people with pre-Internet experience trying to explain to the others why
> it was essential to have the difference.
The difference between an authoritative and unauthoritative answer
matters to servers, not to resolvers. Servers use it to verify delegations
are correct - if a domain is delegated to a server, that server should
answer authoritatively for it. If it answers unauthoritatively it means it
doesn't actually hold the domain and the delegation is incorrect, so in
this case the answer is not believed.
The Windows resolver will do what you seem to want

In this respect it's
broken and this brokenness is just one reason why Windows machines cause
excessive network traffic. This is probably why your ISP is getting away
with this poor behaviour, their Windows customers don't notice it.
To fix this you can:
Complain to your ISP, but as they seem to be somewhat useless this is
unlikely to be effective;
Change ISPs;
Run your own caching server as Ed suggested (which is what I'd do,
although I'd use bind not djbdns. I run my own caching server as my ISP's
aren't very good either);
Disable updating resolv.conf in your DHCP client and hard code a list of
servers which work (dangerous as it could become incorrect but possibly a
viable temporary kludge until your ISP fixes their network).
Regards, Ian