what is the behavior of global forwarders

Kevin Darcy kcd at daimlerchrysler.com
Fri Oct 6 03:45:19 UTC 2006


kalyanasundaram S wrote:
>>>  global {
>>>   forward only;
>>>   forwarders {1.2.3.4; };
>>>   ......
>>>   ....
>>>  }
>>>
>>> ..
>>> zone "example.com" in {
>>>    type forward;
>>>    forward first;
>>>    forwarders { 3.3.3.3; };
>>> };
>>>
>>> this 3.3.3.3 does not exist. (it is a stand alone setup- so there is no
>>> root server access,and 1.2.3.4 is alive in that stand alone setup) I
>>> queried for some client in example.com. What i expected was that it is
>>> not able to contact 3.3.3.3 so it should go for global forwarders(in
>>> this case 1.2.3.4) . But it looks for root server and said connection
>>> time out.
>>>
>>> then again i had
>>> zone "example.com" in {
>>>    type forward;
>>> };
>>> i expected atleast now it should go for global forwarders. But again the
>>> same.
>>>
>>> what is default behaviour of global forwarders. Where it is used? how do
>>> i configure my dns to go for global forwarders when the forward zone
>>> forwarders is not available?
>>>
>>> is it a bug or am i missing some option to set
>>>
>>>       
>> Forwarders are not cumulative. The list of forwarders you define at a
>> given zone level overrides any forwarders you may or may not have
>> defined at ancestor zone levels which in turn override the global
>> forwarders. If you want the global forwarders to be used
>> *in*addition*to* some set of zone-specific forwarders, then add them to
>> the list.
>>
>> Note that some versions of BIND 9 work through the forwarders list
>> *sequentially*, so if you're running one of those versions, you might
>> want to give some thought as to the order of the list. Other versions of
>> BIND 9 choose forwarders based on an adaptive algorithm which keeps
>> track of how quickly the respective forwarders respond to queries. For
>> those versions, the order in which the forwarders are defined is
>> irrelevant.
>>
>> - Kevin
>>     
>
> Well, thaanks a lot for answering me.
> so what ever is there in global level will be overridden by the zone level declaration.
> forwarders {1.2.3.4; }; at global level is overridden by forwarders {3.3.3.3; }; at zone level and the policy also overridden from "only" to "first". Am i correct?
>
> But again 
>
> zone "example.com" in {
>     type forward;
>  };
> These statmenet should inherit the forwarders and the policy from global and go to 1.2.3.4 for the query right?
> It should become like 
> zone "example.com" in {
>     type forward;
>     forward only;
>     forwarders { 1.2.3.4}; 
>  };
> Is that the correct way heppening inside?
>
> This is not happenening it gives ms NXDOMAIN error and look for root servers?
> Please help me to figure out what is happening?
>
>   
My guess would be that if you define a "type forward" zone, but don't 
explicitly define forwarders, that it treats it like an empty forwarders 
list (i.e. "forwarders { };"), which effectively *cancels* forwarding. 
That would explain why it's going to the roots. Seems a little 
counter-intuitive, I agree, but on the other hand, usually one only 
defines a "type forward" zone if one has a specific set of forwarders 
one wants to use. It's somewhat unusual to _interleave_ forwarded and 
non-forwarded zones, with the same set of forwarders, at different 
levels of the same namespace hierarchy.

Try explicitly defining the forwarders and see if it fixes the problem.

- Kevin



More information about the bind-users mailing list