On 1/2/2012 5:42 AM, Matus UHLAR - fantomas wrote:
On 21.12.11 19:21, Peter Andreev wrote:
All these servers are slaves. They don't send notifies.

2011/12/21 Matus UHLAR - fantomas <uh...@fantomas.sk>:
they do, unless you have turned it off...

On 22.12.11 11:54, Peter Andreev wrote:
Of course I turned it off, it's normal practice for slaves, I assume.

even sending notifies by slaves can have a reason. for example, other slaves not getting notifies from master...

Do you think if server needed to resolve something, and you would disable it, it would work better? I think just the oposite. If a server does lookups only when needed, then disabling required lookups would make it not working.

I think that if server is authoritative - and - slave-only it should
use system resolver rather than querying by itself.

BIND will not use system resolver. BIND is the resolver. Relying on other resolver could cause troubles. If BIND does not need to resolve, it will not. If it needs, don't block it.

I agree with Matus. BIND should be as self-sufficient as possible, and not make any assumptions about the capability of and/or the data it expects to get from the system resolver, which might be configured to look at a completely different DNS namespace, or be configured with non-DNS resolution methods, be broken with respect to IPv4/IPv6 capabilities, address sorting, etc. There's lot that can go wrong when you make one subsystem (BIND-based DNS) dependent on another (system resolver, however that's set up, if it's set up at all). BIND already has ways to resolve names, and many different ways to precisely control how it does that, so it shouldn't be necessary to rely on a completely different subsystem for that function.

Now, what are your real complaints about an authoritative-only nameserver making "internal" queries? Looking back through the thread, I think there are two:

1) That internal lookups are generated when sending NOTIFYs. Do you actually need to send those NOTIFYs, or are you just leaving things with the default configuration (which follows the RFC 1996 algorithm of looking at the contents of the zone's NS records and its SOA.MNAME)? If you need those NOTIFYs at all, I expect that you could suppress the associated lookups with a combination of "also-notify" and "notify explicit". Then BIND only has a list of IP addresses to which to send NOTIFYs and I can't (offhand) see any reason for it to generate "internal" lookups. I haven't tested this theory, but it shouldn't be hard to do. Another thing to consider: even with the default NOTIFY behavior, named shouldn't need to generate lookups for any of the names associated with the NOTIFYs which are in zones for which it is authoritative. E.g. if you're authoritative for example.com and ns1.example.com is a name within that zone, then you shouldn't need to generate a lookup for that name if you want to send a NOTIFY to it. Moreover, since NS targets tend to "cluster" within groups of zones under common administrative control, it should only be a fairly small minority of NS targets which require internal lookups for NOTIFY purposes. Is this really a problem then?

2) "upwards referrals". If your recursion-disabled nameserver is configured to respond to queries outside of its authoritative zones, then the typical response would be an "upwards referral" to the root zone. But to give good, current information about the root zone, when the root zone is explicitly or implicitly defined with only "hints", a "priming" query needs to be made when named starts up (since "hints" are only "hints", not the real data, which is obtained by querying the roots). Someone mentioned defining your own root zone authoritatively with localhost as the only root nameserver. But that's a really bad idea if you're giving out upwards referrals to arbitrary Internet resolvers. You could poison the cache of some really old, broken nameserver. The link that David Forrest gave to a DNS-OARC webpage pretty much runs down the whole "upwards referral" issue, and I recommend you read it. You could combine defining your own root zone authoritatively (which will suppress the priming query), with carefully controlling access to that zone (as described on that webpage) so that no upwards referrals are given. I wouldn't recommend populating that root zone with "garbage" (such as localhost, for example); I'd put real root-zone information in there, just in case the ACLs in named.conf get accidentally reconfigured some day (perhaps by whomever inherits your config). That root-zone data gets stale over time, of course, but it takes many many years for it to become completely invalid, and if you're concerned about that, you could write a simple script to do a root zone query periodically (e.g. monthly) and refresh the contents of the zone file. Or, you could just let ISC do the work of compiling the latest root-zone data into each version of BIND they put out, and not worry so much about an occasional priming query.

I think the main issue here is that you got a user problem report of "bad DNS data" without any specifics or reproducibility, and you're just, frankly, grasping at straws trying to find a explanation and/or a solution. I can assure you, there are many thousands of sites that allow their "authoritative-only" BIND nameservers to perform "internal" queries, and never have a problem with "bad data" being presented randomly to users. Conversely, this is the first time I've heard anyone complain that the "internal" queries of an "authoritative-only" BIND nameserver might possibly, potentially have led to some sort of data inconsistency problem. So, unless you can actually identify a real problem here, I'd stop worrying about these "internal" queries. Eliminating them seems more a classic case of "a solution looking for a problem" rather than the other way around, and in order to "fix" things, you may end up making your configuration so twisted and convoluted, chances are you'll inadvertently introduce other, real problems that will affect your users negatively. Sometimes the wisest choice an IT and/or Network admin can make is to leave messy "imperfect" behavior alone.

There are other explanations of "bad DNS data" besides BIND as well. You need to look at the entire environment, every component, every step in the process. In most cases I've run across this symptom, it's because certain flavors of VPN software violate one of the fundamental principles of DNS resolution -- they fail over to another resolver when they get an NXDOMAIN or NODATA response (which they shouldn't do, since NXDOMAIN/NODATA are perfectly-valid responses in and of themselves). They then cache data from that failover lookup which can have a negative effect on future lookups. This is further exacerbated if their "failover" resolver(s) is/are run by evil ISPs that do "NXDOMAIN redirection" (Google that if you're not familiar with the concept/practice). So, you need to look further afield for the real root cause of the problem, rather than obsessing over the fact that an "authoritative-only" BIND instance, in the absence of a lot of custom configuration, still generates a few queries here and there for internal purposes, and thus is not *perfectly* "authoritative-only".

- Kevin

_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe 
from this list

bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to