Overriding global forwarding with BIND

If a name server is authoritative for a zone, it will not follow subdomain delegations when using a global forwarder (unless it is also authoritative for the subdomain).

Example: a name server is authoritative for local.zone, and is using one or more global forwarders. local.zone contains an NS record for subdomain.local.zone. This name server receives a DNS A record query for host.subdomain.local.zone. This name server will send the query to the global forwarder(s); this name server will answer requests for local.zone data, but it will not follow the subdomain delegation and return the DNS A record for host.subdomain.local.zone.

If the forwarder(s) are unable to gather information about subdomain.local.zone, the name server will exceed MAXQUERIES and will return a SERVFAIL message:

MAXQUERIES exceeded, possible data loop in resolving (host.subdomain.local.zone)

In order to override global forwarding on a per zone basis, add an empty forwarders statement in the zone.

Example:

zone "local.zone" in {
        type            master;
        file            "db.local.zone";
        forwarders      { };
};

From the BIND 8 named.conf man page:

If either no forwarders clause is present in the zone or an empty list for forwarders is given, then no forwarding will be done for the zone, cancelling the effects of any forwarders in the options statement. Thus if you want to use this type of zone to change only the behavior of the global forward option, and not the servers used, then you also need to respecify the global forwarders.

Also, see "11.3.3.1. The Trouble with forwarding" from DNS and BIND, 4th Edition:
http://www.unix.com.ua/orelly/networking_2ndEd/dns/ch11_03.htm
Back to brandonhutchinson.com.
Last modified: 2008/06/13