Regardless of what you've been told, the resolvers ("nameserver"s) in /etc/resolv.conf are tried *in*sequence*, and if a valid response (where NXDOMAIN _is_ a valid response) is received from one resolver, none of the others are tried. So, I'm surprised that your mix-and-match-resolvers hack actually works. The only thing that comes to mind is that the Windows DNS is so horked that it's returning SERVFAIL for names outside of its authoritative domains. That would trigger failover to another resolver, but that's an *ugly* way to integrate BIND and Windows DNS.

Instead of guessing at such things, learn how to use tcpdump/Wireshark and find out what's really happening under the covers. I haven't seen a resolver implementation send queries *simultaneously* to all resolvers, since circa Windows 95. And I've never seen it on Linux.

As for a long-term solution, either define an internal root zone (with conditional forwarding exceptions for the external stuff you *need* to resolve), or, if you must, forward by default to the Internet and then define all of the "private" stuff as master/slave/stub on your internal servers.

                - Kevin
On 4/8/2014 6:08 AM, Bryan Harris wrote:
Hello all,

We have a sort of private DNS such that servers can lookup zones that don’t 
actually exist in the real, public DNS, they just exist within our private 
NOCs.  In addition, we have always had both Windows AD handling the Windows 
side of things and we have had BIND handling Linux.

When the BIND servers don’t know about a domain, they forward to a public 
server such as google’s 8.8.8.8 thing.  For some reason the Windows guys aren’t 
allowed that option on their DNS (I believe it’s a security requirement), so 
any Windows server that DOES need public DNS resolution always has a BIND 
server listed in the TCP/IP properties of the network interface (from what I 
have seen, it’s usually not the first DNS server in the list).

Anyway, up until now Windows servers primarily got DNS answers via AD (except 
as mentioned above), and Linux servers via the BIND servers.  Recently, 
however, we have enabled AD authentication on Linux, meaning the Linux servers 
need to know about the AD domains (well, they need to know about the kerberos 
and ldap service records and whatnot).

The current mechanism is to put the Windows AD server into the resolv.conf 
BEFORE the BIND servers, since, as has been explained to me a Linux server will 
perform a query against all three simultaneously (that doesn’t immediately ring 
true to me, it’s just what I was told).  While this does seem to work, I’ve 
been wondering if it would be of any benefit to instead let the BIND servers 
know about the AD zones in some way, allowing us to continue with our “Linux 
sends all queries to BIND” methodology.

As I understand BIND could be theoretically doing conditional forwarding, or it 
could use stub zones, or perhaps could be a slave with AD as the master.  Is it 
just as well to leave things alone?  Or would one of these be preferable to its 
current setup?  Any advice or guidance would be greatly appreciated.

Thanks in advance.

V/r,
Bryan
_______________________________________________
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





_______________________________________________
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