DNS views and zone transfers

Bob Harold rharolde at umich.edu
Wed Sep 7 17:48:29 UTC 2016


On Wed, Sep 7, 2016 at 12:49 PM, project722 <project722 at gmail.com> wrote:

> Bob, I have few questions regarding your sample config. First off it is
> slightly different than mine, which does work BTW at least in a lab
> environment. In your internal view what is the purpose of having this line:
>
>  // this list must not match 127.0.0.1
>                 !key "external";   // use this key to test the external
> view
>                 10.0.0.0/8;
>
> Why use 127.0.0.1 and what is the 10.0.0.0/8 block for? I also noticed
> you did not include the external key indie the external view. Why is that?
>

The "internal" and "external" keys are so that I can test both views from
anywhere with:

dig something -k key.internal
dig something -k key.external

The keys are also used if you need to do notify's or zone transfers and get
them to the right view.

127.0.0.1 is used to talk from one view to the other, so it needs to match
the external view in this case

10.0.0.0/8 are the "internal" addresses in this example.

The external view could have included the external key, but 'any' covers
that.  If your match is not "any', then you would want to include the
external key and 127.0.0.1.



> On Wed, Sep 7, 2016 at 10:48 AM, Bob Harold <rharolde at umich.edu> wrote:
>
>>
>> On Wed, Sep 7, 2016 at 11:37 AM, project722 <project722 at gmail.com> wrote:
>>
>>> Thanks Bob, I will look into this. Do you know if the forwarders feature
>>> is supported in Bind 9.8.2?
>>>
>>>
>> Yes, forwarders is an old and stable feature.
>>
>> ("in-view" is new and experimental)
>>
>> --
>> Bob Harold
>>
>>
>>> On Wed, Sep 7, 2016 at 9:38 AM, Bob Harold <rharolde at umich.edu> wrote:
>>>
>>>>
>>>> On Tue, Sep 6, 2016 at 5:23 PM, project722 <project722 at gmail.com>
>>>> wrote:
>>>>
>>>>> I'm interested in the "view forwarding" method. I'm only setting up
>>>>> views to resolve a split DNS issue with one domain. I'd like to have that
>>>>> one zone/domain in my internal view and then if the source IP requests info
>>>>> for any other zone forward that to my external view. To me this sounds like
>>>>> a whole lot less work. Do you have any specifics on how I would go about
>>>>> setting that up or can you point me in the direction where I can get info
>>>>> on setting that up? Ideally, I'd want my "internal" clients to still find
>>>>> example.com even if the internal view only had example.org in it.
>>>>> Something like this but how do I incorporate the forwarding?
>>>>>
>>>>> view internal {
>>>>>
>>>>>        match clients - internal;
>>>>>
>>>>> zone - example.org
>>>>>
>>>>> };
>>>>>
>>>>> view external {
>>>>>
>>>>>     match clients - external {
>>>>>
>>>>> zone example.org {
>>>>> };
>>>>>
>>>>> zone example.com {
>>>>> };
>>>>>
>>>>> };
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Aug 30, 2016 at 2:53 PM, Bob Harold <rharolde at umich.edu>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> On Thu, Aug 25, 2016 at 12:56 PM, project722 <project722 at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I have successfully setup TSIG keys for "views" using a DNS
>>>>>>> master/server pair. Zone transfers are working as expected between the 2
>>>>>>> servers for each view. Before we go live into production with this I need
>>>>>>> some clarification on a couple things. Our prod servers are also allowing
>>>>>>> zone transfers to a few other servers besides the slave server. We have an
>>>>>>> acl setup that looks similar to this:
>>>>>>>
>>>>>>> other_xfer_allowed_ns {
>>>>>>> x.x.x.x; // This is our Secondary DNS server
>>>>>>> 127.0.0.1; // localhost can make zone transfers
>>>>>>> x.x.x.x/24; // Server Farm Range is allowed to make zone-transfers
>>>>>>> x.x.x.x/24; // NAT pool for internal DNS server Zone Transfers
>>>>>>> x.x.x.x/24; // NAT pool for internal DNS server Zone Transfers
>>>>>>> x.x.x.x/24; // NAT pool for internal DNS server Zone Transfers
>>>>>>> }; // end of "other_xfer_allowed" ACL
>>>>>>>
>>>>>>> And in the "allow transfer" statement we have included that ACL. My
>>>>>>> question is:
>>>>>>>
>>>>>>> Now that we are using TSIG, will I need to get with the admins of
>>>>>>> all these other servers and provide them my TSIG key so they can request
>>>>>>> zone transfers? I would think somehting like that needs to be done since it
>>>>>>> was required to be configured on slave server, but I am not sure.
>>>>>>>
>>>>>>
>>>>>> No, if you allowed the IP range in your ACL, they don't need the TSIG
>>>>>> key.
>>>>>> It might be more secure to hand out TSIG keys and remove the IP
>>>>>> ranges from the ACL, so only the TSIG key will allow transfers, since IP
>>>>>> addresses are easier to spoof, but since a zone transfer requires TCP,
>>>>>> spoofing is not likely.
>>>>>>
>>>>>> The TSIG key was required on the slave in order to get the right
>>>>>> view, if I remember correctly.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Next,
>>>>>>>
>>>>>>> I setup views so that clients on the "internal" network when
>>>>>>> requesting a record would be presented with different records than clients
>>>>>>> on the outside. And at the moment there is only one zone that is required
>>>>>>> to have different records. However, It is my understanding that since views
>>>>>>> are based off source IP's, if I was to ONLY include that one zone in my
>>>>>>> "internal" view, if a record was requested for another zone from that same
>>>>>>> IP, they would probably get an nxdomain answer since that IP is limited to
>>>>>>> that one view.
>>>>>>>
>>>>>>> So, my question is, will I need to include all zones in both views
>>>>>>> so that all clients can get results, even though I would only have (at the
>>>>>>> moment) one zone that points to two different zone files? All others in
>>>>>>> both views would point to the same zone file, unless of course there is
>>>>>>> another zone we need to present a different view to for internal clients.
>>>>>>>
>>>>>>
>>>>>> You have a few choices:
>>>>>> - Copies of zones in both views.  More memory used, more zone
>>>>>> transfers, but probably safest and best performance.  This is what I do.
>>>>>> The zones in the two views will need to be in separate files, if they are
>>>>>> "slave" zones, otherwise Bind will get confused and complain, because it
>>>>>> does not realize that two different views are trying to write the same file.
>>>>>> - One view could 'forward' to the other view for zones it does not
>>>>>> have.  (Doubles the query logging, if you have that turned on.)
>>>>>> - Views could do normal recursion for some zones if they can reach
>>>>>> the servers listed in the NS records and get the info from there.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Now, last question.
>>>>>>>
>>>>>>> I have a concern about the allow-query statement. On our production
>>>>>>> server we have an ACL list we'll call it "trusted".
>>>>>>> We have an allow query statement in the global options to only allow
>>>>>>> queries from IP's in the trusted ACL. However every one of our zone entries
>>>>>>> in the conf file also has an "allow-query { any; }; statement. Doesn't that
>>>>>>> defeat the purpose of have a "trusted" ACL for queries? Is this bad design?
>>>>>>>
>>>>>>
>>>>>> Seems like the 'any' would override the 'trusted'.  Probably not what
>>>>>> you wanted.
>>>>>>
>>>>>> --
>>>>>> Bob Harold
>>>>>>
>>>>>>
>>>>>
>>>> Here is the basic structure:
>>>>
>>>> view "internal" {
>>>>         match-clients {
>>>>                 // this list must not match 127.0.0.1
>>>>                 !key "external";   // use this key to test the external
>>>> view
>>>>                 10.0.0.0/8;
>>>>                 key "internal";   // use this key to test the internal
>>>> view
>>>>         };
>>>>         zone "itd.umich.edu" {    // this zone is different in the two
>>>> views
>>>>                 type master;
>>>>                 file "internal/itd.umich.edu";
>>>>         };
>>>>         forwarders {
>>>>                 // forward to external view
>>>>                 127.0.0.1;
>>>>         };
>>>>         forward only;        // optional
>>>> };
>>>> view "external" {
>>>>         match-clients {
>>>>                 // this list must match 127.0.0.1
>>>>                 any;
>>>>         };
>>>>         zone "itd.umich.edu" {    // this zone is different in the two
>>>> views
>>>>                 type master;
>>>>                 file "external/itd.umich.edu";
>>>>         };
>>>>         zone "10.in-addr.arpa" {   // all other zones will be seen by
>>>> everyone
>>>>                 type master;
>>>>                 file "external/arpa.in-addr.10";
>>>>         };
>>>>         zone "umich.edu" {
>>>>                 type master;
>>>>                 file "external/com.umich";
>>>>         };
>>>> };
>>>>
>>>> --
>>>> Bob Harold
>>>>
>>>>
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/bind-users/attachments/20160907/d465eb20/attachment.html>


More information about the bind-users mailing list