summaryrefslogtreecommitdiffstats
path: root/doc/arm/catz.xml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/arm/catz.xml')
-rw-r--r--doc/arm/catz.xml277
1 files changed, 277 insertions, 0 deletions
diff --git a/doc/arm/catz.xml b/doc/arm/catz.xml
new file mode 100644
index 0000000..f314b44
--- /dev/null
+++ b/doc/arm/catz.xml
@@ -0,0 +1,277 @@
+<!--
+ - Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ -
+ - This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ -
+ - See the COPYRIGHT file distributed with this work for additional
+ - information regarding copyright ownership.
+-->
+
+<section xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="catz-info"><info><title>Catalog Zones</title></info>
+
+ <para>
+ A "catalog zone" is a special DNS zone that contains a list of
+ other zones to be served, along with their configuration parameters.
+ Zones listed in a catalog zone are called "member zones".
+ When a catalog zone is loaded or transferred to a slave server
+ which supports this functionality, the slave server will create
+ the member zones automatically. When the catalog zone is updated
+ (for example, to add or delete member zones, or change
+ their configuration parameters) those changes are immediately put
+ into effect. Because the catalog zone is a normal DNS zone, these
+ configuration changes can be propagated using the standard AXFR/IXFR
+ zone transfer mechanism.
+ </para>
+ <para>
+ Catalog zones' format and behavior are specified as an internet draft
+ for interoperability among DNS implementations. As of this release, the
+ latest revision of the DNS catalog zones draft can be found here:
+ https://datatracker.ietf.org/doc/draft-muks-dnsop-dns-catalog-zones/
+ </para>
+
+ <section><info><title>Principle of Operation</title></info>
+ <para>
+ Normally, if a zone is to be served by a slave server, the
+ <filename>named.conf</filename> file on the server must list the
+ zone, or the zone must be added using <command>rndc addzone</command>.
+ In environments with a large number of slave servers and/or where
+ the zones being served are changing frequently, the overhead involved
+ in maintaining consistent zone configuration on all the slave
+ servers can be significant.
+ </para>
+ <para>
+ A catalog zone is a way to ease this administrative burden. It is a
+ DNS zone that lists member zones that should be served by slave servers.
+ When a slave server receives an update to the catalog zone, it adds,
+ removes, or reconfigures member zones based on the data received.
+ </para>
+ <para>
+ To use a catalog zone, it must first be set up as a normal zone on
+ the master and the on slave servers that will be configured to use
+ it. It must also be added to a <option>catalog-zones</option> list
+ in the <option>options</option> or <option>view</option> statement
+ in <filename>named.conf</filename>. (This is comparable to the way
+ a policy zone is configured as a normal zone and also listed in
+ a <option>response-policy</option> statement.)
+ </para>
+ <para>
+ To use the catalog zone feature to serve a new member zone:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Set up the the member zone to be served on the master as normal.
+ This could be done by editing <filename>named.conf</filename>,
+ or by running <command>rndc addzone</command>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add an entry to the catalog zone for the new member zone.
+ This could be done by editing the catalog zone's master file
+ and running <command>rndc reload</command>, or by updating
+ the zone using <command>nsupdate</command>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ The change to the catalog zone will be propagated from the master to all
+ slaves using the normal AXFR/IXFR mechanism. When the slave receives the
+ update to the catalog zone, it will detect the entry for the new member
+ zone, create an instance of of that zone on the slave server, and point
+ that instance to the <option>masters</option> specified in the catalog
+ zone data. The newly created member zone is a normal slave zone, so
+ BIND will immediately initiate a transfer of zone contents from the
+ master. Once complete, the slave will start serving the member zone.
+ </para>
+ <para>
+ Removing a member zone from a slave server requires nothing more than
+ deleting the member zone's entry in the catalog zone. The change to the
+ catalog zone is propagated to the slave server using the normal AXFR/IXFR
+ transfer mechanism. The slave server, on processing the update, will
+ notice that the member zone has been removed. It will stop serving the
+ zone and remove it from its list of configured zones. (Removing the
+ member zone from the master server has to be done in the normal way,
+ by editing the configuration file or running
+ <command>rndc delzone</command>.)
+ </para>
+ </section>
+
+ <section><info><title>Configuring Catalog Zones</title></info>
+ <para>
+ Catalog zones are configured with a <command>catalog-zones</command>
+ statement in the <literal>options</literal> or <literal>view</literal>
+ section of <filename>named.conf</filename>. For example,
+ </para>
+<screen>
+catalog-zones {
+ zone "catalog.example"
+ default-masters { 10.53.0.1; }
+ in-memory no
+ zone-directory "catzones"
+ min-update-interval 10;
+};
+</screen>
+ <para>
+ This statement specifies that the zone
+ <literal>catalog.example</literal> is a catalog zone. This zone must be
+ properly configured in the same view. In most configurations, it would
+ be a slave zone.
+ </para>
+ <para>
+ The options following the zone name are not required, and may be
+ specified in any order:
+ </para>
+ <para>
+ The <option>default-masters</option> option defines the default masters
+ for member zones listed in a catalog zone. This can be overridden by
+ options within a catalog zone. If no such options are included, then
+ member zones will transfer their contents from the servers listed in
+ this option.
+ </para>
+ <para>
+ The <option>in-memory</option> option, if set to <literal>yes</literal>,
+ causes member zones to be stored only in memory. This is functionally
+ equivalent to configuring a slave zone without a <option>file</option>.
+ option. The default is <literal>no</literal>; member zones' content
+ will be stored locally in a file whose name is automatically generated
+ from the view name, catalog zone name, and member zone name.
+ </para>
+ <para>
+ The <option>zone-directory</option> option causes local copies of
+ member zones' master files (if <option>in-memory</option> is not set
+ to <literal>yes</literal>) to be stored in the specified directory.
+ The default is to store zone files in the server's working directory.
+ A non-absolute pathname in <option>zone-directory</option> is
+ assumed to be relative to the working directory.
+ </para>
+ <para>
+ The <option>min-update-interval</option> option sets the minimum
+ interval between processing of updates to catalog zones, in seconds.
+ If an update to a catalog zone (for example, via IXFR) happens less
+ than <option>min-update-interval</option> seconds after the most
+ recent update, then the changes will not be carried out until this
+ interval has elapsed. The default is <literal>5</literal> seconds.
+ </para>
+ <para>
+ Catalog zones are defined on a per-view basis. Configuring a non-empty
+ <option>catalog-zones</option> statement in a view will automatically
+ turn on <option>allow-new-zones</option> for that view. (Note: this
+ means <command>rndc addzone</command> and <command>rndc delzone</command>
+ will also work in any view that supports catalog zones.)
+ </para>
+ </section>
+
+ <section><info><title>Catalog Zone format</title></info>
+ <para>
+ A catalog zone is a regular DNS zone; therefore, it has to have a
+ single <literal>SOA</literal> and at least one <literal>NS</literal>
+ record.
+ </para>
+ <para>
+ A record stating the version of the catalog zone format is
+ also required. If the version number listed is not supported by
+ the server, then a catalog zone may not be used by that server.
+ </para>
+<screen>
+catalog.example. IN SOA . . 2016022901 900 600 86400 1
+catalog.example. IN NS nsexample.
+version.catalog.example. IN TXT "1"
+</screen>
+ <para>
+ Note that this record must have the domain name
+ version.<replaceable>catalog-zone-name</replaceable>. This illustrates
+ how the meaning of data stored in a catalog zone is indicated by the
+ the domain name label immediately before the catalog zone domain.
+ </para>
+ <para>
+ Catalog zone options can be set either globally for the whole catalog
+ zone or for a single member zone. Global options override the settings
+ in the configuration file and member zone options override global
+ options.
+ </para>
+ <para>
+ Global options are set at the apex of the catalog zone, e.g.:
+</para>
+<screen>
+ masters.catalog.example. IN AAAA 2001:db8::1
+</screen>
+ <para>BIND currently supports the following options:</para>
+ <itemizedlist>
+ <listitem>
+ <para>A simple <option>masters</option> definition:</para>
+ <screen>
+ masters.catalog.example. IN A 192.0.2.1
+ </screen>
+ <para>
+ This option defines a master server for the member zones - it
+ can be either an A or AAAA record. If multiple masters are set the
+ order in which they are used is random.
+ </para>
+ </listitem>
+ <listitem>
+ <para>A <option>masters</option> with a TSIG key defined:</para>
+ <screen>
+ label.masters.catalog.example. IN A 192.0.2.2
+ label.masters.catalog.example. IN TXT "tsig_key_name"
+ </screen>
+ <para>
+ This option defines a master server for the member zone with a TSIG
+ key set. The TSIG key must be configured in the configuration file.
+ <option>label</option> can be any valid DNS label.
+ </para>
+ </listitem>
+ <listitem>
+ <para><option>allow-query</option> and
+ <option>allow-transfer</option> ACLs:</para>
+ <screen>
+ allow-query.catalog.example. IN APL 1:10.0.0.1/24
+ allow-transfer.catalog.example. IN APL !1:10.0.0.1/32 1:10.0.0.0/24
+ </screen>
+ <para>
+ These options are the equivalents of <option>allow-query</option>
+ and <option>allow-transfer</option> in a zone declaration in the
+ <filename>named.conf</filename> configuration file. The ACL is
+ processed in order - if there's no match to any rule the default
+ policy is to deny access. For the syntax of the APL RR see RFC
+ 3123
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ A member zone is added by including a <literal>PTR</literal>
+ resource record in the <literal>zones</literal> sub-domain of the
+ catalog zone. The record label is a <literal>SHA-1</literal> hash
+ of the member zone name in wire format. The target of the PTR
+ record is the member zone name. For example, to add the member
+ zone <literal>domain.example</literal>:
+ </para>
+<screen>
+5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN PTR domain.example.
+</screen>
+ <para>
+ The hash is necessary to identify options for a specific member
+ zone. The member zone-specific options are defined the same way as
+ global options, but in the member zone subdomain:
+ </para>
+<screen>
+masters.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN A 192.0.2.2
+label.masters.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN AAAA 2001:db8::2
+label.masters.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN TXT "tsig_key"
+allow-query.5960775ba382e7a4e09263fc06e7c00569b6a05c.zones.catalog.example. IN APL 1:10.0.0.0/24
+</screen>
+ <para>
+ As would be expected, options defined for a specific zone override
+ the global options defined in the catalog zone. These in turn override
+ the global options defined in the <literal>catalog-zones</literal>
+ statement in the configuration file.
+ </para>
+ <para>
+ (Note that none of the global records an option will be inherited if
+ any records are defined for that option for the specific zone. For
+ example, if the zone had a <literal>masters</literal> record of type
+ A but not AAAA, then it would <emphasis>not</emphasis> inherit the
+ type AAAA record from the global option.)
+ </para>
+ </section>
+</section>