]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/bind9/doc/arm/Bv9ARM-book.xml
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / bind9 / doc / arm / Bv9ARM-book.xml
1 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
2               "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
3                [<!ENTITY mdash "&#8212;">]>
4 <!--
5  - Copyright (C) 2004-2012  Internet Systems Consortium, Inc. ("ISC")
6  - Copyright (C) 2000-2003  Internet Software Consortium.
7  -
8  - Permission to use, copy, modify, and/or distribute this software for any
9  - purpose with or without fee is hereby granted, provided that the above
10  - copyright notice and this permission notice appear in all copies.
11  -
12  - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
13  - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
14  - AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
15  - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16  - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
17  - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18  - PERFORMANCE OF THIS SOFTWARE.
19 -->
20
21 <!-- File: $Id$ -->
22 <book xmlns:xi="http://www.w3.org/2001/XInclude">
23   <title>BIND 9 Administrator Reference Manual</title>
24
25   <bookinfo>
26     <copyright>
27       <year>2004</year>
28       <year>2005</year>
29       <year>2006</year>
30       <year>2007</year>
31       <year>2008</year>
32       <year>2009</year>
33       <year>2010</year>
34       <year>2011</year>
35       <year>2012</year>
36       <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
37     </copyright>
38     <copyright>
39       <year>2000</year>
40       <year>2001</year>
41       <year>2002</year>
42       <year>2003</year>
43       <holder>Internet Software Consortium.</holder>
44     </copyright>
45   </bookinfo>
46
47   <chapter id="Bv9ARM.ch01">
48     <title>Introduction</title>
49     <para>
50       The Internet Domain Name System (<acronym>DNS</acronym>)
51       consists of the syntax
52       to specify the names of entities in the Internet in a hierarchical
53       manner, the rules used for delegating authority over names, and the
54       system implementation that actually maps names to Internet
55       addresses.  <acronym>DNS</acronym> data is maintained in a
56       group of distributed
57       hierarchical databases.
58     </para>
59
60     <sect1>
61       <title>Scope of Document</title>
62
63       <para>
64         The Berkeley Internet Name Domain
65         (<acronym>BIND</acronym>) implements a
66         domain name server for a number of operating systems. This
67         document provides basic information about the installation and
68         care of the Internet Systems Consortium (<acronym>ISC</acronym>)
69         <acronym>BIND</acronym> version 9 software package for
70         system administrators.
71       </para>
72
73       <para>
74         This version of the manual corresponds to BIND version 9.8.
75       </para>
76
77     </sect1>
78     <sect1>
79       <title>Organization of This Document</title>
80       <para>
81         In this document, <emphasis>Chapter 1</emphasis> introduces
82         the basic <acronym>DNS</acronym> and <acronym>BIND</acronym> concepts. <emphasis>Chapter 2</emphasis>
83         describes resource requirements for running <acronym>BIND</acronym> in various
84         environments. Information in <emphasis>Chapter 3</emphasis> is
85         <emphasis>task-oriented</emphasis> in its presentation and is
86         organized functionally, to aid in the process of installing the
87         <acronym>BIND</acronym> 9 software. The task-oriented
88         section is followed by
89         <emphasis>Chapter 4</emphasis>, which contains more advanced
90         concepts that the system administrator may need for implementing
91         certain options. <emphasis>Chapter 5</emphasis>
92         describes the <acronym>BIND</acronym> 9 lightweight
93         resolver.  The contents of <emphasis>Chapter 6</emphasis> are
94         organized as in a reference manual to aid in the ongoing
95         maintenance of the software. <emphasis>Chapter 7</emphasis> addresses
96         security considerations, and
97         <emphasis>Chapter 8</emphasis> contains troubleshooting help. The
98         main body of the document is followed by several
99         <emphasis>appendices</emphasis> which contain useful reference
100         information, such as a <emphasis>bibliography</emphasis> and
101         historic information related to <acronym>BIND</acronym>
102         and the Domain Name
103         System.
104       </para>
105     </sect1>
106     <sect1>
107       <title>Conventions Used in This Document</title>
108
109       <para>
110         In this document, we use the following general typographic
111         conventions:
112       </para>
113
114       <informaltable>
115         <tgroup cols="2">
116           <colspec colname="1" colnum="1" colwidth="3.000in"/>
117           <colspec colname="2" colnum="2" colwidth="2.625in"/>
118           <tbody>
119             <row>
120               <entry colname="1">
121                 <para>
122                   <emphasis>To describe:</emphasis>
123                 </para>
124               </entry>
125               <entry colname="2">
126                 <para>
127                   <emphasis>We use the style:</emphasis>
128                 </para>
129               </entry>
130             </row>
131             <row>
132               <entry colname="1">
133                 <para>
134                   a pathname, filename, URL, hostname,
135                   mailing list name, or new term or concept
136                 </para>
137               </entry>
138               <entry colname="2">
139                 <para>
140                   <filename>Fixed width</filename>
141                 </para>
142               </entry>
143             </row>
144             <row>
145               <entry colname="1">
146                 <para>
147                   literal user
148                   input
149                 </para>
150               </entry>
151               <entry colname="2">
152                 <para>
153                   <userinput>Fixed Width Bold</userinput>
154                 </para>
155               </entry>
156             </row>
157             <row>
158               <entry colname="1">
159                 <para>
160                   program output
161                 </para>
162               </entry>
163               <entry colname="2">
164                 <para>
165                   <computeroutput>Fixed Width</computeroutput>
166                 </para>
167               </entry>
168             </row>
169           </tbody>
170         </tgroup>
171       </informaltable>
172
173       <para>
174         The following conventions are used in descriptions of the
175         <acronym>BIND</acronym> configuration file:<informaltable colsep="0" frame="all" rowsep="0">
176                   <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="2Level-table">
177                       <colspec colname="1" colnum="1" colsep="0" colwidth="3.000in"/>
178             <colspec colname="2" colnum="2" colsep="0" colwidth="2.625in"/>
179             <tbody>
180               <row rowsep="0">
181                 <entry colname="1" colsep="1" rowsep="1">
182                   <para>
183                     <emphasis>To describe:</emphasis>
184                   </para>
185                 </entry>
186                 <entry colname="2" rowsep="1">
187                   <para>
188                     <emphasis>We use the style:</emphasis>
189                   </para>
190                 </entry>
191               </row>
192               <row rowsep="0">
193                 <entry colname="1" colsep="1" rowsep="1">
194                   <para>
195                     keywords
196                   </para>
197                 </entry>
198                 <entry colname="2" rowsep="1">
199                   <para>
200                     <literal>Fixed Width</literal>
201                   </para>
202                 </entry>
203               </row>
204               <row rowsep="0">
205                 <entry colname="1" colsep="1" rowsep="1">
206                   <para>
207                     variables
208                   </para>
209                 </entry>
210                 <entry colname="2" rowsep="1">
211                   <para>
212                     <varname>Fixed Width</varname>
213                   </para>
214                 </entry>
215               </row>
216               <row rowsep="0">
217                 <entry colname="1" colsep="1">
218                   <para>
219                     Optional input
220                   </para>
221                 </entry>
222                 <entry colname="2">
223                   <para>
224                     <optional>Text is enclosed in square brackets</optional>
225                   </para>
226                 </entry>
227               </row>
228             </tbody>
229           </tgroup>
230         </informaltable>
231       </para>
232     </sect1>
233     <sect1>
234       <title>The Domain Name System (<acronym>DNS</acronym>)</title>
235       <para>
236         The purpose of this document is to explain the installation
237         and upkeep of the <acronym>BIND</acronym> (Berkeley Internet
238         Name Domain) software package, and we
239         begin by reviewing the fundamentals of the Domain Name System
240         (<acronym>DNS</acronym>) as they relate to <acronym>BIND</acronym>.
241       </para>
242
243       <sect2>
244         <title>DNS Fundamentals</title>
245
246         <para>
247           The Domain Name System (DNS) is a hierarchical, distributed
248           database.  It stores information for mapping Internet host names to
249           IP
250           addresses and vice versa, mail routing information, and other data
251           used by Internet applications.
252         </para>
253
254         <para>
255           Clients look up information in the DNS by calling a
256           <emphasis>resolver</emphasis> library, which sends queries to one or
257           more <emphasis>name servers</emphasis> and interprets the responses.
258           The <acronym>BIND</acronym> 9 software distribution
259           contains a
260           name server, <command>named</command>, and a resolver
261           library, <command>liblwres</command>.  The older
262           <command>libbind</command> resolver library is also available
263           from ISC as a separate download.
264         </para>
265
266         </sect2><sect2>
267         <title>Domains and Domain Names</title>
268
269         <para>
270           The data stored in the DNS is identified by <emphasis>domain names</emphasis> that are organized as a tree according to
271           organizational or administrative boundaries. Each node of the tree,
272           called a <emphasis>domain</emphasis>, is given a label. The domain
273           name of the
274           node is the concatenation of all the labels on the path from the
275           node to the <emphasis>root</emphasis> node.  This is represented
276           in written form as a string of labels listed from right to left and
277           separated by dots. A label need only be unique within its parent
278           domain.
279         </para>
280
281         <para>
282           For example, a domain name for a host at the
283           company <emphasis>Example, Inc.</emphasis> could be
284           <literal>ourhost.example.com</literal>,
285           where <literal>com</literal> is the
286           top level domain to which
287           <literal>ourhost.example.com</literal> belongs,
288           <literal>example</literal> is
289           a subdomain of <literal>com</literal>, and
290           <literal>ourhost</literal> is the
291           name of the host.
292         </para>
293
294         <para>
295           For administrative purposes, the name space is partitioned into
296           areas called <emphasis>zones</emphasis>, each starting at a node and
297           extending down to the leaf nodes or to nodes where other zones
298           start.
299           The data for each zone is stored in a <emphasis>name server</emphasis>, which answers queries about the zone using the
300           <emphasis>DNS protocol</emphasis>.
301         </para>
302
303         <para>
304           The data associated with each domain name is stored in the
305           form of <emphasis>resource records</emphasis> (<acronym>RR</acronym>s).
306           Some of the supported resource record types are described in
307           <xref linkend="types_of_resource_records_and_when_to_use_them"/>.
308         </para>
309
310         <para>
311           For more detailed information about the design of the DNS and
312           the DNS protocol, please refer to the standards documents listed in
313           <xref linkend="rfcs"/>.
314         </para>
315       </sect2>
316
317       <sect2>
318         <title>Zones</title>
319         <para>
320           To properly operate a name server, it is important to understand
321           the difference between a <emphasis>zone</emphasis>
322           and a <emphasis>domain</emphasis>.
323         </para>
324
325         <para>
326           As stated previously, a zone is a point of delegation in
327           the <acronym>DNS</acronym> tree. A zone consists of
328           those contiguous parts of the domain
329           tree for which a name server has complete information and over which
330           it has authority. It contains all domain names from a certain point
331           downward in the domain tree except those which are delegated to
332           other zones. A delegation point is marked by one or more
333           <emphasis>NS records</emphasis> in the
334           parent zone, which should be matched by equivalent NS records at
335           the root of the delegated zone.
336         </para>
337
338         <para>
339           For instance, consider the <literal>example.com</literal>
340           domain which includes names
341           such as <literal>host.aaa.example.com</literal> and
342           <literal>host.bbb.example.com</literal> even though
343           the <literal>example.com</literal> zone includes
344           only delegations for the <literal>aaa.example.com</literal> and
345           <literal>bbb.example.com</literal> zones.  A zone can
346           map
347           exactly to a single domain, but could also include only part of a
348           domain, the rest of which could be delegated to other
349           name servers. Every name in the <acronym>DNS</acronym>
350           tree is a
351           <emphasis>domain</emphasis>, even if it is
352           <emphasis>terminal</emphasis>, that is, has no
353           <emphasis>subdomains</emphasis>.  Every subdomain is a domain and
354           every domain except the root is also a subdomain. The terminology is
355           not intuitive and we suggest that you read RFCs 1033, 1034 and 1035
356           to
357           gain a complete understanding of this difficult and subtle
358           topic.
359         </para>
360
361         <para>
362           Though <acronym>BIND</acronym> is called a "domain name
363           server",
364           it deals primarily in terms of zones. The master and slave
365           declarations in the <filename>named.conf</filename> file
366           specify
367           zones, not domains. When you ask some other site if it is willing to
368           be a slave server for your <emphasis>domain</emphasis>, you are
369           actually asking for slave service for some collection of zones.
370         </para>
371       </sect2>
372
373       <sect2>
374         <title>Authoritative Name Servers</title>
375
376         <para>
377           Each zone is served by at least
378           one <emphasis>authoritative name server</emphasis>,
379           which contains the complete data for the zone.
380           To make the DNS tolerant of server and network failures,
381           most zones have two or more authoritative servers, on
382           different networks.
383         </para>
384
385         <para>
386           Responses from authoritative servers have the "authoritative
387           answer" (AA) bit set in the response packets.  This makes them
388           easy to identify when debugging DNS configurations using tools like
389           <command>dig</command> (<xref linkend="diagnostic_tools"/>).
390         </para>
391
392         <sect3>
393           <title>The Primary Master</title>
394
395           <para>
396             The authoritative server where the master copy of the zone
397             data is maintained is called the
398             <emphasis>primary master</emphasis> server, or simply the
399             <emphasis>primary</emphasis>.  Typically it loads the zone
400             contents from some local file edited by humans or perhaps
401             generated mechanically from some other local file which is
402             edited by humans.  This file is called the
403             <emphasis>zone file</emphasis> or
404             <emphasis>master file</emphasis>.
405           </para>
406
407           <para>
408             In some cases, however, the master file may not be edited
409             by humans at all, but may instead be the result of
410             <emphasis>dynamic update</emphasis> operations.
411           </para>
412         </sect3>
413
414         <sect3>
415           <title>Slave Servers</title>
416           <para>
417             The other authoritative servers, the <emphasis>slave</emphasis>
418             servers (also known as <emphasis>secondary</emphasis> servers)
419             load
420             the zone contents from another server using a replication process
421             known as a <emphasis>zone transfer</emphasis>.  Typically the data
422             are
423             transferred directly from the primary master, but it is also
424             possible
425             to transfer it from another slave.  In other words, a slave server
426             may itself act as a master to a subordinate slave server.
427           </para>
428         </sect3>
429
430         <sect3>
431           <title>Stealth Servers</title>
432
433           <para>
434             Usually all of the zone's authoritative servers are listed in
435             NS records in the parent zone.  These NS records constitute
436             a <emphasis>delegation</emphasis> of the zone from the parent.
437             The authoritative servers are also listed in the zone file itself,
438             at the <emphasis>top level</emphasis> or <emphasis>apex</emphasis>
439             of the zone.  You can list servers in the zone's top-level NS
440             records that are not in the parent's NS delegation, but you cannot
441             list servers in the parent's delegation that are not present at
442             the zone's top level.
443           </para>
444
445           <para>
446             A <emphasis>stealth server</emphasis> is a server that is
447             authoritative for a zone but is not listed in that zone's NS
448             records.  Stealth servers can be used for keeping a local copy of
449             a
450             zone to speed up access to the zone's records or to make sure that
451             the
452             zone is available even if all the "official" servers for the zone
453             are
454             inaccessible.
455           </para>
456
457           <para>
458             A configuration where the primary master server itself is a
459             stealth server is often referred to as a "hidden primary"
460             configuration.  One use for this configuration is when the primary
461             master
462             is behind a firewall and therefore unable to communicate directly
463             with the outside world.
464           </para>
465
466         </sect3>
467
468       </sect2>
469       <sect2>
470
471         <title>Caching Name Servers</title>
472
473         <!--
474           - Terminology here is inconsistent.  Probably ought to
475           - convert to using "recursive name server" everywhere
476           - with just a note about "caching" terminology.
477           -->
478
479         <para>
480           The resolver libraries provided by most operating systems are
481           <emphasis>stub resolvers</emphasis>, meaning that they are not
482           capable of
483           performing the full DNS resolution process by themselves by talking
484           directly to the authoritative servers.  Instead, they rely on a
485           local
486           name server to perform the resolution on their behalf.  Such a
487           server
488           is called a <emphasis>recursive</emphasis> name server; it performs
489           <emphasis>recursive lookups</emphasis> for local clients.
490         </para>
491
492         <para>
493           To improve performance, recursive servers cache the results of
494           the lookups they perform.  Since the processes of recursion and
495           caching are intimately connected, the terms
496           <emphasis>recursive server</emphasis> and
497           <emphasis>caching server</emphasis> are often used synonymously.
498         </para>
499
500         <para>
501           The length of time for which a record may be retained in
502           the cache of a caching name server is controlled by the
503           Time To Live (TTL) field associated with each resource record.
504         </para>
505
506         <sect3>
507           <title>Forwarding</title>
508
509           <para>
510             Even a caching name server does not necessarily perform
511             the complete recursive lookup itself.  Instead, it can
512             <emphasis>forward</emphasis> some or all of the queries
513             that it cannot satisfy from its cache to another caching name
514             server,
515             commonly referred to as a <emphasis>forwarder</emphasis>.
516           </para>
517
518           <para>
519             There may be one or more forwarders,
520             and they are queried in turn until the list is exhausted or an
521             answer
522             is found. Forwarders are typically used when you do not
523             wish all the servers at a given site to interact directly with the
524             rest of
525             the Internet servers. A typical scenario would involve a number
526             of internal <acronym>DNS</acronym> servers and an
527             Internet firewall. Servers unable
528             to pass packets through the firewall would forward to the server
529             that can do it, and that server would query the Internet <acronym>DNS</acronym> servers
530             on the internal server's behalf.
531           </para>
532         </sect3>
533
534       </sect2>
535
536       <sect2>
537         <title>Name Servers in Multiple Roles</title>
538
539         <para>
540           The <acronym>BIND</acronym> name server can
541           simultaneously act as
542           a master for some zones, a slave for other zones, and as a caching
543           (recursive) server for a set of local clients.
544         </para>
545
546         <para>
547           However, since the functions of authoritative name service
548           and caching/recursive name service are logically separate, it is
549           often advantageous to run them on separate server machines.
550
551           A server that only provides authoritative name service
552           (an <emphasis>authoritative-only</emphasis> server) can run with
553           recursion disabled, improving reliability and security.
554
555           A server that is not authoritative for any zones and only provides
556           recursive service to local
557           clients (a <emphasis>caching-only</emphasis> server)
558           does not need to be reachable from the Internet at large and can
559           be placed inside a firewall.
560         </para>
561
562       </sect2>
563     </sect1>
564
565   </chapter>
566
567   <chapter id="Bv9ARM.ch02">
568     <title><acronym>BIND</acronym> Resource Requirements</title>
569
570     <sect1>
571       <title>Hardware requirements</title>
572
573       <para>
574         <acronym>DNS</acronym> hardware requirements have
575         traditionally been quite modest.
576         For many installations, servers that have been pensioned off from
577         active duty have performed admirably as <acronym>DNS</acronym> servers.
578       </para>
579       <para>
580         The DNSSEC features of <acronym>BIND</acronym> 9
581         may prove to be quite
582         CPU intensive however, so organizations that make heavy use of these
583         features may wish to consider larger systems for these applications.
584         <acronym>BIND</acronym> 9 is fully multithreaded, allowing
585         full utilization of
586         multiprocessor systems for installations that need it.
587       </para>
588     </sect1>
589     <sect1>
590       <title>CPU Requirements</title>
591       <para>
592         CPU requirements for <acronym>BIND</acronym> 9 range from
593         i486-class machines
594         for serving of static zones without caching, to enterprise-class
595         machines if you intend to process many dynamic updates and DNSSEC
596         signed zones, serving many thousands of queries per second.
597       </para>
598     </sect1>
599
600     <sect1>
601       <title>Memory Requirements</title>
602       <para>
603         The memory of the server has to be large enough to fit the
604         cache and zones loaded off disk.  The <command>max-cache-size</command>
605         option can be used to limit the amount of memory used by the cache,
606         at the expense of reducing cache hit rates and causing more <acronym>DNS</acronym>
607         traffic.
608         Additionally, if additional section caching
609         (<xref linkend="acache"/>) is enabled,
610         the <command>max-acache-size</command> option can be used to
611         limit the amount
612         of memory used by the mechanism.
613         It is still good practice to have enough memory to load
614         all zone and cache data into memory &mdash; unfortunately, the best
615         way
616         to determine this for a given installation is to watch the name server
617         in operation. After a few weeks the server process should reach
618         a relatively stable size where entries are expiring from the cache as
619         fast as they are being inserted.
620       </para>
621       <!--
622         - Add something here about leaving overhead for attacks?
623         - How much overhead?  Percentage?
624         -->
625     </sect1>
626
627     <sect1>
628       <title>Name Server Intensive Environment Issues</title>
629       <para>
630         For name server intensive environments, there are two alternative
631         configurations that may be used. The first is where clients and
632         any second-level internal name servers query a main name server, which
633         has enough memory to build a large cache. This approach minimizes
634         the bandwidth used by external name lookups. The second alternative
635         is to set up second-level internal name servers to make queries
636         independently.
637         In this configuration, none of the individual machines needs to
638         have as much memory or CPU power as in the first alternative, but
639         this has the disadvantage of making many more external queries,
640         as none of the name servers share their cached data.
641       </para>
642     </sect1>
643
644     <sect1>
645       <title>Supported Operating Systems</title>
646       <para>
647         ISC <acronym>BIND</acronym> 9 compiles and runs on a large
648         number
649         of Unix-like operating systems and on 
650         Microsoft Windows Server 2003 and 2008, and Windows XP and Vista.
651         For an up-to-date
652         list of supported systems, see the README file in the top level
653         directory
654         of the BIND 9 source distribution.
655       </para>
656     </sect1>
657   </chapter>
658
659   <chapter id="Bv9ARM.ch03">
660     <title>Name Server Configuration</title>
661     <para>
662       In this chapter we provide some suggested configurations along
663       with guidelines for their use.  We suggest reasonable values for
664       certain option settings.
665     </para>
666
667     <sect1 id="sample_configuration">
668       <title>Sample Configurations</title>
669       <sect2>
670         <title>A Caching-only Name Server</title>
671         <para>
672           The following sample configuration is appropriate for a caching-only
673           name server for use by clients internal to a corporation.  All
674           queries
675           from outside clients are refused using the <command>allow-query</command>
676           option.  Alternatively, the same effect could be achieved using
677           suitable
678           firewall rules.
679         </para>
680
681 <programlisting>
682 // Two corporate subnets we wish to allow queries from.
683 acl corpnets { 192.168.4.0/24; 192.168.7.0/24; };
684 options {
685      // Working directory
686      directory "/etc/namedb";
687
688      allow-query { corpnets; };
689 };
690 // Provide a reverse mapping for the loopback
691 // address 127.0.0.1
692 zone "0.0.127.in-addr.arpa" {
693      type master;
694      file "localhost.rev";
695      notify no;
696 };
697 </programlisting>
698
699       </sect2>
700
701       <sect2>
702         <title>An Authoritative-only Name Server</title>
703         <para>
704           This sample configuration is for an authoritative-only server
705           that is the master server for "<filename>example.com</filename>"
706           and a slave for the subdomain "<filename>eng.example.com</filename>".
707         </para>
708
709 <programlisting>
710 options {
711      // Working directory
712      directory "/etc/namedb";
713      // Do not allow access to cache
714      allow-query-cache { none; };
715      // This is the default
716      allow-query { any; };
717      // Do not provide recursive service
718      recursion no;
719 };
720
721 // Provide a reverse mapping for the loopback
722 // address 127.0.0.1
723 zone "0.0.127.in-addr.arpa" {
724      type master;
725      file "localhost.rev";
726      notify no;
727 };
728 // We are the master server for example.com
729 zone "example.com" {
730      type master;
731      file "example.com.db";
732      // IP addresses of slave servers allowed to
733      // transfer example.com
734      allow-transfer {
735           192.168.4.14;
736           192.168.5.53;
737      };
738 };
739 // We are a slave server for eng.example.com
740 zone "eng.example.com" {
741      type slave;
742      file "eng.example.com.bk";
743      // IP address of eng.example.com master server
744      masters { 192.168.4.12; };
745 };
746 </programlisting>
747
748       </sect2>
749     </sect1>
750
751     <sect1>
752       <title>Load Balancing</title>
753       <!--
754         - Add explanation of why load balancing is fragile at best
755         - and completely pointless in the general case.
756         -->
757
758       <para>
759         A primitive form of load balancing can be achieved in
760         the <acronym>DNS</acronym> by using multiple records
761         (such as multiple A records) for one name.
762       </para>
763
764       <para>
765         For example, if you have three WWW servers with network addresses
766         of 10.0.0.1, 10.0.0.2 and 10.0.0.3, a set of records such as the
767         following means that clients will connect to each machine one third
768         of the time:
769       </para>
770
771       <informaltable colsep="0" rowsep="0">
772         <tgroup cols="5" colsep="0" rowsep="0" tgroupstyle="2Level-table">
773           <colspec colname="1" colnum="1" colsep="0" colwidth="0.875in"/>
774           <colspec colname="2" colnum="2" colsep="0" colwidth="0.500in"/>
775           <colspec colname="3" colnum="3" colsep="0" colwidth="0.750in"/>
776           <colspec colname="4" colnum="4" colsep="0" colwidth="0.750in"/>
777           <colspec colname="5" colnum="5" colsep="0" colwidth="2.028in"/>
778           <tbody>
779             <row rowsep="0">
780               <entry colname="1">
781                 <para>
782                   Name
783                 </para>
784               </entry>
785               <entry colname="2">
786                 <para>
787                   TTL
788                 </para>
789               </entry>
790               <entry colname="3">
791                 <para>
792                   CLASS
793                 </para>
794               </entry>
795               <entry colname="4">
796                 <para>
797                   TYPE
798                 </para>
799               </entry>
800               <entry colname="5">
801                 <para>
802                   Resource Record (RR) Data
803                 </para>
804               </entry>
805             </row>
806             <row rowsep="0">
807               <entry colname="1">
808                 <para>
809                   <literal>www</literal>
810                 </para>
811               </entry>
812               <entry colname="2">
813                 <para>
814                   <literal>600</literal>
815                 </para>
816               </entry>
817               <entry colname="3">
818                 <para>
819                   <literal>IN</literal>
820                 </para>
821               </entry>
822               <entry colname="4">
823                 <para>
824                   <literal>A</literal>
825                 </para>
826               </entry>
827               <entry colname="5">
828                 <para>
829                   <literal>10.0.0.1</literal>
830                 </para>
831               </entry>
832             </row>
833             <row rowsep="0">
834               <entry colname="1">
835                 <para/>
836               </entry>
837               <entry colname="2">
838                 <para>
839                   <literal>600</literal>
840                 </para>
841               </entry>
842               <entry colname="3">
843                 <para>
844                   <literal>IN</literal>
845                 </para>
846               </entry>
847               <entry colname="4">
848                 <para>
849                   <literal>A</literal>
850                 </para>
851               </entry>
852               <entry colname="5">
853                 <para>
854                   <literal>10.0.0.2</literal>
855                 </para>
856               </entry>
857             </row>
858             <row rowsep="0">
859               <entry colname="1">
860                 <para/>
861               </entry>
862               <entry colname="2">
863                 <para>
864                   <literal>600</literal>
865                 </para>
866               </entry>
867               <entry colname="3">
868                 <para>
869                   <literal>IN</literal>
870                 </para>
871               </entry>
872               <entry colname="4">
873                 <para>
874                   <literal>A</literal>
875                 </para>
876               </entry>
877               <entry colname="5">
878                 <para>
879                   <literal>10.0.0.3</literal>
880                 </para>
881               </entry>
882             </row>
883           </tbody>
884         </tgroup>
885       </informaltable>
886       <para>
887         When a resolver queries for these records, <acronym>BIND</acronym> will rotate
888         them and respond to the query with the records in a different
889         order.  In the example above, clients will randomly receive
890         records in the order 1, 2, 3; 2, 3, 1; and 3, 1, 2. Most clients
891         will use the first record returned and discard the rest.
892       </para>
893       <para>
894         For more detail on ordering responses, check the
895         <command>rrset-order</command> sub-statement in the
896         <command>options</command> statement, see
897         <xref endterm="rrset_ordering_title" linkend="rrset_ordering"/>.
898       </para>
899
900     </sect1>
901
902     <sect1>
903       <title>Name Server Operations</title>
904
905       <sect2>
906         <title>Tools for Use With the Name Server Daemon</title>
907         <para>
908           This section describes several indispensable diagnostic,
909           administrative and monitoring tools available to the system
910           administrator for controlling and debugging the name server
911           daemon.
912         </para>
913         <sect3 id="diagnostic_tools">
914           <title>Diagnostic Tools</title>
915           <para>
916             The <command>dig</command>, <command>host</command>, and
917             <command>nslookup</command> programs are all command
918             line tools
919             for manually querying name servers.  They differ in style and
920             output format.
921           </para>
922
923           <variablelist>
924             <varlistentry>
925               <term id="dig"><command>dig</command></term>
926               <listitem>
927                 <para>
928                   The domain information groper (<command>dig</command>)
929                   is the most versatile and complete of these lookup tools.
930                   It has two modes: simple interactive
931                   mode for a single query, and batch mode which executes a
932                   query for
933                   each in a list of several query lines. All query options are
934                   accessible
935                   from the command line.
936                 </para>
937                 <cmdsynopsis label="Usage">
938                   <command>dig</command>
939                   <arg>@<replaceable>server</replaceable></arg>
940                   <arg choice="plain"><replaceable>domain</replaceable></arg>
941                   <arg><replaceable>query-type</replaceable></arg>
942                   <arg><replaceable>query-class</replaceable></arg>
943                   <arg>+<replaceable>query-option</replaceable></arg>
944                   <arg>-<replaceable>dig-option</replaceable></arg>
945                   <arg>%<replaceable>comment</replaceable></arg>
946                 </cmdsynopsis>
947                 <para>
948                   The usual simple use of <command>dig</command> will take the form
949                 </para>
950                 <simpara>
951                   <command>dig @server domain query-type query-class</command>
952                 </simpara>
953                 <para>
954                   For more information and a list of available commands and
955                   options, see the <command>dig</command> man
956                   page.
957                 </para>
958               </listitem>
959             </varlistentry>
960
961             <varlistentry>
962               <term><command>host</command></term>
963               <listitem>
964                 <para>
965                   The <command>host</command> utility emphasizes
966                   simplicity
967                   and ease of use.  By default, it converts
968                   between host names and Internet addresses, but its
969                   functionality
970                   can be extended with the use of options.
971                 </para>
972                 <cmdsynopsis label="Usage">
973                   <command>host</command>
974                   <arg>-aCdlnrsTwv</arg>
975                   <arg>-c <replaceable>class</replaceable></arg>
976                   <arg>-N <replaceable>ndots</replaceable></arg>
977                   <arg>-t <replaceable>type</replaceable></arg>
978                   <arg>-W <replaceable>timeout</replaceable></arg>
979                   <arg>-R <replaceable>retries</replaceable></arg>
980                   <arg>-m <replaceable>flag</replaceable></arg>
981                   <arg>-4</arg>
982                   <arg>-6</arg>
983                   <arg choice="plain"><replaceable>hostname</replaceable></arg>
984                   <arg><replaceable>server</replaceable></arg>
985                 </cmdsynopsis>
986                 <para>
987                   For more information and a list of available commands and
988                   options, see the <command>host</command> man
989                   page.
990                 </para>
991               </listitem>
992             </varlistentry>
993
994             <varlistentry>
995               <term><command>nslookup</command></term>
996               <listitem>
997                 <para><command>nslookup</command>
998                   has two modes: interactive and
999                   non-interactive. Interactive mode allows the user to
1000                   query name servers for information about various
1001                   hosts and domains or to print a list of hosts in a
1002                   domain. Non-interactive mode is used to print just
1003                   the name and requested information for a host or
1004                   domain.
1005                 </para>
1006                 <cmdsynopsis label="Usage">
1007                   <command>nslookup</command>
1008                   <arg rep="repeat">-option</arg>
1009                   <group>
1010                     <arg><replaceable>host-to-find</replaceable></arg>
1011                     <arg>- <arg>server</arg></arg>
1012                   </group>
1013                 </cmdsynopsis>
1014                 <para>
1015                   Interactive mode is entered when no arguments are given (the
1016                   default name server will be used) or when the first argument
1017                   is a
1018                   hyphen (`-') and the second argument is the host name or
1019                   Internet address
1020                   of a name server.
1021                 </para>
1022                 <para>
1023                   Non-interactive mode is used when the name or Internet
1024                   address
1025                   of the host to be looked up is given as the first argument.
1026                   The
1027                   optional second argument specifies the host name or address
1028                   of a name server.
1029                 </para>
1030                 <para>
1031                   Due to its arcane user interface and frequently inconsistent
1032                   behavior, we do not recommend the use of <command>nslookup</command>.
1033                   Use <command>dig</command> instead.
1034                 </para>
1035               </listitem>
1036
1037             </varlistentry>
1038           </variablelist>
1039         </sect3>
1040
1041         <sect3 id="admin_tools">
1042           <title>Administrative Tools</title>
1043           <para>
1044             Administrative tools play an integral part in the management
1045             of a server.
1046           </para>
1047           <variablelist>
1048             <varlistentry id="named-checkconf" xreflabel="Named Configuration Checking application">
1049
1050               <term><command>named-checkconf</command></term>
1051               <listitem>
1052                 <para>
1053                   The <command>named-checkconf</command> program
1054                   checks the syntax of a <filename>named.conf</filename> file.
1055                 </para>
1056                 <cmdsynopsis label="Usage">
1057                   <command>named-checkconf</command>
1058                   <arg>-jvz</arg>
1059                   <arg>-t <replaceable>directory</replaceable></arg>
1060                   <arg><replaceable>filename</replaceable></arg>
1061                 </cmdsynopsis>
1062               </listitem>
1063             </varlistentry>
1064             <varlistentry id="named-checkzone" xreflabel="Zone Checking application">
1065
1066               <term><command>named-checkzone</command></term>
1067               <listitem>
1068                 <para>
1069                   The <command>named-checkzone</command> program
1070                   checks a master file for
1071                   syntax and consistency.
1072                 </para>
1073                 <cmdsynopsis label="Usage">
1074                   <command>named-checkzone</command>
1075                   <arg>-djqvD</arg>
1076                   <arg>-c <replaceable>class</replaceable></arg>
1077                   <arg>-o <replaceable>output</replaceable></arg>
1078                   <arg>-t <replaceable>directory</replaceable></arg>
1079                   <arg>-w <replaceable>directory</replaceable></arg>
1080                   <arg>-k <replaceable>(ignore|warn|fail)</replaceable></arg>
1081                   <arg>-n <replaceable>(ignore|warn|fail)</replaceable></arg>
1082                   <arg>-W <replaceable>(ignore|warn)</replaceable></arg>
1083                   <arg choice="plain"><replaceable>zone</replaceable></arg>
1084                   <arg><replaceable>filename</replaceable></arg>
1085                 </cmdsynopsis>
1086               </listitem>
1087             </varlistentry>
1088             <varlistentry id="named-compilezone" xreflabel="Zone Compilation application">
1089               <term><command>named-compilezone</command></term>
1090               <listitem>
1091                 <para>
1092                   Similar to <command>named-checkzone,</command> but
1093                   it always dumps the zone content to a specified file
1094                   (typically in a different format).
1095                 </para>
1096               </listitem>
1097             </varlistentry>
1098             <varlistentry id="rndc" xreflabel="Remote Name Daemon Control application">
1099
1100               <term><command>rndc</command></term>
1101               <listitem>
1102                 <para>
1103                   The remote name daemon control
1104                   (<command>rndc</command>) program allows the
1105                   system
1106                   administrator to control the operation of a name server.
1107                   Since <acronym>BIND</acronym> 9.2, <command>rndc</command>
1108                   supports all the commands of the BIND 8 <command>ndc</command>
1109                   utility except <command>ndc start</command> and
1110                   <command>ndc restart</command>, which were also
1111                   not supported in <command>ndc</command>'s
1112                   channel mode.
1113                   If you run <command>rndc</command> without any
1114                   options
1115                   it will display a usage message as follows:
1116                 </para>
1117                 <cmdsynopsis label="Usage">
1118                   <command>rndc</command>
1119                   <arg>-c <replaceable>config</replaceable></arg>
1120                   <arg>-s <replaceable>server</replaceable></arg>
1121                   <arg>-p <replaceable>port</replaceable></arg>
1122                   <arg>-y <replaceable>key</replaceable></arg>
1123                   <arg choice="plain"><replaceable>command</replaceable></arg>
1124                   <arg rep="repeat"><replaceable>command</replaceable></arg>
1125                 </cmdsynopsis>
1126                 <para>The <command>command</command>
1127                   is one of the following:
1128                 </para>
1129
1130                 <variablelist>
1131
1132                   <varlistentry>
1133                     <term><userinput>reload</userinput></term>
1134                     <listitem>
1135                       <para>
1136                         Reload configuration file and zones.
1137                       </para>
1138                     </listitem>
1139                   </varlistentry>
1140
1141                   <varlistentry>
1142                     <term><userinput>reload <replaceable>zone</replaceable>
1143                         <optional><replaceable>class</replaceable>
1144            <optional><replaceable>view</replaceable></optional></optional></userinput></term>
1145                     <listitem>
1146                       <para>
1147                         Reload the given zone.
1148                       </para>
1149                     </listitem>
1150                   </varlistentry>
1151
1152                   <varlistentry>
1153                     <term><userinput>refresh <replaceable>zone</replaceable>
1154                         <optional><replaceable>class</replaceable>
1155            <optional><replaceable>view</replaceable></optional></optional></userinput></term>
1156                     <listitem>
1157                       <para>
1158                         Schedule zone maintenance for the given zone.
1159                       </para>
1160                     </listitem>
1161                   </varlistentry>
1162
1163                   <varlistentry>
1164                     <term><userinput>retransfer <replaceable>zone</replaceable>
1165
1166                         <optional><replaceable>class</replaceable>
1167            <optional><replaceable>view</replaceable></optional></optional></userinput></term>
1168                     <listitem>
1169                       <para>
1170                         Retransfer the given zone from the master.
1171                       </para>
1172                     </listitem>
1173                   </varlistentry>
1174
1175                   <varlistentry>
1176                     <term><userinput>sign <replaceable>zone</replaceable>
1177                         <optional><replaceable>class</replaceable>
1178            <optional><replaceable>view</replaceable></optional></optional></userinput></term>
1179                     <listitem>
1180                       <para>
1181                         Fetch all DNSSEC keys for the given zone
1182                         from the key directory (see
1183                         <command>key-directory</command> in
1184                         <xref linkend="options"/>).  If they are within
1185                         their publication period, merge them into the
1186                         zone's DNSKEY RRset.  If the DNSKEY RRset
1187                         is changed, then the zone is automatically
1188                         re-signed with the new key set.
1189                       </para>
1190                       <para>
1191                         This command requires that the
1192                         <command>auto-dnssec</command> zone option be set
1193                         to <literal>allow</literal> or
1194                         <literal>maintain</literal>,
1195                         and also requires the zone to be configured to
1196                         allow dynamic DNS.
1197                         See <xref linkend="dynamic_update_policies"/> for
1198                         more details.
1199                       </para>
1200                     </listitem>
1201                   </varlistentry>
1202
1203                   <varlistentry>
1204                     <term><userinput>loadkeys <replaceable>zone</replaceable>
1205                         <optional><replaceable>class</replaceable>
1206            <optional><replaceable>view</replaceable></optional></optional></userinput></term>
1207                     <listitem>
1208                       <para>
1209                         Fetch all DNSSEC keys for the given zone
1210                         from the key directory (see
1211                         <command>key-directory</command> in
1212                         <xref linkend="options"/>).  If they are within
1213                         their publication period, merge them into the
1214                         zone's DNSKEY RRset.  Unlike <command>rndc
1215                         sign</command>, however, the zone is not
1216                         immediately re-signed by the new keys, but is
1217                         allowed to incrementally re-sign over time.
1218                       </para>
1219                       <para>
1220                         This command requires that the
1221                         <command>auto-dnssec</command> zone option
1222                         be set to <literal>maintain</literal>,
1223                         and also requires the zone to be configured to
1224                         allow dynamic DNS.
1225                         See <xref linkend="dynamic_update_policies"/> for
1226                         more details.
1227                       </para>
1228                     </listitem>
1229                   </varlistentry>
1230
1231                   <varlistentry>
1232                     <term><userinput>freeze
1233                         <optional><replaceable>zone</replaceable>
1234        <optional><replaceable>class</replaceable>
1235            <optional><replaceable>view</replaceable></optional></optional></optional></userinput></term>
1236                     <listitem>
1237                       <para>
1238                         Suspend updates to a dynamic zone.  If no zone is
1239                         specified,
1240                         then all zones are suspended.  This allows manual
1241                         edits to be made to a zone normally updated by dynamic
1242                         update.  It
1243                         also causes changes in the journal file to be synced
1244                         into the master
1245                         and the journal file to be removed.  All dynamic
1246                         update attempts will
1247                         be refused while the zone is frozen.
1248                       </para>
1249                     </listitem>
1250                   </varlistentry>
1251
1252                   <varlistentry>
1253                     <term><userinput>thaw
1254                         <optional><replaceable>zone</replaceable>
1255        <optional><replaceable>class</replaceable>
1256            <optional><replaceable>view</replaceable></optional></optional></optional></userinput></term>
1257                     <listitem>
1258                       <para>
1259                         Enable updates to a frozen dynamic zone.  If no zone
1260                         is
1261                         specified, then all frozen zones are enabled.  This
1262                         causes
1263                         the server to reload the zone from disk, and
1264                         re-enables dynamic updates
1265                         after the load has completed.  After a zone is thawed,
1266                         dynamic updates
1267                         will no longer be refused.
1268                       </para>
1269                     </listitem>
1270                   </varlistentry>
1271
1272                   <varlistentry>
1273                     <term><userinput>notify <replaceable>zone</replaceable>
1274                         <optional><replaceable>class</replaceable>
1275            <optional><replaceable>view</replaceable></optional></optional></userinput></term>
1276                     <listitem>
1277                       <para>
1278                         Resend NOTIFY messages for the zone.
1279                       </para>
1280                     </listitem>
1281                   </varlistentry>
1282
1283                   <varlistentry>
1284                     <term><userinput>reconfig</userinput></term>
1285                     <listitem>
1286                       <para>
1287                         Reload the configuration file and load new zones,
1288                         but do not reload existing zone files even if they
1289                         have changed.
1290                         This is faster than a full <command>reload</command> when there
1291                         is a large number of zones because it avoids the need
1292                         to examine the
1293                         modification times of the zones files.
1294                       </para>
1295                     </listitem>
1296                   </varlistentry>
1297
1298                   <varlistentry>
1299                     <term><userinput>stats</userinput></term>
1300                     <listitem>
1301                       <para>
1302                         Write server statistics to the statistics file.
1303                       </para>
1304                     </listitem>
1305                   </varlistentry>
1306
1307                   <varlistentry>
1308                     <term><userinput>querylog</userinput></term>
1309                     <listitem>
1310                       <para>
1311                         Toggle query logging. Query logging can also be enabled
1312                         by explicitly directing the <command>queries</command>
1313                         <command>category</command> to a
1314                         <command>channel</command> in the
1315                         <command>logging</command> section of
1316                         <filename>named.conf</filename> or by specifying
1317                         <command>querylog yes;</command> in the
1318                         <command>options</command> section of
1319                         <filename>named.conf</filename>.
1320                       </para>
1321                     </listitem>
1322                   </varlistentry>
1323
1324                   <varlistentry>
1325                     <term><userinput>dumpdb
1326                         <optional>-all|-cache|-zone</optional>
1327                         <optional><replaceable>view ...</replaceable></optional></userinput></term>
1328                     <listitem>
1329                       <para>
1330                         Dump the server's caches (default) and/or zones to
1331                         the
1332                         dump file for the specified views.  If no view is
1333                         specified, all
1334                         views are dumped.
1335                       </para>
1336                     </listitem>
1337                   </varlistentry>
1338
1339                   <varlistentry>
1340                     <term><userinput>secroots
1341                         <optional><replaceable>view ...</replaceable></optional></userinput></term>
1342                     <listitem>
1343                       <para>
1344                         Dump the server's security roots to the secroots
1345                         file for the specified views.  If no view is
1346                         specified, security roots for all
1347                         views are dumped.
1348                       </para>
1349                     </listitem>
1350                   </varlistentry>
1351
1352                   <varlistentry>
1353                     <term><userinput>stop <optional>-p</optional></userinput></term>
1354                     <listitem>
1355                       <para>
1356                         Stop the server, making sure any recent changes
1357                         made through dynamic update or IXFR are first saved to
1358                         the master files of the updated zones.
1359                         If <option>-p</option> is specified <command>named</command>'s process id is returned.
1360                         This allows an external process to determine when <command>named</command>
1361                         had completed stopping.
1362                       </para>
1363                     </listitem>
1364                   </varlistentry>
1365
1366                   <varlistentry>
1367                     <term><userinput>halt <optional>-p</optional></userinput></term>
1368                     <listitem>
1369                       <para>
1370                         Stop the server immediately.  Recent changes
1371                         made through dynamic update or IXFR are not saved to
1372                         the master files, but will be rolled forward from the
1373                         journal files when the server is restarted.
1374                         If <option>-p</option> is specified <command>named</command>'s process id is returned.
1375                         This allows an external process to determine when <command>named</command>
1376                         had completed halting.
1377                       </para>
1378                     </listitem>
1379                   </varlistentry>
1380
1381                   <varlistentry>
1382                     <term><userinput>trace</userinput></term>
1383                     <listitem>
1384                       <para>
1385                         Increment the servers debugging level by one.
1386                       </para>
1387                     </listitem>
1388                   </varlistentry>
1389
1390                   <varlistentry>
1391                     <term><userinput>trace <replaceable>level</replaceable></userinput></term>
1392                     <listitem>
1393                       <para>
1394                         Sets the server's debugging level to an explicit
1395                         value.
1396                       </para>
1397                     </listitem>
1398                   </varlistentry>
1399
1400                   <varlistentry>
1401                     <term><userinput>notrace</userinput></term>
1402                     <listitem>
1403                       <para>
1404                         Sets the server's debugging level to 0.
1405                       </para>
1406                     </listitem>
1407                   </varlistentry>
1408
1409                   <varlistentry>
1410                     <term><userinput>flush</userinput></term>
1411                     <listitem>
1412                       <para>
1413                         Flushes the server's cache.
1414                       </para>
1415                     </listitem>
1416                   </varlistentry>
1417
1418                   <varlistentry>
1419                     <term><userinput>flushname</userinput> <replaceable>name</replaceable></term>
1420                     <listitem>
1421                       <para>
1422                         Flushes the given name from the server's cache.
1423                       </para>
1424                     </listitem>
1425                   </varlistentry>
1426
1427                   <varlistentry>
1428                     <term><userinput>status</userinput></term>
1429                     <listitem>
1430                       <para>
1431                         Display status of the server.
1432                         Note that the number of zones includes the internal <command>bind/CH</command> zone
1433                         and the default <command>./IN</command>
1434                         hint zone if there is not an
1435                         explicit root zone configured.
1436                       </para>
1437                     </listitem>
1438                   </varlistentry>
1439
1440                   <varlistentry>
1441                     <term><userinput>recursing</userinput></term>
1442                     <listitem>
1443                       <para>
1444                         Dump the list of queries <command>named</command> is currently recursing
1445                         on.
1446                       </para>
1447                     </listitem>
1448                   </varlistentry>
1449
1450                   <varlistentry>
1451                     <term><userinput>validation
1452                         <optional>on|off</optional>
1453                         <optional><replaceable>view ...</replaceable></optional>
1454                     </userinput></term>
1455                     <listitem>
1456                       <para>
1457                         Enable or disable DNSSEC validation.
1458                         Note <command>dnssec-enable</command> also needs to be
1459                         set to <userinput>yes</userinput> to be effective.
1460                         It defaults to enabled.
1461                       </para>
1462                     </listitem>
1463                   </varlistentry>
1464
1465                   <varlistentry>
1466                     <term><userinput>tsig-list</userinput></term>
1467                     <listitem>
1468                       <para>
1469                         List the names of all TSIG keys currently configured
1470                         for use by <command>named</command> in each view.  The
1471                         list both statically configured keys and dynamic
1472                         TKEY-negotiated keys.
1473                       </para>
1474                     </listitem>
1475                   </varlistentry>
1476
1477                   <varlistentry>
1478                     <term><userinput>tsig-delete</userinput>
1479                      <replaceable>keyname</replaceable>
1480                      <optional><replaceable>view</replaceable></optional></term>
1481                     <listitem>
1482                       <para>
1483                         Delete a given TKEY-negotated key from the server.
1484                         (This does not apply to statically configured TSIG
1485                         keys.)
1486                       </para>
1487                     </listitem>
1488                   </varlistentry>
1489
1490                   <varlistentry>
1491                     <term><userinput>addzone
1492                         <replaceable>zone</replaceable>
1493                         <optional><replaceable>class</replaceable>
1494                         <optional><replaceable>view</replaceable></optional></optional>
1495                         <replaceable>configuration</replaceable>
1496                     </userinput></term>
1497                     <listitem>
1498                       <para>
1499                         Add a zone while the server is running.  This
1500                         command requires the
1501                         <command>allow-new-zones</command> option to be set
1502                         to <userinput>yes</userinput>.  The
1503                         <replaceable>configuration</replaceable> string
1504                         specified on the command line is the zone
1505                         configuration text that would ordinarily be
1506                         placed in <filename>named.conf</filename>.
1507                       </para>
1508                       <para>
1509                         The configuration is saved in a file called
1510                        <filename><replaceable>hash</replaceable>.nzf</filename>,
1511                         where <replaceable>hash</replaceable> is a
1512                         cryptographic hash generated from the name of
1513                         the view.  When <command>named</command> is
1514                         restarted, the file will be loaded into the view
1515                         configuration, so that zones that were added
1516                         can persist after a restart.
1517                       </para>
1518                       <para>
1519                         This sample <command>addzone</command> command
1520                         would add the zone <literal>example.com</literal>
1521                         to the default view:
1522                       </para>
1523                       <para>
1524 <prompt>$ </prompt><userinput>rndc addzone example.com '{ type master; file "example.com.db"; };'</userinput>
1525                       </para>
1526                       <para>
1527                         (Note the brackets and semi-colon around the zone
1528                         configuration text.)
1529                       </para>
1530                     </listitem>
1531                   </varlistentry>
1532
1533                   <varlistentry>
1534                     <term><userinput>delzone
1535                         <replaceable>zone</replaceable>
1536                         <optional><replaceable>class</replaceable>
1537                         <optional><replaceable>view</replaceable></optional></optional>
1538                     </userinput></term>
1539                     <listitem>
1540                       <para>
1541                         Delete a zone while the server is running.
1542                         Only zones that were originally added via
1543                         <command>rndc addzone</command> can be deleted
1544                         in this matter.
1545                       </para>
1546                     </listitem>
1547                   </varlistentry>
1548
1549                 </variablelist>
1550
1551                 <para>
1552                   A configuration file is required, since all
1553                   communication with the server is authenticated with
1554                   digital signatures that rely on a shared secret, and
1555                   there is no way to provide that secret other than with a
1556                   configuration file.  The default location for the
1557                   <command>rndc</command> configuration file is
1558                   <filename>/etc/rndc.conf</filename>, but an
1559                   alternate
1560                   location can be specified with the <option>-c</option>
1561                   option.  If the configuration file is not found,
1562                   <command>rndc</command> will also look in
1563                   <filename>/etc/rndc.key</filename> (or whatever
1564                   <varname>sysconfdir</varname> was defined when
1565                   the <acronym>BIND</acronym> build was
1566                   configured).
1567                   The <filename>rndc.key</filename> file is
1568                   generated by
1569                   running <command>rndc-confgen -a</command> as
1570                   described in
1571                   <xref linkend="controls_statement_definition_and_usage"/>.
1572                 </para>
1573
1574                 <para>
1575                   The format of the configuration file is similar to
1576                   that of <filename>named.conf</filename>, but
1577                   limited to
1578                   only four statements, the <command>options</command>,
1579                   <command>key</command>, <command>server</command> and
1580                   <command>include</command>
1581                   statements.  These statements are what associate the
1582                   secret keys to the servers with which they are meant to
1583                   be shared.  The order of statements is not
1584                   significant.
1585                 </para>
1586
1587                 <para>
1588                   The <command>options</command> statement has
1589                   three clauses:
1590                   <command>default-server</command>, <command>default-key</command>,
1591                   and <command>default-port</command>.
1592                   <command>default-server</command> takes a
1593                   host name or address argument  and represents the server
1594                   that will
1595                   be contacted if no <option>-s</option>
1596                   option is provided on the command line.
1597                   <command>default-key</command> takes
1598                   the name of a key as its argument, as defined by a <command>key</command> statement.
1599                   <command>default-port</command> specifies the
1600                   port to which
1601                   <command>rndc</command> should connect if no
1602                   port is given on the command line or in a
1603                   <command>server</command> statement.
1604                 </para>
1605
1606                 <para>
1607                   The <command>key</command> statement defines a
1608                   key to be used
1609                   by <command>rndc</command> when authenticating
1610                   with
1611                   <command>named</command>.  Its syntax is
1612                   identical to the
1613                   <command>key</command> statement in <filename>named.conf</filename>.
1614                   The keyword <userinput>key</userinput> is
1615                   followed by a key name, which must be a valid
1616                   domain name, though it need not actually be hierarchical;
1617                   thus,
1618                   a string like "<userinput>rndc_key</userinput>" is a valid
1619                   name.
1620                   The <command>key</command> statement has two
1621                   clauses:
1622                   <command>algorithm</command> and <command>secret</command>.
1623                   While the configuration parser will accept any string as the
1624                   argument
1625                   to algorithm, currently only the string "<userinput>hmac-md5</userinput>"
1626                   has any meaning.  The secret is a base-64 encoded string
1627                   as specified in RFC 3548.
1628                 </para>
1629
1630                 <para>
1631                   The <command>server</command> statement
1632                   associates a key
1633                   defined using the <command>key</command>
1634                   statement with a server.
1635                   The keyword <userinput>server</userinput> is followed by a
1636                   host name or address.  The <command>server</command> statement
1637                   has two clauses: <command>key</command> and <command>port</command>.
1638                   The <command>key</command> clause specifies the
1639                   name of the key
1640                   to be used when communicating with this server, and the
1641                   <command>port</command> clause can be used to
1642                   specify the port <command>rndc</command> should
1643                   connect
1644                   to on the server.
1645                 </para>
1646
1647                 <para>
1648                   A sample minimal configuration file is as follows:
1649                 </para>
1650
1651 <programlisting>
1652 key rndc_key {
1653      algorithm "hmac-md5";
1654      secret
1655        "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
1656 };
1657 options {
1658      default-server 127.0.0.1;
1659      default-key    rndc_key;
1660 };
1661 </programlisting>
1662
1663                 <para>
1664                   This file, if installed as <filename>/etc/rndc.conf</filename>,
1665                   would allow the command:
1666                 </para>
1667
1668                 <para>
1669                   <prompt>$ </prompt><userinput>rndc reload</userinput>
1670                 </para>
1671
1672                 <para>
1673                   to connect to 127.0.0.1 port 953 and cause the name server
1674                   to reload, if a name server on the local machine were
1675                   running with
1676                   following controls statements:
1677                 </para>
1678
1679 <programlisting>
1680 controls {
1681         inet 127.0.0.1
1682             allow { localhost; } keys { rndc_key; };
1683 };
1684 </programlisting>
1685
1686                 <para>
1687                   and it had an identical key statement for
1688                   <literal>rndc_key</literal>.
1689                 </para>
1690
1691                 <para>
1692                   Running the <command>rndc-confgen</command>
1693                   program will
1694                   conveniently create a <filename>rndc.conf</filename>
1695                   file for you, and also display the
1696                   corresponding <command>controls</command>
1697                   statement that you need to
1698                   add to <filename>named.conf</filename>.
1699                   Alternatively,
1700                   you can run <command>rndc-confgen -a</command>
1701                   to set up
1702                   a <filename>rndc.key</filename> file and not
1703                   modify
1704                   <filename>named.conf</filename> at all.
1705                 </para>
1706
1707               </listitem>
1708             </varlistentry>
1709           </variablelist>
1710
1711         </sect3>
1712       </sect2>
1713       <sect2>
1714
1715         <title>Signals</title>
1716         <para>
1717           Certain UNIX signals cause the name server to take specific
1718           actions, as described in the following table.  These signals can
1719           be sent using the <command>kill</command> command.
1720         </para>
1721         <informaltable frame="all">
1722           <tgroup cols="2">
1723             <colspec colname="1" colnum="1" colsep="0" colwidth="1.125in"/>
1724             <colspec colname="2" colnum="2" colsep="0" colwidth="4.000in"/>
1725             <tbody>
1726               <row rowsep="0">
1727                 <entry colname="1">
1728                   <para><command>SIGHUP</command></para>
1729                 </entry>
1730                 <entry colname="2">
1731                   <para>
1732                     Causes the server to read <filename>named.conf</filename> and
1733                     reload the database.
1734                   </para>
1735                 </entry>
1736               </row>
1737               <row rowsep="0">
1738                 <entry colname="1">
1739                   <para><command>SIGTERM</command></para>
1740                 </entry>
1741                 <entry colname="2">
1742                   <para>
1743                     Causes the server to clean up and exit.
1744                   </para>
1745                 </entry>
1746               </row>
1747               <row rowsep="0">
1748                 <entry colname="1">
1749                   <para><command>SIGINT</command></para>
1750                 </entry>
1751                 <entry colname="2">
1752                   <para>
1753                     Causes the server to clean up and exit.
1754                   </para>
1755                 </entry>
1756               </row>
1757             </tbody>
1758           </tgroup>
1759         </informaltable>
1760       </sect2>
1761     </sect1>
1762   </chapter>
1763
1764   <chapter id="Bv9ARM.ch04">
1765     <title>Advanced DNS Features</title>
1766
1767     <sect1 id="notify">
1768
1769       <title>Notify</title>
1770       <para>
1771         <acronym>DNS</acronym> NOTIFY is a mechanism that allows master
1772         servers to notify their slave servers of changes to a zone's data. In
1773         response to a <command>NOTIFY</command> from a master server, the
1774         slave will check to see that its version of the zone is the
1775         current version and, if not, initiate a zone transfer.
1776       </para>
1777
1778       <para>
1779         For more information about <acronym>DNS</acronym>
1780         <command>NOTIFY</command>, see the description of the
1781         <command>notify</command> option in <xref linkend="boolean_options"/> and
1782         the description of the zone option <command>also-notify</command> in
1783         <xref linkend="zone_transfers"/>.  The <command>NOTIFY</command>
1784         protocol is specified in RFC 1996.
1785       </para>
1786
1787       <note>
1788         As a slave zone can also be a master to other slaves, <command>named</command>,
1789         by default, sends <command>NOTIFY</command> messages for every zone
1790         it loads.  Specifying <command>notify master-only;</command> will
1791         cause <command>named</command> to only send <command>NOTIFY</command> for master
1792         zones that it loads.
1793       </note>
1794
1795     </sect1>
1796
1797     <sect1 id="dynamic_update">
1798       <title>Dynamic Update</title>
1799
1800       <para>
1801         Dynamic Update is a method for adding, replacing or deleting
1802         records in a master server by sending it a special form of DNS
1803         messages.  The format and meaning of these messages is specified
1804         in RFC 2136.
1805       </para>
1806
1807       <para>
1808         Dynamic update is enabled by including an
1809         <command>allow-update</command> or an <command>update-policy</command>
1810         clause in the <command>zone</command> statement.
1811       </para>
1812       
1813       <para>
1814         If the zone's <command>update-policy</command> is set to
1815         <userinput>local</userinput>, updates to the zone
1816         will be permitted for the key <varname>local-ddns</varname>,
1817         which will be generated by <command>named</command> at startup.
1818         See <xref linkend="dynamic_update_policies"/> for more details.
1819       </para>
1820
1821       <para>
1822         Dynamic updates using Kerberos signed requests can be made
1823         using the TKEY/GSS protocol by setting either the
1824         <command>tkey-gssapi-keytab</command> option, or alternatively
1825         by setting both the <command>tkey-gssapi-credential</command>
1826         and <command>tkey-domain</command> options. Once enabled,
1827         Kerberos signed requests will be matched against the update
1828         policies for the zone, using the Kerberos principal as the
1829         signer for the request.
1830       </para>
1831
1832       <para>
1833         Updating of secure zones (zones using DNSSEC) follows RFC
1834         3007: RRSIG, NSEC and NSEC3 records affected by updates are
1835         automatically regenerated by the server using an online
1836         zone key.  Update authorization is based on transaction
1837         signatures and an explicit server policy.
1838       </para>
1839
1840       <sect2 id="journal">
1841         <title>The journal file</title>
1842
1843         <para>
1844           All changes made to a zone using dynamic update are stored
1845           in the zone's journal file.  This file is automatically created
1846           by the server when the first dynamic update takes place.
1847           The name of the journal file is formed by appending the extension
1848           <filename>.jnl</filename> to the name of the
1849           corresponding zone
1850           file unless specifically overridden.  The journal file is in a
1851           binary format and should not be edited manually.
1852         </para>
1853
1854         <para>
1855           The server will also occasionally write ("dump")
1856           the complete contents of the updated zone to its zone file.
1857           This is not done immediately after
1858           each dynamic update, because that would be too slow when a large
1859           zone is updated frequently.  Instead, the dump is delayed by
1860           up to 15 minutes, allowing additional updates to take place.
1861           During the dump process, transient files will be created
1862           with the extensions <filename>.jnw</filename> and
1863           <filename>.jbk</filename>; under ordinary circumstances, these
1864           will be removed when the dump is complete, and can be safely
1865           ignored.
1866         </para>
1867
1868         <para>
1869           When a server is restarted after a shutdown or crash, it will replay
1870               the journal file to incorporate into the zone any updates that
1871           took
1872           place after the last zone dump.
1873         </para>
1874
1875         <para>
1876           Changes that result from incoming incremental zone transfers are
1877           also
1878           journalled in a similar way.
1879         </para>
1880
1881         <para>
1882           The zone files of dynamic zones cannot normally be edited by
1883           hand because they are not guaranteed to contain the most recent
1884           dynamic changes &mdash; those are only in the journal file.
1885           The only way to ensure that the zone file of a dynamic zone
1886           is up to date is to run <command>rndc stop</command>.
1887         </para>
1888
1889         <para>
1890           If you have to make changes to a dynamic zone
1891           manually, the following procedure will work: Disable dynamic updates
1892               to the zone using
1893           <command>rndc freeze <replaceable>zone</replaceable></command>.
1894           This will also remove the zone's <filename>.jnl</filename> file
1895           and update the master file.  Edit the zone file.  Run
1896           <command>rndc thaw <replaceable>zone</replaceable></command>
1897           to reload the changed zone and re-enable dynamic updates.
1898         </para>
1899
1900       </sect2>
1901
1902     </sect1>
1903
1904     <sect1 id="incremental_zone_transfers">
1905       <title>Incremental Zone Transfers (IXFR)</title>
1906
1907       <para>
1908         The incremental zone transfer (IXFR) protocol is a way for
1909         slave servers to transfer only changed data, instead of having to
1910         transfer the entire zone. The IXFR protocol is specified in RFC
1911         1995. See <xref linkend="proposed_standards"/>.
1912       </para>
1913
1914       <para>
1915         When acting as a master, <acronym>BIND</acronym> 9
1916         supports IXFR for those zones
1917         where the necessary change history information is available. These
1918         include master zones maintained by dynamic update and slave zones
1919         whose data was obtained by IXFR.  For manually maintained master
1920         zones, and for slave zones obtained by performing a full zone
1921         transfer (AXFR), IXFR is supported only if the option
1922         <command>ixfr-from-differences</command> is set
1923         to <userinput>yes</userinput>.
1924       </para>
1925
1926       <para>
1927         When acting as a slave, <acronym>BIND</acronym> 9 will attempt
1928         to use IXFR unless it is explicitly disabled via the
1929         <command>request-ixfr</command> option or the use of
1930         <command>ixfr-from-differences</command>.  For
1931         more information about disabling IXFR, see the description
1932         of the <command>request-ixfr</command> clause of the
1933         <command>server</command> statement.
1934       </para>
1935     </sect1>
1936
1937     <sect1>
1938       <title>Split DNS</title>
1939       <para>
1940         Setting up different views, or visibility, of the DNS space to
1941         internal and external resolvers is usually referred to as a
1942         <emphasis>Split DNS</emphasis> setup. There are several
1943         reasons an organization would want to set up its DNS this way.
1944       </para>
1945       <para>
1946         One common reason for setting up a DNS system this way is
1947         to hide "internal" DNS information from "external" clients on the
1948         Internet. There is some debate as to whether or not this is actually
1949         useful.
1950         Internal DNS information leaks out in many ways (via email headers,
1951         for example) and most savvy "attackers" can find the information
1952         they need using other means.
1953         However, since listing addresses of internal servers that
1954         external clients cannot possibly reach can result in
1955         connection delays and other annoyances, an organization may
1956         choose to use a Split DNS to present a consistent view of itself
1957         to the outside world.
1958       </para>
1959       <para>
1960         Another common reason for setting up a Split DNS system is
1961         to allow internal networks that are behind filters or in RFC 1918
1962         space (reserved IP space, as documented in RFC 1918) to resolve DNS
1963         on the Internet. Split DNS can also be used to allow mail from outside
1964         back in to the internal network.
1965       </para>
1966      <sect2>
1967       <title>Example split DNS setup</title>
1968       <para>
1969         Let's say a company named <emphasis>Example, Inc.</emphasis>
1970         (<literal>example.com</literal>)
1971         has several corporate sites that have an internal network with
1972         reserved
1973         Internet Protocol (IP) space and an external demilitarized zone (DMZ),
1974         or "outside" section of a network, that is available to the public.
1975       </para>
1976       <para>
1977         <emphasis>Example, Inc.</emphasis> wants its internal clients
1978         to be able to resolve external hostnames and to exchange mail with
1979         people on the outside. The company also wants its internal resolvers
1980         to have access to certain internal-only zones that are not available
1981         at all outside of the internal network.
1982       </para>
1983       <para>
1984         In order to accomplish this, the company will set up two sets
1985         of name servers. One set will be on the inside network (in the
1986         reserved
1987         IP space) and the other set will be on bastion hosts, which are
1988         "proxy"
1989         hosts that can talk to both sides of its network, in the DMZ.
1990       </para>
1991       <para>
1992         The internal servers will be configured to forward all queries,
1993         except queries for <filename>site1.internal</filename>, <filename>site2.internal</filename>, <filename>site1.example.com</filename>,
1994         and <filename>site2.example.com</filename>, to the servers
1995         in the
1996         DMZ. These internal servers will have complete sets of information
1997         for <filename>site1.example.com</filename>, <filename>site2.example.com</filename>, <filename>site1.internal</filename>,
1998         and <filename>site2.internal</filename>.
1999       </para>
2000       <para>
2001         To protect the <filename>site1.internal</filename> and <filename>site2.internal</filename> domains,
2002         the internal name servers must be configured to disallow all queries
2003         to these domains from any external hosts, including the bastion
2004         hosts.
2005       </para>
2006       <para>
2007         The external servers, which are on the bastion hosts, will
2008         be configured to serve the "public" version of the <filename>site1</filename> and <filename>site2.example.com</filename> zones.
2009         This could include things such as the host records for public servers
2010         (<filename>www.example.com</filename> and <filename>ftp.example.com</filename>),
2011         and mail exchange (MX)  records (<filename>a.mx.example.com</filename> and <filename>b.mx.example.com</filename>).
2012       </para>
2013       <para>
2014         In addition, the public <filename>site1</filename> and <filename>site2.example.com</filename> zones
2015         should have special MX records that contain wildcard (`*') records
2016         pointing to the bastion hosts. This is needed because external mail
2017         servers do not have any other way of looking up how to deliver mail
2018         to those internal hosts. With the wildcard records, the mail will
2019         be delivered to the bastion host, which can then forward it on to
2020         internal hosts.
2021       </para>
2022       <para>
2023         Here's an example of a wildcard MX record:
2024       </para>
2025       <programlisting>*   IN MX 10 external1.example.com.</programlisting>
2026       <para>
2027         Now that they accept mail on behalf of anything in the internal
2028         network, the bastion hosts will need to know how to deliver mail
2029         to internal hosts. In order for this to work properly, the resolvers
2030         on
2031         the bastion hosts will need to be configured to point to the internal
2032         name servers for DNS resolution.
2033       </para>
2034       <para>
2035         Queries for internal hostnames will be answered by the internal
2036         servers, and queries for external hostnames will be forwarded back
2037         out to the DNS servers on the bastion hosts.
2038       </para>
2039       <para>
2040         In order for all this to work properly, internal clients will
2041         need to be configured to query <emphasis>only</emphasis> the internal
2042         name servers for DNS queries. This could also be enforced via
2043         selective
2044         filtering on the network.
2045       </para>
2046       <para>
2047         If everything has been set properly, <emphasis>Example, Inc.</emphasis>'s
2048         internal clients will now be able to:
2049       </para>
2050       <itemizedlist>
2051         <listitem>
2052           <simpara>
2053             Look up any hostnames in the <literal>site1</literal>
2054             and
2055             <literal>site2.example.com</literal> zones.
2056           </simpara>
2057         </listitem>
2058         <listitem>
2059           <simpara>
2060             Look up any hostnames in the <literal>site1.internal</literal> and
2061             <literal>site2.internal</literal> domains.
2062           </simpara>
2063         </listitem>
2064         <listitem>
2065           <simpara>Look up any hostnames on the Internet.</simpara>
2066         </listitem>
2067         <listitem>
2068           <simpara>Exchange mail with both internal and external people.</simpara>
2069         </listitem>
2070       </itemizedlist>
2071       <para>
2072         Hosts on the Internet will be able to:
2073       </para>
2074       <itemizedlist>
2075         <listitem>
2076           <simpara>
2077             Look up any hostnames in the <literal>site1</literal>
2078             and
2079             <literal>site2.example.com</literal> zones.
2080           </simpara>
2081         </listitem>
2082         <listitem>
2083           <simpara>
2084             Exchange mail with anyone in the <literal>site1</literal> and
2085             <literal>site2.example.com</literal> zones.
2086           </simpara>
2087         </listitem>
2088       </itemizedlist>
2089
2090       <para>
2091         Here is an example configuration for the setup we just
2092         described above. Note that this is only configuration information;
2093         for information on how to configure your zone files, see <xref linkend="sample_configuration"/>.
2094       </para>
2095
2096       <para>
2097         Internal DNS server config:
2098       </para>
2099
2100 <programlisting>
2101
2102 acl internals { 172.16.72.0/24; 192.168.1.0/24; };
2103
2104 acl externals { <varname>bastion-ips-go-here</varname>; };
2105
2106 options {
2107     ...
2108     ...
2109     forward only;
2110     // forward to external servers
2111     forwarders {
2112         <varname>bastion-ips-go-here</varname>;
2113     };
2114     // sample allow-transfer (no one)
2115     allow-transfer { none; };
2116     // restrict query access
2117     allow-query { internals; externals; };
2118     // restrict recursion
2119     allow-recursion { internals; };
2120     ...
2121     ...
2122 };
2123
2124 // sample master zone
2125 zone "site1.example.com" {
2126   type master;
2127   file "m/site1.example.com";
2128   // do normal iterative resolution (do not forward)
2129   forwarders { };
2130   allow-query { internals; externals; };
2131   allow-transfer { internals; };
2132 };
2133
2134 // sample slave zone
2135 zone "site2.example.com" {
2136   type slave;
2137   file "s/site2.example.com";
2138   masters { 172.16.72.3; };
2139   forwarders { };
2140   allow-query { internals; externals; };
2141   allow-transfer { internals; };
2142 };
2143
2144 zone "site1.internal" {
2145   type master;
2146   file "m/site1.internal";
2147   forwarders { };
2148   allow-query { internals; };
2149   allow-transfer { internals; }
2150 };
2151
2152 zone "site2.internal" {
2153   type slave;
2154   file "s/site2.internal";
2155   masters { 172.16.72.3; };
2156   forwarders { };
2157   allow-query { internals };
2158   allow-transfer { internals; }
2159 };
2160 </programlisting>
2161
2162       <para>
2163         External (bastion host) DNS server config:
2164       </para>
2165
2166 <programlisting>
2167 acl internals { 172.16.72.0/24; 192.168.1.0/24; };
2168
2169 acl externals { bastion-ips-go-here; };
2170
2171 options {
2172   ...
2173   ...
2174   // sample allow-transfer (no one)
2175   allow-transfer { none; };
2176   // default query access
2177   allow-query { any; };
2178   // restrict cache access
2179   allow-query-cache { internals; externals; };
2180   // restrict recursion
2181   allow-recursion { internals; externals; };
2182   ...
2183   ...
2184 };
2185
2186 // sample slave zone
2187 zone "site1.example.com" {
2188   type master;
2189   file "m/site1.foo.com";
2190   allow-transfer { internals; externals; };
2191 };
2192
2193 zone "site2.example.com" {
2194   type slave;
2195   file "s/site2.foo.com";
2196   masters { another_bastion_host_maybe; };
2197   allow-transfer { internals; externals; }
2198 };
2199 </programlisting>
2200
2201       <para>
2202         In the <filename>resolv.conf</filename> (or equivalent) on
2203         the bastion host(s):
2204       </para>
2205
2206 <programlisting>
2207 search ...
2208 nameserver 172.16.72.2
2209 nameserver 172.16.72.3
2210 nameserver 172.16.72.4
2211 </programlisting>
2212
2213      </sect2>
2214     </sect1>
2215     <sect1 id="tsig">
2216       <title>TSIG</title>
2217       <para>
2218         This is a short guide to setting up Transaction SIGnatures
2219         (TSIG) based transaction security in <acronym>BIND</acronym>. It describes changes
2220         to the configuration file as well as what changes are required for
2221         different features, including the process of creating transaction
2222         keys and using transaction signatures with <acronym>BIND</acronym>.
2223       </para>
2224       <para>
2225         <acronym>BIND</acronym> primarily supports TSIG for server
2226         to server communication.
2227         This includes zone transfer, notify, and recursive query messages.
2228         Resolvers based on newer versions of <acronym>BIND</acronym> 8 have limited support
2229         for TSIG.
2230       </para>
2231
2232       <para>
2233         TSIG can also be useful for dynamic update. A primary
2234         server for a dynamic zone should control access to the dynamic
2235         update service, but IP-based access control is insufficient.
2236         The cryptographic access control provided by TSIG
2237         is far superior. The <command>nsupdate</command>
2238         program supports TSIG via the <option>-k</option> and
2239         <option>-y</option> command line options or inline by use
2240         of the <command>key</command>.
2241       </para>
2242
2243       <sect2>
2244         <title>Generate Shared Keys for Each Pair of Hosts</title>
2245         <para>
2246           A shared secret is generated to be shared between <emphasis>host1</emphasis> and <emphasis>host2</emphasis>.
2247           An arbitrary key name is chosen: "host1-host2.". The key name must
2248           be the same on both hosts.
2249         </para>
2250         <sect3>
2251           <title>Automatic Generation</title>
2252           <para>
2253             The following command will generate a 128-bit (16 byte) HMAC-SHA256
2254             key as described above. Longer keys are better, but shorter keys
2255             are easier to read. Note that the maximum key length is the digest
2256             length, here 256 bits.
2257           </para>
2258           <para>
2259             <userinput>dnssec-keygen -a hmac-sha256 -b 128 -n HOST host1-host2.</userinput>
2260           </para>
2261           <para>
2262             The key is in the file <filename>Khost1-host2.+163+00000.private</filename>.
2263             Nothing directly uses this file, but the base-64 encoded string
2264             following "<literal>Key:</literal>"
2265             can be extracted from the file and used as a shared secret:
2266           </para>
2267           <programlisting>Key: La/E5CjG9O+os1jq0a2jdA==</programlisting>
2268           <para>
2269             The string "<literal>La/E5CjG9O+os1jq0a2jdA==</literal>" can
2270             be used as the shared secret.
2271           </para>
2272         </sect3>
2273         <sect3>
2274           <title>Manual Generation</title>
2275           <para>
2276             The shared secret is simply a random sequence of bits, encoded
2277             in base-64. Most ASCII strings are valid base-64 strings (assuming
2278             the length is a multiple of 4 and only valid characters are used),
2279             so the shared secret can be manually generated.
2280           </para>
2281           <para>
2282             Also, a known string can be run through <command>mmencode</command> or
2283             a similar program to generate base-64 encoded data.
2284           </para>
2285         </sect3>
2286       </sect2>
2287       <sect2>
2288         <title>Copying the Shared Secret to Both Machines</title>
2289         <para>
2290           This is beyond the scope of DNS. A secure transport mechanism
2291           should be used. This could be secure FTP, ssh, telephone, etc.
2292         </para>
2293       </sect2>
2294       <sect2>
2295         <title>Informing the Servers of the Key's Existence</title>
2296         <para>
2297           Imagine <emphasis>host1</emphasis> and <emphasis>host 2</emphasis>
2298           are
2299           both servers. The following is added to each server's <filename>named.conf</filename> file:
2300         </para>
2301
2302 <programlisting>
2303 key host1-host2. {
2304   algorithm hmac-sha256;
2305   secret "La/E5CjG9O+os1jq0a2jdA==";
2306 };
2307 </programlisting>
2308
2309         <para>
2310           The secret is the one generated above. Since this is a secret, it
2311           is recommended that either <filename>named.conf</filename> be
2312           non-world readable, or the key directive be added to a non-world
2313           readable file that is included by <filename>named.conf</filename>.
2314         </para>
2315         <para>
2316           At this point, the key is recognized. This means that if the
2317           server receives a message signed by this key, it can verify the
2318           signature. If the signature is successfully verified, the
2319           response is signed by the same key.
2320         </para>
2321       </sect2>
2322
2323       <sect2>
2324         <title>Instructing the Server to Use the Key</title>
2325         <para>
2326           Since keys are shared between two hosts only, the server must
2327           be told when keys are to be used. The following is added to the <filename>named.conf</filename> file
2328           for <emphasis>host1</emphasis>, if the IP address of <emphasis>host2</emphasis> is
2329           10.1.2.3:
2330         </para>
2331
2332 <programlisting>
2333 server 10.1.2.3 {
2334   keys { host1-host2. ;};
2335 };
2336 </programlisting>
2337
2338         <para>
2339           Multiple keys may be present, but only the first is used.
2340           This directive does not contain any secrets, so it may be in a
2341           world-readable
2342           file.
2343         </para>
2344         <para>
2345           If <emphasis>host1</emphasis> sends a message that is a request
2346           to that address, the message will be signed with the specified key. <emphasis>host1</emphasis> will
2347           expect any responses to signed messages to be signed with the same
2348           key.
2349         </para>
2350         <para>
2351           A similar statement must be present in <emphasis>host2</emphasis>'s
2352           configuration file (with <emphasis>host1</emphasis>'s address) for <emphasis>host2</emphasis> to
2353           sign request messages to <emphasis>host1</emphasis>.
2354         </para>
2355       </sect2>
2356       <sect2>
2357         <title>TSIG Key Based Access Control</title>
2358         <para>
2359           <acronym>BIND</acronym> allows IP addresses and ranges
2360           to be specified in ACL
2361           definitions and
2362           <command>allow-{ query | transfer | update }</command>
2363           directives.
2364           This has been extended to allow TSIG keys also. The above key would
2365           be denoted <command>key host1-host2.</command>
2366         </para>
2367         <para>
2368           An example of an <command>allow-update</command> directive would be:
2369         </para>
2370
2371 <programlisting>
2372 allow-update { key host1-host2. ;};
2373 </programlisting>
2374
2375         <para>
2376           This allows dynamic updates to succeed only if the request
2377           was signed by a key named "<command>host1-host2.</command>".
2378         </para>
2379
2380         <para>
2381           See <xref linkend="dynamic_update_policies"/> for a discussion of
2382           the more flexible <command>update-policy</command> statement.
2383         </para>
2384
2385       </sect2>
2386       <sect2>
2387         <title>Errors</title>
2388
2389         <para>
2390           The processing of TSIG signed messages can result in
2391           several errors. If a signed message is sent to a non-TSIG aware
2392           server, a FORMERR (format error) will be returned, since the server will not
2393           understand the record. This is a result of misconfiguration,
2394           since the server must be explicitly configured to send a TSIG
2395           signed message to a specific server.
2396         </para>
2397
2398         <para>
2399           If a TSIG aware server receives a message signed by an
2400           unknown key, the response will be unsigned with the TSIG
2401           extended error code set to BADKEY. If a TSIG aware server
2402           receives a message with a signature that does not validate, the
2403           response will be unsigned with the TSIG extended error code set
2404           to BADSIG. If a TSIG aware server receives a message with a time
2405           outside of the allowed range, the response will be signed with
2406           the TSIG extended error code set to BADTIME, and the time values
2407           will be adjusted so that the response can be successfully
2408           verified. In any of these cases, the message's rcode (response code) is set to
2409           NOTAUTH (not authenticated).
2410         </para>
2411
2412       </sect2>
2413     </sect1>
2414     <sect1>
2415       <title>TKEY</title>
2416
2417       <para><command>TKEY</command>
2418         is a mechanism for automatically generating a shared secret
2419         between two hosts.  There are several "modes" of
2420         <command>TKEY</command> that specify how the key is generated
2421         or assigned.  <acronym>BIND</acronym> 9 implements only one of
2422         these modes, the Diffie-Hellman key exchange.  Both hosts are
2423         required to have a Diffie-Hellman KEY record (although this
2424         record is not required to be present in a zone).  The
2425         <command>TKEY</command> process must use signed messages,
2426         signed either by TSIG or SIG(0).  The result of
2427         <command>TKEY</command> is a shared secret that can be used to
2428         sign messages with TSIG.  <command>TKEY</command> can also be
2429         used to delete shared secrets that it had previously
2430         generated.
2431       </para>
2432
2433       <para>
2434         The <command>TKEY</command> process is initiated by a
2435         client
2436         or server by sending a signed <command>TKEY</command>
2437         query
2438         (including any appropriate KEYs) to a TKEY-aware server.  The
2439         server response, if it indicates success, will contain a
2440         <command>TKEY</command> record and any appropriate keys.
2441         After
2442         this exchange, both participants have enough information to
2443         determine the shared secret; the exact process depends on the
2444         <command>TKEY</command> mode.  When using the
2445         Diffie-Hellman
2446         <command>TKEY</command> mode, Diffie-Hellman keys are
2447         exchanged,
2448         and the shared secret is derived by both participants.
2449       </para>
2450
2451     </sect1>
2452     <sect1>
2453       <title>SIG(0)</title>
2454
2455       <para>
2456         <acronym>BIND</acronym> 9 partially supports DNSSEC SIG(0)
2457             transaction signatures as specified in RFC 2535 and RFC 2931.
2458         SIG(0)
2459         uses public/private keys to authenticate messages.  Access control
2460         is performed in the same manner as TSIG keys; privileges can be
2461         granted or denied based on the key name.
2462       </para>
2463
2464       <para>
2465         When a SIG(0) signed message is received, it will only be
2466         verified if the key is known and trusted by the server; the server
2467         will not attempt to locate and/or validate the key.
2468       </para>
2469
2470       <para>
2471         SIG(0) signing of multiple-message TCP streams is not
2472         supported.
2473       </para>
2474
2475       <para>
2476         The only tool shipped with <acronym>BIND</acronym> 9 that
2477         generates SIG(0) signed messages is <command>nsupdate</command>.
2478       </para>
2479
2480     </sect1>
2481     <sect1 id="DNSSEC">
2482       <title>DNSSEC</title>
2483
2484       <para>
2485         Cryptographic authentication of DNS information is possible
2486         through the DNS Security (<emphasis>DNSSEC-bis</emphasis>) extensions,
2487         defined in RFC 4033, RFC 4034, and RFC 4035.
2488         This section describes the creation and use of DNSSEC signed zones.
2489       </para>
2490
2491       <para>
2492         In order to set up a DNSSEC secure zone, there are a series
2493         of steps which must be followed.  <acronym>BIND</acronym>
2494         9 ships
2495         with several tools
2496         that are used in this process, which are explained in more detail
2497         below.  In all cases, the <option>-h</option> option prints a
2498         full list of parameters.  Note that the DNSSEC tools require the
2499         keyset files to be in the working directory or the
2500         directory specified by the <option>-d</option> option, and
2501         that the tools shipped with BIND 9.2.x and earlier are not compatible
2502         with the current ones.
2503       </para>
2504
2505       <para>
2506         There must also be communication with the administrators of
2507         the parent and/or child zone to transmit keys.  A zone's security
2508         status must be indicated by the parent zone for a DNSSEC capable
2509         resolver to trust its data.  This is done through the presence
2510         or absence of a <literal>DS</literal> record at the
2511         delegation
2512         point.
2513       </para>
2514
2515       <para>
2516         For other servers to trust data in this zone, they must
2517         either be statically configured with this zone's zone key or the
2518         zone key of another zone above this one in the DNS tree.
2519       </para>
2520
2521       <sect2>
2522         <title>Generating Keys</title>
2523
2524         <para>
2525           The <command>dnssec-keygen</command> program is used to
2526           generate keys.
2527         </para>
2528
2529         <para>
2530           A secure zone must contain one or more zone keys.  The
2531           zone keys will sign all other records in the zone, as well as
2532           the zone keys of any secure delegated zones.  Zone keys must
2533           have the same name as the zone, a name type of
2534           <command>ZONE</command>, and must be usable for
2535           authentication.
2536           It is recommended that zone keys use a cryptographic algorithm
2537           designated as "mandatory to implement" by the IETF; currently
2538           the only one is RSASHA1.
2539         </para>
2540
2541         <para>
2542           The following command will generate a 768-bit RSASHA1 key for
2543           the <filename>child.example</filename> zone:
2544         </para>
2545
2546         <para>
2547           <userinput>dnssec-keygen -a RSASHA1 -b 768 -n ZONE child.example.</userinput>
2548         </para>
2549
2550         <para>
2551           Two output files will be produced:
2552           <filename>Kchild.example.+005+12345.key</filename> and
2553           <filename>Kchild.example.+005+12345.private</filename>
2554           (where
2555           12345 is an example of a key tag).  The key filenames contain
2556           the key name (<filename>child.example.</filename>),
2557           algorithm (3
2558           is DSA, 1 is RSAMD5, 5 is RSASHA1, etc.), and the key tag (12345 in
2559           this case).
2560           The private key (in the <filename>.private</filename>
2561           file) is
2562           used to generate signatures, and the public key (in the
2563           <filename>.key</filename> file) is used for signature
2564           verification.
2565         </para>
2566
2567         <para>
2568           To generate another key with the same properties (but with
2569           a different key tag), repeat the above command.
2570         </para>
2571
2572         <para>
2573           The <command>dnssec-keyfromlabel</command> program is used
2574           to get a key pair from a crypto hardware and build the key
2575           files. Its usage is similar to <command>dnssec-keygen</command>.
2576         </para>
2577
2578         <para>
2579           The public keys should be inserted into the zone file by
2580           including the <filename>.key</filename> files using
2581           <command>$INCLUDE</command> statements.
2582         </para>
2583
2584       </sect2>
2585       <sect2>
2586         <title>Signing the Zone</title>
2587
2588         <para>
2589           The <command>dnssec-signzone</command> program is used
2590           to sign a zone.
2591         </para>
2592
2593         <para>
2594           Any <filename>keyset</filename> files corresponding to
2595           secure subzones should be present.  The zone signer will
2596           generate <literal>NSEC</literal>, <literal>NSEC3</literal>
2597           and <literal>RRSIG</literal> records for the zone, as
2598           well as <literal>DS</literal> for the child zones if
2599           <literal>'-g'</literal> is specified.  If <literal>'-g'</literal>
2600           is not specified, then DS RRsets for the secure child
2601           zones need to be added manually.
2602         </para>
2603
2604         <para>
2605           The following command signs the zone, assuming it is in a
2606           file called <filename>zone.child.example</filename>.  By
2607                 default, all zone keys which have an available private key are
2608                 used to generate signatures.
2609         </para>
2610
2611         <para>
2612           <userinput>dnssec-signzone -o child.example zone.child.example</userinput>
2613         </para>
2614
2615         <para>
2616           One output file is produced:
2617           <filename>zone.child.example.signed</filename>.  This
2618           file
2619           should be referenced by <filename>named.conf</filename>
2620           as the
2621           input file for the zone.
2622         </para>
2623
2624         <para><command>dnssec-signzone</command>
2625           will also produce a keyset and dsset files and optionally a
2626           dlvset file.  These are used to provide the parent zone
2627           administrators with the <literal>DNSKEYs</literal> (or their
2628           corresponding <literal>DS</literal> records) that are the
2629           secure entry point to the zone.
2630         </para>
2631
2632       </sect2>
2633
2634       <sect2>
2635         <title>Configuring Servers</title>
2636
2637         <para>
2638           To enable <command>named</command> to respond appropriately
2639           to DNS requests from DNSSEC aware clients,
2640           <command>dnssec-enable</command> must be set to yes.
2641           (This is the default setting.)
2642         </para>
2643
2644         <para>
2645           To enable <command>named</command> to validate answers from
2646           other servers, the <command>dnssec-enable</command> option
2647           must be set to <userinput>yes</userinput>, and the
2648           <command>dnssec-validation</command> options must be set to 
2649           <userinput>yes</userinput> or <userinput>auto</userinput>.
2650         </para>
2651           
2652         <para>
2653           If <command>dnssec-validation</command> is set to
2654           <userinput>auto</userinput>, then a default
2655           trust anchor for the DNS root zone will be used.
2656           If it is set to <userinput>yes</userinput>, however,
2657           then at least one trust anchor must be configured
2658           with a <command>trusted-keys</command> or
2659           <command>managed-keys</command> statement in
2660           <filename>named.conf</filename>, or DNSSEC validation
2661           will not occur.  The default setting is
2662           <userinput>yes</userinput>.
2663         </para>
2664           
2665         <para>
2666           <command>trusted-keys</command> are copies of DNSKEY RRs
2667           for zones that are used to form the first link in the
2668           cryptographic chain of trust.  All keys listed in
2669           <command>trusted-keys</command> (and corresponding zones)
2670           are deemed to exist and only the listed keys will be used
2671           to validated the DNSKEY RRset that they are from.
2672         </para>
2673
2674         <para>
2675           <command>managed-keys</command> are trusted keys which are
2676           automatically kept up to date via RFC 5011 trust anchor
2677           maintenance.
2678         </para>
2679
2680         <para>
2681           <command>trusted-keys</command> and
2682           <command>managed-keys</command> are described in more detail
2683           later in this document.
2684         </para>
2685
2686         <para>
2687           Unlike <acronym>BIND</acronym> 8, <acronym>BIND</acronym>
2688           9 does not verify signatures on load, so zone keys for
2689           authoritative zones do not need to be specified in the
2690           configuration file.
2691         </para>
2692
2693         <para>
2694           After DNSSEC gets established, a typical DNSSEC configuration
2695           will look something like the following.  It has one or
2696           more public keys for the root.  This allows answers from
2697           outside the organization to be validated.  It will also
2698           have several keys for parts of the namespace the organization
2699           controls.  These are here to ensure that <command>named</command>
2700           is immune to compromises in the DNSSEC components of the security
2701           of parent zones.
2702         </para>
2703
2704 <programlisting>
2705 managed-keys {
2706         /* Root Key */
2707         "." initial-key 257 3 3 "BNY4wrWM1nCfJ+CXd0rVXyYmobt7sEEfK3clRbGaTwS
2708                                  JxrGkxJWoZu6I7PzJu/E9gx4UC1zGAHlXKdE4zYIpRh
2709                                  aBKnvcC2U9mZhkdUpd1Vso/HAdjNe8LmMlnzY3zy2Xy
2710                                  4klWOADTPzSv9eamj8V18PHGjBLaVtYvk/ln5ZApjYg
2711                                  hf+6fElrmLkdaz MQ2OCnACR817DF4BBa7UR/beDHyp
2712                                  5iWTXWSi6XmoJLbG9Scqc7l70KDqlvXR3M/lUUVRbke
2713                                  g1IPJSidmK3ZyCllh4XSKbje/45SKucHgnwU5jefMtq
2714                                  66gKodQj+MiA21AfUVe7u99WzTLzY3qlxDhxYQQ20FQ
2715                                  97S+LKUTpQcq27R7AT3/V5hRQxScINqwcz4jYqZD2fQ
2716                                  dgxbcDTClU0CRBdiieyLMNzXG3";
2717 };
2718
2719 trusted-keys {
2720         /* Key for our organization's forward zone */
2721         example.com. 257 3 5 "AwEAAaxPMcR2x0HbQV4WeZB6oEDX+r0QM6
2722                               5KbhTjrW1ZaARmPhEZZe3Y9ifgEuq7vZ/z
2723                               GZUdEGNWy+JZzus0lUptwgjGwhUS1558Hb
2724                               4JKUbbOTcM8pwXlj0EiX3oDFVmjHO444gL
2725                               kBOUKUf/mC7HvfwYH/Be22GnClrinKJp1O
2726                               g4ywzO9WglMk7jbfW33gUKvirTHr25GL7S
2727                               TQUzBb5Usxt8lgnyTUHs1t3JwCY5hKZ6Cq
2728                               FxmAVZP20igTixin/1LcrgX/KMEGd/biuv
2729                               F4qJCyduieHukuY3H4XMAcR+xia2nIUPvm
2730                               /oyWR8BW/hWdzOvnSCThlHf3xiYleDbt/o
2731                               1OTQ09A0=";
2732
2733         /* Key for our reverse zone. */
2734         2.0.192.IN-ADDRPA.NET. 257 3 5 "AQOnS4xn/IgOUpBPJ3bogzwc
2735                                        xOdNax071L18QqZnQQQAVVr+i
2736                                        LhGTnNGp3HoWQLUIzKrJVZ3zg
2737                                        gy3WwNT6kZo6c0tszYqbtvchm
2738                                        gQC8CzKojM/W16i6MG/eafGU3
2739                                        siaOdS0yOI6BgPsw+YZdzlYMa
2740                                        IJGf4M4dyoKIhzdZyQ2bYQrjy
2741                                        Q4LB0lC7aOnsMyYKHHYeRvPxj
2742                                        IQXmdqgOJGq+vsevG06zW+1xg
2743                                        YJh9rCIfnm1GX/KMgxLPG2vXT
2744                                        D/RnLX+D3T3UL7HJYHJhAZD5L
2745                                        59VvjSPsZJHeDCUyWYrvPZesZ
2746                                        DIRvhDD52SKvbheeTJUm6Ehkz
2747                                        ytNN2SN96QRk8j/iI8ib";
2748 };
2749
2750 options {
2751         ...
2752         dnssec-enable yes;
2753         dnssec-validation yes;
2754 };
2755 </programlisting>
2756
2757         <note>
2758           None of the keys listed in this example are valid.  In particular,
2759           the root key is not valid.
2760         </note>
2761
2762         <para>
2763           When DNSSEC validation is enabled and properly configured,
2764           the resolver will reject any answers from signed, secure zones
2765           which fail to validate, and will return SERVFAIL to the client.
2766         </para>
2767
2768         <para>
2769           Responses may fail to validate for any of several reasons,
2770           including missing, expired, or invalid signatures, a key which
2771           does not match the DS RRset in the parent zone, or an insecure
2772           response from a zone which, according to its parent, should have
2773           been secure.  
2774         </para>
2775
2776         <note>
2777           <para>
2778             When the validator receives a response from an unsigned zone
2779             that has a signed parent, it must confirm with the parent
2780             that the zone was intentionally left unsigned.  It does
2781             this by verifying, via signed and validated NSEC/NSEC3 records,
2782             that the parent zone contains no DS records for the child.
2783           </para>
2784           <para>
2785             If the validator <emphasis>can</emphasis> prove that the zone
2786             is insecure, then the response is accepted.  However, if it
2787             cannot, then it must assume an insecure response to be a
2788             forgery; it rejects the response and logs an error.
2789           </para>
2790           <para>
2791             The logged error reads "insecurity proof failed" and
2792             "got insecure response; parent indicates it should be secure".
2793             (Prior to BIND 9.7, the logged error was "not insecure".
2794             This referred to the zone, not the response.)
2795           </para>
2796         </note>
2797       </sect2>
2798
2799     </sect1>
2800
2801     <xi:include href="dnssec.xml"/>
2802
2803     <xi:include href="managed-keys.xml"/>
2804
2805     <xi:include href="pkcs11.xml"/>
2806
2807     <sect1>
2808       <title>IPv6 Support in <acronym>BIND</acronym> 9</title>
2809
2810       <para>
2811         <acronym>BIND</acronym> 9 fully supports all currently
2812         defined forms of IPv6 name to address and address to name
2813         lookups.  It will also use IPv6 addresses to make queries when
2814         running on an IPv6 capable system.
2815       </para>
2816
2817       <para>
2818         For forward lookups, <acronym>BIND</acronym> 9 supports
2819         only AAAA records.  RFC 3363 deprecated the use of A6 records,
2820         and client-side support for A6 records was accordingly removed
2821         from <acronym>BIND</acronym> 9.
2822         However, authoritative <acronym>BIND</acronym> 9 name servers still
2823         load zone files containing A6 records correctly, answer queries
2824         for A6 records, and accept zone transfer for a zone containing A6
2825         records.
2826       </para>
2827
2828       <para>
2829         For IPv6 reverse lookups, <acronym>BIND</acronym> 9 supports
2830         the traditional "nibble" format used in the
2831         <emphasis>ip6.arpa</emphasis> domain, as well as the older, deprecated
2832         <emphasis>ip6.int</emphasis> domain.
2833         Older versions of <acronym>BIND</acronym> 9 
2834         supported the "binary label" (also known as "bitstring") format,
2835         but support of binary labels has been completely removed per
2836         RFC 3363.
2837         Many applications in <acronym>BIND</acronym> 9 do not understand
2838         the binary label format at all any more, and will return an
2839         error if given.
2840         In particular, an authoritative <acronym>BIND</acronym> 9
2841         name server will not load a zone file containing binary labels.
2842       </para>
2843
2844       <para>
2845         For an overview of the format and structure of IPv6 addresses,
2846         see <xref linkend="ipv6addresses"/>.
2847       </para>
2848
2849       <sect2>
2850         <title>Address Lookups Using AAAA Records</title>
2851
2852         <para>
2853           The IPv6 AAAA record is a parallel to the IPv4 A record,
2854           and, unlike the deprecated A6 record, specifies the entire
2855           IPv6 address in a single record.  For example,
2856         </para>
2857
2858 <programlisting>
2859 $ORIGIN example.com.
2860 host            3600    IN      AAAA    2001:db8::1
2861 </programlisting>
2862
2863         <para>
2864           Use of IPv4-in-IPv6 mapped addresses is not recommended.
2865           If a host has an IPv4 address, use an A record, not
2866           a AAAA, with <literal>::ffff:192.168.42.1</literal> as
2867           the address.
2868         </para>
2869       </sect2>
2870       <sect2>
2871         <title>Address to Name Lookups Using Nibble Format</title>
2872
2873         <para>
2874           When looking up an address in nibble format, the address
2875           components are simply reversed, just as in IPv4, and
2876           <literal>ip6.arpa.</literal> is appended to the
2877           resulting name.
2878           For example, the following would provide reverse name lookup for
2879           a host with address
2880           <literal>2001:db8::1</literal>.
2881         </para>
2882
2883 <programlisting>
2884 $ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
2885 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  14400   IN    PTR    (
2886                                     host.example.com. )
2887 </programlisting>
2888
2889       </sect2>
2890     </sect1>
2891   </chapter>
2892
2893   <chapter id="Bv9ARM.ch05">
2894     <title>The <acronym>BIND</acronym> 9 Lightweight Resolver</title>
2895     <sect1>
2896       <title>The Lightweight Resolver Library</title>
2897       <para>
2898         Traditionally applications have been linked with a stub resolver
2899         library that sends recursive DNS queries to a local caching name
2900         server.
2901       </para>
2902       <para>
2903         IPv6 once introduced new complexity into the resolution process,
2904         such as following A6 chains and DNAME records, and simultaneous
2905         lookup of IPv4 and IPv6 addresses.  Though most of the complexity was
2906         then removed, these are hard or impossible
2907         to implement in a traditional stub resolver.
2908       </para>
2909       <para>
2910         <acronym>BIND</acronym> 9 therefore can also provide resolution
2911         services to local clients
2912         using a combination of a lightweight resolver library and a resolver
2913         daemon process running on the local host.  These communicate using
2914         a simple UDP-based protocol, the "lightweight resolver protocol"
2915         that is distinct from and simpler than the full DNS protocol.
2916       </para>
2917     </sect1>
2918     <sect1 id="lwresd">
2919       <title>Running a Resolver Daemon</title>
2920
2921       <para>
2922         To use the lightweight resolver interface, the system must
2923         run the resolver daemon <command>lwresd</command> or a
2924         local
2925         name server configured with a <command>lwres</command>
2926         statement.
2927       </para>
2928
2929       <para>
2930         By default, applications using the lightweight resolver library will
2931         make
2932         UDP requests to the IPv4 loopback address (127.0.0.1) on port 921.
2933         The
2934         address can be overridden by <command>lwserver</command>
2935         lines in
2936         <filename>/etc/resolv.conf</filename>.
2937       </para>
2938
2939       <para>
2940         The daemon currently only looks in the DNS, but in the future
2941         it may use other sources such as <filename>/etc/hosts</filename>,
2942         NIS, etc.
2943       </para>
2944
2945       <para>
2946         The <command>lwresd</command> daemon is essentially a
2947         caching-only name server that responds to requests using the
2948         lightweight
2949         resolver protocol rather than the DNS protocol.  Because it needs
2950         to run on each host, it is designed to require no or minimal
2951         configuration.
2952         Unless configured otherwise, it uses the name servers listed on
2953         <command>nameserver</command> lines in <filename>/etc/resolv.conf</filename>
2954         as forwarders, but is also capable of doing the resolution
2955         autonomously if
2956         none are specified.
2957       </para>
2958       <para>
2959         The <command>lwresd</command> daemon may also be
2960         configured with a
2961         <filename>named.conf</filename> style configuration file,
2962         in
2963         <filename>/etc/lwresd.conf</filename> by default.  A name
2964         server may also
2965         be configured to act as a lightweight resolver daemon using the
2966         <command>lwres</command> statement in <filename>named.conf</filename>.
2967       </para>
2968
2969     </sect1>
2970   </chapter>
2971
2972   <chapter id="Bv9ARM.ch06">
2973     <title><acronym>BIND</acronym> 9 Configuration Reference</title>
2974
2975     <para>
2976       <acronym>BIND</acronym> 9 configuration is broadly similar
2977       to <acronym>BIND</acronym> 8; however, there are a few new
2978       areas
2979       of configuration, such as views. <acronym>BIND</acronym>
2980       8 configuration files should work with few alterations in <acronym>BIND</acronym>
2981       9, although more complex configurations should be reviewed to check
2982       if they can be more efficiently implemented using the new features
2983       found in <acronym>BIND</acronym> 9.
2984     </para>
2985
2986     <para>
2987       <acronym>BIND</acronym> 4 configuration files can be
2988       converted to the new format
2989       using the shell script
2990       <filename>contrib/named-bootconf/named-bootconf.sh</filename>.
2991     </para>
2992     <sect1 id="configuration_file_elements">
2993       <title>Configuration File Elements</title>
2994       <para>
2995         Following is a list of elements used throughout the <acronym>BIND</acronym> configuration
2996         file documentation:
2997       </para>
2998       <informaltable colsep="0" rowsep="0">
2999         <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="2Level-table">
3000           <colspec colname="1" colnum="1" colsep="0" colwidth="1.855in"/>
3001           <colspec colname="2" colnum="2" colsep="0" colwidth="3.770in"/>
3002           <tbody>
3003             <row rowsep="0">
3004               <entry colname="1">
3005                 <para>
3006                   <varname>acl_name</varname>
3007                 </para>
3008               </entry>
3009               <entry colname="2">
3010                 <para>
3011                   The name of an <varname>address_match_list</varname> as
3012                   defined by the <command>acl</command> statement.
3013                 </para>
3014               </entry>
3015             </row>
3016             <row rowsep="0">
3017               <entry colname="1">
3018                 <para>
3019                   <varname>address_match_list</varname>
3020                 </para>
3021               </entry>
3022               <entry colname="2">
3023                 <para>
3024                   A list of one or more
3025                   <varname>ip_addr</varname>,
3026                   <varname>ip_prefix</varname>, <varname>key_id</varname>,
3027                   or <varname>acl_name</varname> elements, see
3028                   <xref linkend="address_match_lists"/>.
3029                 </para>
3030               </entry>
3031             </row>
3032             <row rowsep="0">
3033               <entry colname="1">
3034                 <para>
3035                   <varname>masters_list</varname>
3036                 </para>
3037               </entry>
3038               <entry colname="2">
3039                 <para>
3040                   A named list of one or more <varname>ip_addr</varname>
3041                   with optional <varname>key_id</varname> and/or
3042                   <varname>ip_port</varname>.
3043                   A <varname>masters_list</varname> may include other
3044                   <varname>masters_lists</varname>.
3045                 </para>
3046               </entry>
3047             </row>
3048             <row rowsep="0">
3049               <entry colname="1">
3050                 <para>
3051                   <varname>domain_name</varname>
3052                 </para>
3053               </entry>
3054               <entry colname="2">
3055                 <para>
3056                   A quoted string which will be used as
3057                   a DNS name, for example "<literal>my.test.domain</literal>".
3058                 </para>
3059               </entry>
3060             </row>
3061             <row rowsep="0">
3062               <entry colname="1">
3063                 <para>
3064                   <varname>namelist</varname>
3065                 </para>
3066               </entry>
3067               <entry colname="2">
3068                 <para>
3069                   A list of one or more <varname>domain_name</varname>
3070                   elements.
3071                 </para>
3072               </entry>
3073             </row>
3074             <row rowsep="0">
3075               <entry colname="1">
3076                 <para>
3077                   <varname>dotted_decimal</varname>
3078                 </para>
3079               </entry>
3080               <entry colname="2">
3081                 <para>
3082                   One to four integers valued 0 through
3083                   255 separated by dots (`.'), such as <command>123</command>,
3084                   <command>45.67</command> or <command>89.123.45.67</command>.
3085                 </para>
3086               </entry>
3087             </row>
3088             <row rowsep="0">
3089               <entry colname="1">
3090                 <para>
3091                   <varname>ip4_addr</varname>
3092                 </para>
3093               </entry>
3094               <entry colname="2">
3095                 <para>
3096                   An IPv4 address with exactly four elements
3097                   in <varname>dotted_decimal</varname> notation.
3098                 </para>
3099               </entry>
3100             </row>
3101             <row rowsep="0">
3102               <entry colname="1">
3103                 <para>
3104                   <varname>ip6_addr</varname>
3105                 </para>
3106               </entry>
3107               <entry colname="2">
3108                 <para>
3109                   An IPv6 address, such as <command>2001:db8::1234</command>.
3110                   IPv6 scoped addresses that have ambiguity on their
3111                   scope zones must be disambiguated by an appropriate
3112                   zone ID with the percent character (`%') as
3113                   delimiter.  It is strongly recommended to use
3114                   string zone names rather than numeric identifiers,
3115                   in order to be robust against system configuration
3116                   changes.  However, since there is no standard
3117                   mapping for such names and identifier values,
3118                   currently only interface names as link identifiers
3119                   are supported, assuming one-to-one mapping between
3120                   interfaces and links.  For example, a link-local
3121                   address <command>fe80::1</command> on the link
3122                   attached to the interface <command>ne0</command>
3123                   can be specified as <command>fe80::1%ne0</command>.
3124                   Note that on most systems link-local addresses
3125                   always have the ambiguity, and need to be
3126                   disambiguated.
3127                 </para>
3128               </entry>
3129             </row>
3130             <row rowsep="0">
3131               <entry colname="1">
3132                 <para>
3133                   <varname>ip_addr</varname>
3134                 </para>
3135               </entry>
3136               <entry colname="2">
3137                 <para>
3138                   An <varname>ip4_addr</varname> or <varname>ip6_addr</varname>.
3139                 </para>
3140               </entry>
3141             </row>
3142             <row rowsep="0">
3143               <entry colname="1">
3144                 <para>
3145                   <varname>ip_port</varname>
3146                 </para>
3147               </entry>
3148               <entry colname="2">
3149                 <para>
3150                   An IP port <varname>number</varname>.
3151                   The <varname>number</varname> is limited to 0
3152                   through 65535, with values
3153                   below 1024 typically restricted to use by processes running
3154                   as root.
3155                   In some cases, an asterisk (`*') character can be used as a
3156                   placeholder to
3157                   select a random high-numbered port.
3158                 </para>
3159               </entry>
3160             </row>
3161             <row rowsep="0">
3162               <entry colname="1">
3163                 <para>
3164                   <varname>ip_prefix</varname>
3165                 </para>
3166               </entry>
3167               <entry colname="2">
3168                 <para>
3169                   An IP network specified as an <varname>ip_addr</varname>,
3170                   followed by a slash (`/') and then the number of bits in the
3171                   netmask.
3172                   Trailing zeros in a <varname>ip_addr</varname>
3173                   may omitted.
3174                   For example, <command>127/8</command> is the
3175                   network <command>127.0.0.0</command> with
3176                   netmask <command>255.0.0.0</command> and <command>1.2.3.0/28</command> is
3177                   network <command>1.2.3.0</command> with netmask <command>255.255.255.240</command>.
3178                 </para>
3179                 <para>
3180                   When specifying a prefix involving a IPv6 scoped address
3181                   the scope may be omitted.  In that case the prefix will
3182                   match packets from any scope.
3183                 </para>
3184               </entry>
3185             </row>
3186             <row rowsep="0">
3187               <entry colname="1">
3188                 <para>
3189                   <varname>key_id</varname>
3190                 </para>
3191               </entry>
3192               <entry colname="2">
3193                 <para>
3194                   A <varname>domain_name</varname> representing
3195                   the name of a shared key, to be used for transaction
3196                   security.
3197                 </para>
3198               </entry>
3199             </row>
3200             <row rowsep="0">
3201               <entry colname="1">
3202                 <para>
3203                   <varname>key_list</varname>
3204                 </para>
3205               </entry>
3206               <entry colname="2">
3207                 <para>
3208                   A list of one or more
3209                   <varname>key_id</varname>s,
3210                   separated by semicolons and ending with a semicolon.
3211                 </para>
3212               </entry>
3213             </row>
3214             <row rowsep="0">
3215               <entry colname="1">
3216                 <para>
3217                   <varname>number</varname>
3218                 </para>
3219               </entry>
3220               <entry colname="2">
3221                 <para>
3222                   A non-negative 32-bit integer
3223                   (i.e., a number between 0 and 4294967295, inclusive).
3224                   Its acceptable value might further
3225                   be limited by the context in which it is used.
3226                 </para>
3227               </entry>
3228             </row>
3229             <row rowsep="0">
3230               <entry colname="1">
3231                 <para>
3232                   <varname>path_name</varname>
3233                 </para>
3234               </entry>
3235               <entry colname="2">
3236                 <para>
3237                   A quoted string which will be used as
3238                   a pathname, such as <filename>zones/master/my.test.domain</filename>.
3239                 </para>
3240               </entry>
3241             </row>
3242             <row rowsep="0">
3243               <entry colname="1">
3244                 <para>
3245                   <varname>port_list</varname>
3246                 </para>
3247               </entry>
3248               <entry colname="2">
3249                 <para>
3250                   A list of an <varname>ip_port</varname> or a port
3251                   range.
3252                   A port range is specified in the form of
3253                   <userinput>range</userinput> followed by
3254                   two <varname>ip_port</varname>s,
3255                   <varname>port_low</varname> and
3256                   <varname>port_high</varname>, which represents
3257                   port numbers from <varname>port_low</varname> through
3258                   <varname>port_high</varname>, inclusive.
3259                   <varname>port_low</varname> must not be larger than
3260                   <varname>port_high</varname>.
3261                   For example,
3262                   <userinput>range 1024 65535</userinput> represents
3263                   ports from 1024 through 65535.
3264                   In either case an asterisk (`*') character is not
3265                   allowed as a valid <varname>ip_port</varname>.
3266                 </para>
3267               </entry>
3268             </row>
3269             <row rowsep="0">
3270               <entry colname="1">
3271                 <para>
3272                   <varname>size_spec</varname>
3273                 </para>
3274               </entry>
3275               <entry colname="2">
3276                 <para>
3277                   A number, the word <userinput>unlimited</userinput>,
3278                   or the word <userinput>default</userinput>.
3279                 </para>
3280                 <para>
3281                   An <varname>unlimited</varname> <varname>size_spec</varname> requests unlimited
3282                   use, or the maximum available amount. A <varname>default size_spec</varname> uses
3283                   the limit that was in force when the server was started.
3284                 </para>
3285                 <para>
3286                   A <varname>number</varname> can optionally be
3287                   followed by a scaling factor:
3288                   <userinput>K</userinput> or <userinput>k</userinput>
3289                   for kilobytes,
3290                   <userinput>M</userinput> or <userinput>m</userinput>
3291                   for megabytes, and
3292                   <userinput>G</userinput> or <userinput>g</userinput> for gigabytes,
3293                   which scale by 1024, 1024*1024, and 1024*1024*1024
3294                   respectively.
3295                 </para>
3296                 <para>
3297                   The value must be representable as a 64-bit unsigned integer
3298                   (0 to 18446744073709551615, inclusive).
3299                   Using <varname>unlimited</varname> is the best
3300                   way
3301                   to safely set a really large number.
3302                 </para>
3303               </entry>
3304             </row>
3305             <row rowsep="0">
3306               <entry colname="1">
3307                 <para>
3308                   <varname>yes_or_no</varname>
3309                 </para>
3310               </entry>
3311               <entry colname="2">
3312                 <para>
3313                   Either <userinput>yes</userinput> or <userinput>no</userinput>.
3314                   The words <userinput>true</userinput> and <userinput>false</userinput> are
3315                   also accepted, as are the numbers <userinput>1</userinput>
3316                   and <userinput>0</userinput>.
3317                 </para>
3318               </entry>
3319             </row>
3320             <row rowsep="0">
3321               <entry colname="1">
3322                 <para>
3323                   <varname>dialup_option</varname>
3324                 </para>
3325               </entry>
3326               <entry colname="2">
3327                 <para>
3328                   One of <userinput>yes</userinput>,
3329                   <userinput>no</userinput>, <userinput>notify</userinput>,
3330                   <userinput>notify-passive</userinput>, <userinput>refresh</userinput> or
3331                   <userinput>passive</userinput>.
3332                   When used in a zone, <userinput>notify-passive</userinput>,
3333                   <userinput>refresh</userinput>, and <userinput>passive</userinput>
3334                   are restricted to slave and stub zones.
3335                 </para>
3336               </entry>
3337             </row>
3338           </tbody>
3339         </tgroup>
3340       </informaltable>
3341       <sect2 id="address_match_lists">
3342         <title>Address Match Lists</title>
3343         <sect3>
3344           <title>Syntax</title>
3345
3346 <programlisting><varname>address_match_list</varname> = address_match_list_element ;
3347   <optional> address_match_list_element; ... </optional>
3348 <varname>address_match_list_element</varname> = <optional> ! </optional> (ip_address <optional>/length</optional> |
3349    key key_id | acl_name | { address_match_list } )
3350 </programlisting>
3351
3352         </sect3>
3353         <sect3>
3354           <title>Definition and Usage</title>
3355           <para>
3356             Address match lists are primarily used to determine access
3357             control for various server operations. They are also used in
3358             the <command>listen-on</command> and <command>sortlist</command>
3359             statements. The elements which constitute an address match
3360             list can be any of the following:
3361           </para>
3362           <itemizedlist>
3363             <listitem>
3364               <simpara>an IP address (IPv4 or IPv6)</simpara>
3365             </listitem>
3366             <listitem>
3367               <simpara>an IP prefix (in `/' notation)</simpara>
3368             </listitem>
3369             <listitem>
3370               <simpara>
3371                 a key ID, as defined by the <command>key</command>
3372                 statement
3373               </simpara>
3374             </listitem>
3375             <listitem>
3376               <simpara>the name of an address match list defined with
3377                 the <command>acl</command> statement
3378               </simpara>
3379             </listitem>
3380             <listitem>
3381               <simpara>a nested address match list enclosed in braces</simpara>
3382             </listitem>
3383           </itemizedlist>
3384
3385           <para>
3386             Elements can be negated with a leading exclamation mark (`!'),
3387             and the match list names "any", "none", "localhost", and
3388             "localnets" are predefined. More information on those names
3389             can be found in the description of the acl statement.
3390           </para>
3391
3392           <para>
3393             The addition of the key clause made the name of this syntactic
3394             element something of a misnomer, since security keys can be used
3395             to validate access without regard to a host or network address.
3396             Nonetheless, the term "address match list" is still used
3397             throughout the documentation.
3398           </para>
3399
3400           <para>
3401             When a given IP address or prefix is compared to an address
3402             match list, the comparison takes place in approximately O(1)
3403             time.  However, key comparisons require that the list of keys
3404             be traversed until a matching key is found, and therefore may
3405             be somewhat slower.
3406           </para>
3407
3408           <para>
3409             The interpretation of a match depends on whether the list is being
3410             used for access control, defining <command>listen-on</command> ports, or in a
3411             <command>sortlist</command>, and whether the element was negated.
3412           </para>
3413
3414           <para>
3415             When used as an access control list, a non-negated match
3416             allows access and a negated match denies access. If
3417             there is no match, access is denied. The clauses
3418             <command>allow-notify</command>,
3419             <command>allow-recursion</command>,
3420             <command>allow-recursion-on</command>,
3421             <command>allow-query</command>,
3422             <command>allow-query-on</command>,
3423             <command>allow-query-cache</command>,
3424             <command>allow-query-cache-on</command>,
3425             <command>allow-transfer</command>,
3426             <command>allow-update</command>,
3427             <command>allow-update-forwarding</command>, and
3428             <command>blackhole</command> all use address match
3429             lists.  Similarly, the <command>listen-on</command> option will cause the
3430             server to refuse queries on any of the machine's
3431             addresses which do not match the list.
3432           </para>
3433
3434           <para>
3435             Order of insertion is significant.  If more than one element
3436             in an ACL is found to match a given IP address or prefix,
3437             preference will be given to the one that came
3438             <emphasis>first</emphasis> in the ACL definition.
3439             Because of this first-match behavior, an element that
3440             defines a subset of another element in the list should
3441             come before the broader element, regardless of whether
3442             either is negated. For example, in
3443             <command>1.2.3/24; ! 1.2.3.13;</command>
3444             the 1.2.3.13 element is completely useless because the
3445             algorithm will match any lookup for 1.2.3.13 to the 1.2.3/24
3446             element.  Using <command>! 1.2.3.13; 1.2.3/24</command> fixes
3447             that problem by having 1.2.3.13 blocked by the negation, but
3448             all other 1.2.3.* hosts fall through.
3449           </para>
3450         </sect3>
3451       </sect2>
3452
3453       <sect2>
3454         <title>Comment Syntax</title>
3455
3456         <para>
3457           The <acronym>BIND</acronym> 9 comment syntax allows for
3458           comments to appear
3459           anywhere that whitespace may appear in a <acronym>BIND</acronym> configuration
3460           file. To appeal to programmers of all kinds, they can be written
3461           in the C, C++, or shell/perl style.
3462         </para>
3463
3464         <sect3>
3465           <title>Syntax</title>
3466
3467           <para>
3468             <programlisting>/* This is a <acronym>BIND</acronym> comment as in C */</programlisting>
3469             <programlisting>// This is a <acronym>BIND</acronym> comment as in C++</programlisting>
3470             <programlisting># This is a <acronym>BIND</acronym> comment as in common UNIX shells
3471 # and perl</programlisting>
3472           </para>
3473         </sect3>
3474         <sect3>
3475           <title>Definition and Usage</title>
3476           <para>
3477             Comments may appear anywhere that whitespace may appear in
3478             a <acronym>BIND</acronym> configuration file.
3479           </para>
3480           <para>
3481             C-style comments start with the two characters /* (slash,
3482             star) and end with */ (star, slash). Because they are completely
3483             delimited with these characters, they can be used to comment only
3484             a portion of a line or to span multiple lines.
3485           </para>
3486           <para>
3487             C-style comments cannot be nested. For example, the following
3488             is not valid because the entire comment ends with the first */:
3489           </para>
3490           <para>
3491
3492 <programlisting>/* This is the start of a comment.
3493    This is still part of the comment.
3494 /* This is an incorrect attempt at nesting a comment. */
3495    This is no longer in any comment. */
3496 </programlisting>
3497
3498           </para>
3499
3500           <para>
3501             C++-style comments start with the two characters // (slash,
3502             slash) and continue to the end of the physical line. They cannot
3503             be continued across multiple physical lines; to have one logical
3504             comment span multiple lines, each line must use the // pair.
3505             For example:
3506           </para>
3507           <para>
3508
3509 <programlisting>// This is the start of a comment.  The next line
3510 // is a new comment, even though it is logically
3511 // part of the previous comment.
3512 </programlisting>
3513
3514           </para>
3515           <para>
3516             Shell-style (or perl-style, if you prefer) comments start
3517             with the character <literal>#</literal> (number sign)
3518             and continue to the end of the
3519             physical line, as in C++ comments.
3520             For example:
3521           </para>
3522
3523           <para>
3524
3525 <programlisting># This is the start of a comment.  The next line
3526 # is a new comment, even though it is logically
3527 # part of the previous comment.
3528 </programlisting>
3529
3530           </para>
3531
3532           <warning>
3533             <para>
3534               You cannot use the semicolon (`;') character
3535               to start a comment such as you would in a zone file. The
3536               semicolon indicates the end of a configuration
3537               statement.
3538             </para>
3539           </warning>
3540         </sect3>
3541       </sect2>
3542     </sect1>
3543
3544     <sect1 id="Configuration_File_Grammar">
3545       <title>Configuration File Grammar</title>
3546
3547       <para>
3548         A <acronym>BIND</acronym> 9 configuration consists of
3549         statements and comments.
3550         Statements end with a semicolon. Statements and comments are the
3551         only elements that can appear without enclosing braces. Many
3552         statements contain a block of sub-statements, which are also
3553         terminated with a semicolon.
3554       </para>
3555
3556       <para>
3557         The following statements are supported:
3558       </para>
3559
3560       <informaltable colsep="0" rowsep="0">
3561         <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="2Level-table">
3562           <colspec colname="1" colnum="1" colsep="0" colwidth="1.336in"/>
3563           <colspec colname="2" colnum="2" colsep="0" colwidth="3.778in"/>
3564           <tbody>
3565             <row rowsep="0">
3566               <entry colname="1">
3567                 <para><command>acl</command></para>
3568               </entry>
3569               <entry colname="2">
3570                 <para>
3571                   defines a named IP address
3572                   matching list, for access control and other uses.
3573                 </para>
3574               </entry>
3575             </row>
3576             <row rowsep="0">
3577               <entry colname="1">
3578                 <para><command>controls</command></para>
3579               </entry>
3580               <entry colname="2">
3581                 <para>
3582                   declares control channels to be used
3583                   by the <command>rndc</command> utility.
3584                 </para>
3585               </entry>
3586             </row>
3587             <row rowsep="0">
3588               <entry colname="1">
3589                 <para><command>include</command></para>
3590               </entry>
3591               <entry colname="2">
3592                 <para>
3593                   includes a file.
3594                 </para>
3595               </entry>
3596             </row>
3597             <row rowsep="0">
3598               <entry colname="1">
3599                 <para><command>key</command></para>
3600               </entry>
3601               <entry colname="2">
3602                 <para>
3603                   specifies key information for use in
3604                   authentication and authorization using TSIG.
3605                 </para>
3606               </entry>
3607             </row>
3608             <row rowsep="0">
3609               <entry colname="1">
3610                 <para><command>logging</command></para>
3611               </entry>
3612               <entry colname="2">
3613                 <para>
3614                   specifies what the server logs, and where
3615                   the log messages are sent.
3616                 </para>
3617               </entry>
3618             </row>
3619             <row rowsep="0">
3620               <entry colname="1">
3621                 <para><command>lwres</command></para>
3622               </entry>
3623               <entry colname="2">
3624                 <para>
3625                   configures <command>named</command> to
3626                   also act as a light-weight resolver daemon (<command>lwresd</command>).
3627                 </para>
3628               </entry>
3629             </row>
3630             <row rowsep="0">
3631               <entry colname="1">
3632                 <para><command>masters</command></para>
3633               </entry>
3634               <entry colname="2">
3635                 <para>
3636                   defines a named masters list for
3637                   inclusion in stub and slave zone masters clauses.
3638                 </para>
3639               </entry>
3640             </row>
3641             <row rowsep="0">
3642               <entry colname="1">
3643                 <para><command>options</command></para>
3644               </entry>
3645               <entry colname="2">
3646                 <para>
3647                   controls global server configuration
3648                   options and sets defaults for other statements.
3649                 </para>
3650               </entry>
3651             </row>
3652             <row rowsep="0">
3653               <entry colname="1">
3654                 <para><command>server</command></para>
3655               </entry>
3656               <entry colname="2">
3657                 <para>
3658                   sets certain configuration options on
3659                   a per-server basis.
3660                 </para>
3661               </entry>
3662             </row>
3663             <row rowsep="0">
3664               <entry colname="1">
3665                 <para><command>statistics-channels</command></para>
3666               </entry>
3667               <entry colname="2">
3668                 <para>
3669                   declares communication channels to get access to
3670                   <command>named</command> statistics.
3671                 </para>
3672               </entry>
3673             </row>
3674             <row rowsep="0">
3675               <entry colname="1">
3676                 <para><command>trusted-keys</command></para>
3677               </entry>
3678               <entry colname="2">
3679                 <para>
3680                   defines trusted DNSSEC keys.
3681                 </para>
3682               </entry>
3683             </row>
3684             <row rowsep="0">
3685               <entry colname="1">
3686                 <para><command>managed-keys</command></para>
3687               </entry>
3688               <entry colname="2">
3689                 <para>
3690                   lists DNSSEC keys to be kept up to date
3691                   using RFC 5011 trust anchor maintenance.
3692                 </para>
3693               </entry>
3694             </row>
3695             <row rowsep="0">
3696               <entry colname="1">
3697                 <para><command>view</command></para>
3698               </entry>
3699               <entry colname="2">
3700                 <para>
3701                   defines a view.
3702                 </para>
3703               </entry>
3704             </row>
3705             <row rowsep="0">
3706               <entry colname="1">
3707                 <para><command>zone</command></para>
3708               </entry>
3709               <entry colname="2">
3710                 <para>
3711                   defines a zone.
3712                 </para>
3713               </entry>
3714             </row>
3715           </tbody>
3716         </tgroup>
3717       </informaltable>
3718
3719       <para>
3720         The <command>logging</command> and
3721         <command>options</command> statements may only occur once
3722         per
3723         configuration.
3724       </para>
3725
3726       <sect2>
3727         <title><command>acl</command> Statement Grammar</title>
3728
3729 <programlisting><command>acl</command> acl-name {
3730     address_match_list
3731 };
3732 </programlisting>
3733
3734       </sect2>
3735       <sect2 id="acl">
3736         <title><command>acl</command> Statement Definition and
3737           Usage</title>
3738
3739         <para>
3740           The <command>acl</command> statement assigns a symbolic
3741           name to an address match list. It gets its name from a primary
3742           use of address match lists: Access Control Lists (ACLs).
3743         </para>
3744
3745         <para>
3746           Note that an address match list's name must be defined
3747           with <command>acl</command> before it can be used
3748           elsewhere; no forward references are allowed.
3749         </para>
3750
3751         <para>
3752           The following ACLs are built-in:
3753         </para>
3754
3755         <informaltable colsep="0" rowsep="0">
3756           <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="3Level-table">
3757             <colspec colname="1" colnum="1" colsep="0" colwidth="1.130in"/>
3758             <colspec colname="2" colnum="2" colsep="0" colwidth="4.000in"/>
3759             <tbody>
3760               <row rowsep="0">
3761                 <entry colname="1">
3762                   <para><command>any</command></para>
3763                 </entry>
3764                 <entry colname="2">
3765                   <para>
3766                     Matches all hosts.
3767                   </para>
3768                 </entry>
3769               </row>
3770               <row rowsep="0">
3771                 <entry colname="1">
3772                   <para><command>none</command></para>
3773                 </entry>
3774                 <entry colname="2">
3775                   <para>
3776                     Matches no hosts.
3777                   </para>
3778                 </entry>
3779               </row>
3780               <row rowsep="0">
3781                 <entry colname="1">
3782                   <para><command>localhost</command></para>
3783                 </entry>
3784                 <entry colname="2">
3785                   <para>
3786                     Matches the IPv4 and IPv6 addresses of all network
3787                     interfaces on the system.
3788                   </para>
3789                 </entry>
3790               </row>
3791               <row rowsep="0">
3792                 <entry colname="1">
3793                   <para><command>localnets</command></para>
3794                 </entry>
3795                 <entry colname="2">
3796                   <para>
3797                     Matches any host on an IPv4 or IPv6 network
3798                     for which the system has an interface.
3799                     Some systems do not provide a way to determine the prefix
3800                     lengths of
3801                     local IPv6 addresses.
3802                     In such a case, <command>localnets</command>
3803                     only matches the local
3804                     IPv6 addresses, just like <command>localhost</command>.
3805                   </para>
3806                 </entry>
3807               </row>
3808             </tbody>
3809           </tgroup>
3810         </informaltable>
3811
3812       </sect2>
3813       <sect2>
3814         <title><command>controls</command> Statement Grammar</title>
3815
3816 <programlisting><command>controls</command> {
3817    [ inet ( ip_addr | * ) [ port ip_port ]
3818                 allow { <replaceable> address_match_list </replaceable> }
3819                 keys { <replaceable>key_list</replaceable> }; ]
3820    [ inet ...; ]
3821    [ unix <replaceable>path</replaceable> perm <replaceable>number</replaceable> owner <replaceable>number</replaceable> group <replaceable>number</replaceable>
3822      keys { <replaceable>key_list</replaceable> }; ]
3823    [ unix ...; ]
3824 };
3825 </programlisting>
3826
3827       </sect2>
3828
3829       <sect2 id="controls_statement_definition_and_usage">
3830         <title><command>controls</command> Statement Definition and
3831           Usage</title>
3832
3833         <para>
3834           The <command>controls</command> statement declares control
3835           channels to be used by system administrators to control the
3836           operation of the name server. These control channels are
3837           used by the <command>rndc</command> utility to send
3838           commands to and retrieve non-DNS results from a name server.
3839         </para>
3840
3841         <para>
3842           An <command>inet</command> control channel is a TCP socket
3843           listening at the specified <command>ip_port</command> on the
3844           specified <command>ip_addr</command>, which can be an IPv4 or IPv6
3845           address.  An <command>ip_addr</command> of <literal>*</literal> (asterisk) is
3846           interpreted as the IPv4 wildcard address; connections will be
3847           accepted on any of the system's IPv4 addresses.
3848           To listen on the IPv6 wildcard address,
3849           use an <command>ip_addr</command> of <literal>::</literal>.
3850           If you will only use <command>rndc</command> on the local host,
3851           using the loopback address (<literal>127.0.0.1</literal>
3852           or <literal>::1</literal>) is recommended for maximum security.
3853         </para>
3854
3855         <para>
3856           If no port is specified, port 953 is used. The asterisk
3857           "<literal>*</literal>" cannot be used for <command>ip_port</command>.
3858         </para>
3859
3860         <para>
3861           The ability to issue commands over the control channel is
3862           restricted by the <command>allow</command> and
3863           <command>keys</command> clauses.
3864           Connections to the control channel are permitted based on the
3865           <command>address_match_list</command>.  This is for simple
3866           IP address based filtering only; any <command>key_id</command>
3867           elements of the <command>address_match_list</command>
3868           are ignored.
3869         </para>
3870
3871         <para>
3872           A <command>unix</command> control channel is a UNIX domain
3873           socket listening at the specified path in the file system.
3874           Access to the socket is specified by the <command>perm</command>,
3875           <command>owner</command> and <command>group</command> clauses.
3876           Note on some platforms (SunOS and Solaris) the permissions
3877           (<command>perm</command>) are applied to the parent directory
3878           as the permissions on the socket itself are ignored.
3879         </para>
3880
3881         <para>
3882           The primary authorization mechanism of the command
3883           channel is the <command>key_list</command>, which
3884           contains a list of <command>key_id</command>s.
3885           Each <command>key_id</command> in the <command>key_list</command>
3886           is authorized to execute commands over the control channel.
3887           See <xref linkend="rndc"/> in <xref linkend="admin_tools"/>)
3888           for information about configuring keys in <command>rndc</command>.
3889         </para>
3890
3891         <para>
3892           If no <command>controls</command> statement is present,
3893           <command>named</command> will set up a default
3894           control channel listening on the loopback address 127.0.0.1
3895           and its IPv6 counterpart ::1.
3896           In this case, and also when the <command>controls</command> statement
3897           is present but does not have a <command>keys</command> clause,
3898           <command>named</command> will attempt to load the command channel key
3899           from the file <filename>rndc.key</filename> in
3900           <filename>/etc</filename> (or whatever <varname>sysconfdir</varname>
3901           was specified as when <acronym>BIND</acronym> was built).
3902           To create a <filename>rndc.key</filename> file, run
3903           <userinput>rndc-confgen -a</userinput>.
3904         </para>
3905
3906         <para>
3907           The <filename>rndc.key</filename> feature was created to
3908           ease the transition of systems from <acronym>BIND</acronym> 8,
3909           which did not have digital signatures on its command channel
3910           messages and thus did not have a <command>keys</command> clause.
3911
3912           It makes it possible to use an existing <acronym>BIND</acronym> 8
3913           configuration file in <acronym>BIND</acronym> 9 unchanged,
3914           and still have <command>rndc</command> work the same way
3915           <command>ndc</command> worked in BIND 8, simply by executing the
3916           command <userinput>rndc-confgen -a</userinput> after BIND 9 is
3917           installed.
3918         </para>
3919
3920         <para>
3921           Since the <filename>rndc.key</filename> feature
3922           is only intended to allow the backward-compatible usage of
3923           <acronym>BIND</acronym> 8 configuration files, this
3924           feature does not
3925           have a high degree of configurability.  You cannot easily change
3926           the key name or the size of the secret, so you should make a
3927           <filename>rndc.conf</filename> with your own key if you
3928           wish to change
3929           those things.  The <filename>rndc.key</filename> file
3930           also has its
3931           permissions set such that only the owner of the file (the user that
3932           <command>named</command> is running as) can access it.
3933           If you
3934           desire greater flexibility in allowing other users to access
3935           <command>rndc</command> commands, then you need to create
3936           a
3937           <filename>rndc.conf</filename> file and make it group
3938           readable by a group
3939           that contains the users who should have access.
3940         </para>
3941
3942         <para>
3943           To disable the command channel, use an empty
3944           <command>controls</command> statement:
3945           <command>controls { };</command>.
3946         </para>
3947
3948       </sect2>
3949       <sect2>
3950         <title><command>include</command> Statement Grammar</title>
3951         <programlisting><command>include</command> <replaceable>filename</replaceable>;</programlisting>
3952       </sect2>
3953       <sect2>
3954         <title><command>include</command> Statement Definition and
3955           Usage</title>
3956
3957         <para>
3958           The <command>include</command> statement inserts the
3959           specified file at the point where the <command>include</command>
3960           statement is encountered. The <command>include</command>
3961                 statement facilitates the administration of configuration
3962           files
3963           by permitting the reading or writing of some things but not
3964           others. For example, the statement could include private keys
3965           that are readable only by the name server.
3966         </para>
3967
3968       </sect2>
3969       <sect2>
3970         <title><command>key</command> Statement Grammar</title>
3971
3972 <programlisting><command>key</command> <replaceable>key_id</replaceable> {
3973     algorithm <replaceable>string</replaceable>;
3974     secret <replaceable>string</replaceable>;
3975 };
3976 </programlisting>
3977
3978       </sect2>
3979
3980       <sect2>
3981         <title><command>key</command> Statement Definition and Usage</title>
3982
3983         <para>
3984           The <command>key</command> statement defines a shared
3985           secret key for use with TSIG (see <xref linkend="tsig"/>)
3986           or the command channel
3987           (see <xref linkend="controls_statement_definition_and_usage"/>).
3988         </para>
3989
3990         <para>
3991           The <command>key</command> statement can occur at the
3992           top level
3993           of the configuration file or inside a <command>view</command>
3994           statement.  Keys defined in top-level <command>key</command>
3995           statements can be used in all views.  Keys intended for use in
3996           a <command>controls</command> statement
3997           (see <xref linkend="controls_statement_definition_and_usage"/>)
3998           must be defined at the top level.
3999         </para>
4000
4001         <para>
4002           The <replaceable>key_id</replaceable>, also known as the
4003           key name, is a domain name uniquely identifying the key. It can
4004           be used in a <command>server</command>
4005           statement to cause requests sent to that
4006           server to be signed with this key, or in address match lists to
4007           verify that incoming requests have been signed with a key
4008           matching this name, algorithm, and secret.
4009         </para>
4010
4011         <para>
4012           The <replaceable>algorithm_id</replaceable> is a string
4013           that specifies a security/authentication algorithm.  Named
4014           supports <literal>hmac-md5</literal>,
4015           <literal>hmac-sha1</literal>, <literal>hmac-sha224</literal>,
4016           <literal>hmac-sha256</literal>, <literal>hmac-sha384</literal>
4017           and <literal>hmac-sha512</literal> TSIG authentication.
4018           Truncated hashes are supported by appending the minimum
4019           number of required bits preceded by a dash, e.g.
4020           <literal>hmac-sha1-80</literal>.  The
4021           <replaceable>secret_string</replaceable> is the secret
4022           to be used by the algorithm, and is treated as a base-64
4023           encoded string.
4024         </para>
4025
4026       </sect2>
4027       <sect2>
4028         <title><command>logging</command> Statement Grammar</title>
4029
4030 <programlisting><command>logging</command> {
4031    [ <command>channel</command> <replaceable>channel_name</replaceable> {
4032      ( <command>file</command> <replaceable>path_name</replaceable>
4033          [ <command>versions</command> ( <replaceable>number</replaceable> | <command>unlimited</command> ) ]
4034          [ <command>size</command> <replaceable>size spec</replaceable> ]
4035        | <command>syslog</command> <replaceable>syslog_facility</replaceable>
4036        | <command>stderr</command>
4037        | <command>null</command> );
4038      [ <command>severity</command> (<option>critical</option> | <option>error</option> | <option>warning</option> | <option>notice</option> |
4039                  <option>info</option> | <option>debug</option> [ <replaceable>level</replaceable> ] | <option>dynamic</option> ); ]
4040      [ <command>print-category</command> <option>yes</option> or <option>no</option>; ]
4041      [ <command>print-severity</command> <option>yes</option> or <option>no</option>; ]
4042      [ <command>print-time</command> <option>yes</option> or <option>no</option>; ]
4043    }; ]
4044    [ <command>category</command> <replaceable>category_name</replaceable> {
4045      <replaceable>channel_name</replaceable> ; [ <replaceable>channel_name</replaceable> ; ... ]
4046    }; ]
4047    ...
4048 };
4049 </programlisting>
4050
4051       </sect2>
4052
4053       <sect2>
4054         <title><command>logging</command> Statement Definition and
4055           Usage</title>
4056
4057         <para>
4058           The <command>logging</command> statement configures a
4059           wide
4060           variety of logging options for the name server. Its <command>channel</command> phrase
4061           associates output methods, format options and severity levels with
4062           a name that can then be used with the <command>category</command> phrase
4063           to select how various classes of messages are logged.
4064         </para>
4065         <para>
4066           Only one <command>logging</command> statement is used to
4067           define
4068           as many channels and categories as are wanted. If there is no <command>logging</command> statement,
4069           the logging configuration will be:
4070         </para>
4071
4072 <programlisting>logging {
4073      category default { default_syslog; default_debug; };
4074      category unmatched { null; };
4075 };
4076 </programlisting>
4077
4078         <para>
4079           In <acronym>BIND</acronym> 9, the logging configuration
4080           is only established when
4081           the entire configuration file has been parsed.  In <acronym>BIND</acronym> 8, it was
4082           established as soon as the <command>logging</command>
4083           statement
4084           was parsed. When the server is starting up, all logging messages
4085           regarding syntax errors in the configuration file go to the default
4086           channels, or to standard error if the "<option>-g</option>" option
4087           was specified.
4088         </para>
4089
4090         <sect3>
4091           <title>The <command>channel</command> Phrase</title>
4092
4093           <para>
4094             All log output goes to one or more <emphasis>channels</emphasis>;
4095             you can make as many of them as you want.
4096           </para>
4097
4098           <para>
4099             Every channel definition must include a destination clause that
4100             says whether messages selected for the channel go to a file, to a
4101             particular syslog facility, to the standard error stream, or are
4102             discarded. It can optionally also limit the message severity level
4103             that will be accepted by the channel (the default is
4104             <command>info</command>), and whether to include a
4105             <command>named</command>-generated time stamp, the
4106             category name
4107             and/or severity level (the default is not to include any).
4108           </para>
4109
4110           <para>
4111             The <command>null</command> destination clause
4112             causes all messages sent to the channel to be discarded;
4113             in that case, other options for the channel are meaningless.
4114           </para>
4115
4116           <para>
4117             The <command>file</command> destination clause directs
4118             the channel
4119             to a disk file.  It can include limitations
4120             both on how large the file is allowed to become, and how many
4121             versions
4122             of the file will be saved each time the file is opened.
4123           </para>
4124
4125           <para>
4126             If you use the <command>versions</command> log file
4127             option, then
4128             <command>named</command> will retain that many backup
4129             versions of the file by
4130             renaming them when opening.  For example, if you choose to keep
4131             three old versions
4132             of the file <filename>lamers.log</filename>, then just
4133             before it is opened
4134             <filename>lamers.log.1</filename> is renamed to
4135             <filename>lamers.log.2</filename>, <filename>lamers.log.0</filename> is renamed
4136             to <filename>lamers.log.1</filename>, and <filename>lamers.log</filename> is
4137             renamed to <filename>lamers.log.0</filename>.
4138             You can say <command>versions unlimited</command> to
4139             not limit
4140             the number of versions.
4141             If a <command>size</command> option is associated with
4142             the log file,
4143             then renaming is only done when the file being opened exceeds the
4144             indicated size.  No backup versions are kept by default; any
4145             existing
4146             log file is simply appended.
4147           </para>
4148
4149           <para>
4150             The <command>size</command> option for files is used
4151             to limit log
4152             growth. If the file ever exceeds the size, then <command>named</command> will
4153             stop writing to the file unless it has a <command>versions</command> option
4154             associated with it.  If backup versions are kept, the files are
4155             rolled as
4156             described above and a new one begun.  If there is no
4157             <command>versions</command> option, no more data will
4158             be written to the log
4159             until some out-of-band mechanism removes or truncates the log to
4160             less than the
4161             maximum size.  The default behavior is not to limit the size of
4162             the
4163             file.
4164           </para>
4165
4166           <para>
4167             Example usage of the <command>size</command> and
4168             <command>versions</command> options:
4169           </para>
4170
4171 <programlisting>channel an_example_channel {
4172     file "example.log" versions 3 size 20m;
4173     print-time yes;
4174     print-category yes;
4175 };
4176 </programlisting>
4177
4178           <para>
4179             The <command>syslog</command> destination clause
4180             directs the
4181             channel to the system log.  Its argument is a
4182             syslog facility as described in the <command>syslog</command> man
4183             page. Known facilities are <command>kern</command>, <command>user</command>,
4184             <command>mail</command>, <command>daemon</command>, <command>auth</command>,
4185             <command>syslog</command>, <command>lpr</command>, <command>news</command>,
4186             <command>uucp</command>, <command>cron</command>, <command>authpriv</command>,
4187             <command>ftp</command>, <command>local0</command>, <command>local1</command>,
4188             <command>local2</command>, <command>local3</command>, <command>local4</command>,
4189             <command>local5</command>, <command>local6</command> and
4190             <command>local7</command>, however not all facilities
4191             are supported on
4192             all operating systems.
4193             How <command>syslog</command> will handle messages
4194             sent to
4195             this facility is described in the <command>syslog.conf</command> man
4196             page. If you have a system which uses a very old version of <command>syslog</command> that
4197             only uses two arguments to the <command>openlog()</command> function,
4198             then this clause is silently ignored.
4199           </para>
4200           <para>
4201             The <command>severity</command> clause works like <command>syslog</command>'s
4202             "priorities", except that they can also be used if you are writing
4203             straight to a file rather than using <command>syslog</command>.
4204             Messages which are not at least of the severity level given will
4205             not be selected for the channel; messages of higher severity
4206             levels
4207             will be accepted.
4208           </para>
4209           <para>
4210             If you are using <command>syslog</command>, then the <command>syslog.conf</command> priorities
4211             will also determine what eventually passes through. For example,
4212             defining a channel facility and severity as <command>daemon</command> and <command>debug</command> but
4213             only logging <command>daemon.warning</command> via <command>syslog.conf</command> will
4214             cause messages of severity <command>info</command> and
4215             <command>notice</command> to
4216             be dropped. If the situation were reversed, with <command>named</command> writing
4217             messages of only <command>warning</command> or higher,
4218             then <command>syslogd</command> would
4219             print all messages it received from the channel.
4220           </para>
4221
4222           <para>
4223             The <command>stderr</command> destination clause
4224             directs the
4225             channel to the server's standard error stream.  This is intended
4226             for
4227             use when the server is running as a foreground process, for
4228             example
4229             when debugging a configuration.
4230           </para>
4231
4232           <para>
4233             The server can supply extensive debugging information when
4234             it is in debugging mode. If the server's global debug level is
4235             greater
4236             than zero, then debugging mode will be active. The global debug
4237             level is set either by starting the <command>named</command> server
4238             with the <option>-d</option> flag followed by a positive integer,
4239             or by running <command>rndc trace</command>.
4240             The global debug level
4241             can be set to zero, and debugging mode turned off, by running <command>rndc
4242 notrace</command>. All debugging messages in the server have a debug
4243             level, and higher debug levels give more detailed output. Channels
4244             that specify a specific debug severity, for example:
4245           </para>
4246
4247 <programlisting>channel specific_debug_level {
4248     file "foo";
4249     severity debug 3;
4250 };
4251 </programlisting>
4252
4253           <para>
4254             will get debugging output of level 3 or less any time the
4255             server is in debugging mode, regardless of the global debugging
4256             level. Channels with <command>dynamic</command>
4257             severity use the
4258             server's global debug level to determine what messages to print.
4259           </para>
4260           <para>
4261             If <command>print-time</command> has been turned on,
4262             then
4263             the date and time will be logged. <command>print-time</command> may
4264             be specified for a <command>syslog</command> channel,
4265             but is usually
4266             pointless since <command>syslog</command> also logs
4267             the date and
4268             time. If <command>print-category</command> is
4269             requested, then the
4270             category of the message will be logged as well. Finally, if <command>print-severity</command> is
4271             on, then the severity level of the message will be logged. The <command>print-</command> options may
4272             be used in any combination, and will always be printed in the
4273             following
4274             order: time, category, severity. Here is an example where all
4275             three <command>print-</command> options
4276             are on:
4277           </para>
4278
4279           <para>
4280             <computeroutput>28-Feb-2000 15:05:32.863 general: notice: running</computeroutput>
4281           </para>
4282
4283           <para>
4284             There are four predefined channels that are used for
4285             <command>named</command>'s default logging as follows.
4286             How they are
4287             used is described in <xref linkend="the_category_phrase"/>.
4288           </para>
4289
4290 <programlisting>channel default_syslog {
4291     // send to syslog's daemon facility
4292     syslog daemon;
4293     // only send priority info and higher
4294     severity info;
4295
4296 channel default_debug {
4297     // write to named.run in the working directory
4298     // Note: stderr is used instead of "named.run" if
4299     // the server is started with the '-f' option.
4300     file "named.run";
4301     // log at the server's current debug level
4302     severity dynamic;
4303 };
4304
4305 channel default_stderr {
4306     // writes to stderr
4307     stderr;
4308     // only send priority info and higher
4309     severity info;
4310 };
4311
4312 channel null {
4313    // toss anything sent to this channel
4314    null;
4315 };
4316 </programlisting>
4317
4318           <para>
4319             The <command>default_debug</command> channel has the
4320             special
4321             property that it only produces output when the server's debug
4322             level is
4323             nonzero.  It normally writes to a file called <filename>named.run</filename>
4324             in the server's working directory.
4325           </para>
4326
4327           <para>
4328             For security reasons, when the "<option>-u</option>"
4329             command line option is used, the <filename>named.run</filename> file
4330             is created only after <command>named</command> has
4331             changed to the
4332             new UID, and any debug output generated while <command>named</command> is
4333             starting up and still running as root is discarded.  If you need
4334             to capture this output, you must run the server with the "<option>-g</option>"
4335             option and redirect standard error to a file.
4336           </para>
4337
4338           <para>
4339             Once a channel is defined, it cannot be redefined. Thus you
4340             cannot alter the built-in channels directly, but you can modify
4341             the default logging by pointing categories at channels you have
4342             defined.
4343           </para>
4344         </sect3>
4345
4346         <sect3 id="the_category_phrase">
4347           <title>The <command>category</command> Phrase</title>
4348
4349           <para>
4350             There are many categories, so you can send the logs you want
4351             to see wherever you want, without seeing logs you don't want. If
4352             you don't specify a list of channels for a category, then log
4353             messages
4354             in that category will be sent to the <command>default</command> category
4355             instead. If you don't specify a default category, the following
4356             "default default" is used:
4357           </para>
4358
4359 <programlisting>category default { default_syslog; default_debug; };
4360 </programlisting>
4361
4362           <para>
4363             As an example, let's say you want to log security events to
4364             a file, but you also want keep the default logging behavior. You'd
4365             specify the following:
4366           </para>
4367
4368 <programlisting>channel my_security_channel {
4369     file "my_security_file";
4370     severity info;
4371 };
4372 category security {
4373     my_security_channel;
4374     default_syslog;
4375     default_debug;
4376 };</programlisting>
4377
4378           <para>
4379             To discard all messages in a category, specify the <command>null</command> channel:
4380           </para>
4381
4382 <programlisting>category xfer-out { null; };
4383 category notify { null; };
4384 </programlisting>
4385
4386           <para>
4387             Following are the available categories and brief descriptions
4388             of the types of log information they contain. More
4389             categories may be added in future <acronym>BIND</acronym> releases.
4390           </para>
4391           <informaltable colsep="0" rowsep="0">
4392             <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
4393               <colspec colname="1" colnum="1" colsep="0" colwidth="1.150in"/>
4394               <colspec colname="2" colnum="2" colsep="0" colwidth="3.350in"/>
4395               <tbody>
4396                 <row rowsep="0">
4397                   <entry colname="1">
4398                     <para><command>default</command></para>
4399                   </entry>
4400                   <entry colname="2">
4401                     <para>
4402                       The default category defines the logging
4403                       options for those categories where no specific
4404                       configuration has been
4405                       defined.
4406                     </para>
4407                   </entry>
4408                 </row>
4409                 <row rowsep="0">
4410                   <entry colname="1">
4411                     <para><command>general</command></para>
4412                   </entry>
4413                   <entry colname="2">
4414                     <para>
4415                       The catch-all. Many things still aren't
4416                       classified into categories, and they all end up here.
4417                     </para>
4418                   </entry>
4419                 </row>
4420                 <row rowsep="0">
4421                   <entry colname="1">
4422                     <para><command>database</command></para>
4423                   </entry>
4424                   <entry colname="2">
4425                     <para>
4426                       Messages relating to the databases used
4427                       internally by the name server to store zone and cache
4428                       data.
4429                     </para>
4430                   </entry>
4431                 </row>
4432                 <row rowsep="0">
4433                   <entry colname="1">
4434                     <para><command>security</command></para>
4435                   </entry>
4436                   <entry colname="2">
4437                     <para>
4438                       Approval and denial of requests.
4439                     </para>
4440                   </entry>
4441                 </row>
4442                 <row rowsep="0">
4443                   <entry colname="1">
4444                     <para><command>config</command></para>
4445                   </entry>
4446                   <entry colname="2">
4447                     <para>
4448                       Configuration file parsing and processing.
4449                     </para>
4450                   </entry>
4451                 </row>
4452                 <row rowsep="0">
4453                   <entry colname="1">
4454                     <para><command>resolver</command></para>
4455                   </entry>
4456                   <entry colname="2">
4457                     <para>
4458                       DNS resolution, such as the recursive
4459                       lookups performed on behalf of clients by a caching name
4460                       server.
4461                     </para>
4462                   </entry>
4463                 </row>
4464                 <row rowsep="0">
4465                   <entry colname="1">
4466                     <para><command>xfer-in</command></para>
4467                   </entry>
4468                   <entry colname="2">
4469                     <para>
4470                       Zone transfers the server is receiving.
4471                     </para>
4472                   </entry>
4473                 </row>
4474                 <row rowsep="0">
4475                   <entry colname="1">
4476                     <para><command>xfer-out</command></para>
4477                   </entry>
4478                   <entry colname="2">
4479                     <para>
4480                       Zone transfers the server is sending.
4481                     </para>
4482                   </entry>
4483                 </row>
4484                 <row rowsep="0">
4485                   <entry colname="1">
4486                     <para><command>notify</command></para>
4487                   </entry>
4488                   <entry colname="2">
4489                     <para>
4490                       The NOTIFY protocol.
4491                     </para>
4492                   </entry>
4493                 </row>
4494                 <row rowsep="0">
4495                   <entry colname="1">
4496                     <para><command>client</command></para>
4497                   </entry>
4498                   <entry colname="2">
4499                     <para>
4500                       Processing of client requests.
4501                     </para>
4502                   </entry>
4503                 </row>
4504                 <row rowsep="0">
4505                   <entry colname="1">
4506                     <para><command>unmatched</command></para>
4507                   </entry>
4508                   <entry colname="2">
4509                     <para>
4510                       Messages that <command>named</command> was unable to determine the
4511                       class of or for which there was no matching <command>view</command>.
4512                       A one line summary is also logged to the <command>client</command> category.
4513                       This category is best sent to a file or stderr, by
4514                       default it is sent to
4515                       the <command>null</command> channel.
4516                     </para>
4517                   </entry>
4518                 </row>
4519                 <row rowsep="0">
4520                   <entry colname="1">
4521                     <para><command>network</command></para>
4522                   </entry>
4523                   <entry colname="2">
4524                     <para>
4525                       Network operations.
4526                     </para>
4527                   </entry>
4528                 </row>
4529                 <row rowsep="0">
4530                   <entry colname="1">
4531                     <para><command>update</command></para>
4532                   </entry>
4533                   <entry colname="2">
4534                     <para>
4535                       Dynamic updates.
4536                     </para>
4537                   </entry>
4538                 </row>
4539                 <row rowsep="0">
4540                   <entry colname="1">
4541                     <para><command>update-security</command></para>
4542                   </entry>
4543                   <entry colname="2">
4544                     <para>
4545                       Approval and denial of update requests.
4546                     </para>
4547                   </entry>
4548                 </row>
4549                 <row rowsep="0">
4550                   <entry colname="1">
4551                     <para><command>queries</command></para>
4552                   </entry>
4553                   <entry colname="2">
4554                     <para>
4555                       Specify where queries should be logged to.
4556                     </para>
4557                     <para>
4558                       At startup, specifying the category <command>queries</command> will also
4559                       enable query logging unless <command>querylog</command> option has been
4560                       specified.
4561                     </para>
4562
4563                     <para>
4564                       The query log entry reports the client's IP
4565                       address and port number, and the query name,
4566                       class and type.  Next it reports whether the
4567                       Recursion Desired flag was set (+ if set, -
4568                       if not set), if the query was signed (S),
4569                       EDNS was in use (E), if TCP was used (T), if
4570                       DO (DNSSEC Ok) was set (D), or if CD (Checking
4571                       Disabled) was set (C).  After this the
4572                       destination address the query was sent to is
4573                       reported.
4574                     </para>
4575
4576                     <para>
4577                       <computeroutput>client 127.0.0.1#62536: query: www.example.com IN AAAA +SE</computeroutput>
4578                     </para>
4579                     <para>
4580                       <computeroutput>client ::1#62537: query: www.example.net IN AAAA -SE</computeroutput>
4581                     </para>
4582                   </entry>
4583                 </row>
4584                 <row rowsep="0">
4585                   <entry colname="1">
4586                     <para><command>query-errors</command></para>
4587                   </entry>
4588                   <entry colname="2">
4589                     <para>
4590                       Information about queries that resulted in some
4591                       failure.
4592                     </para>
4593                   </entry>
4594                 </row>
4595                 <row rowsep="0">
4596                   <entry colname="1">
4597                     <para><command>dispatch</command></para>
4598                   </entry>
4599                   <entry colname="2">
4600                     <para>
4601                       Dispatching of incoming packets to the
4602                       server modules where they are to be processed.
4603                     </para>
4604                   </entry>
4605                 </row>
4606                 <row rowsep="0">
4607                   <entry colname="1">
4608                     <para><command>dnssec</command></para>
4609                   </entry>
4610                   <entry colname="2">
4611                     <para>
4612                       DNSSEC and TSIG protocol processing.
4613                     </para>
4614                   </entry>
4615                 </row>
4616                 <row rowsep="0">
4617                   <entry colname="1">
4618                     <para><command>lame-servers</command></para>
4619                   </entry>
4620                   <entry colname="2">
4621                     <para>
4622                       Lame servers.  These are misconfigurations
4623                       in remote servers, discovered by BIND 9 when trying to
4624                       query those servers during resolution.
4625                     </para>
4626                   </entry>
4627                 </row>
4628                 <row rowsep="0">
4629                   <entry colname="1">
4630                     <para><command>delegation-only</command></para>
4631                   </entry>
4632                   <entry colname="2">
4633                     <para>
4634                       Delegation only.  Logs queries that have been
4635                       forced to NXDOMAIN as the result of a
4636                       delegation-only zone or a
4637                       <command>delegation-only</command> in a hint
4638                       or stub zone declaration.
4639                     </para>
4640                   </entry>
4641                 </row>
4642                 <row rowsep="0">
4643                   <entry colname="1">
4644                     <para><command>edns-disabled</command></para>
4645                   </entry>
4646                   <entry colname="2">
4647                     <para>
4648                       Log queries that have been forced to use plain
4649                       DNS due to timeouts.  This is often due to
4650                       the remote servers not being RFC 1034 compliant
4651                       (not always returning FORMERR or similar to
4652                       EDNS queries and other extensions to the DNS
4653                       when they are not understood).  In other words, this is
4654                       targeted at servers that fail to respond to
4655                       DNS queries that they don't understand.
4656                     </para>
4657                     <para>
4658                       Note: the log message can also be due to
4659                       packet loss.  Before reporting servers for
4660                       non-RFC 1034 compliance they should be re-tested
4661                       to determine the nature of the non-compliance.
4662                       This testing should prevent or reduce the
4663                       number of false-positive reports.
4664                     </para>
4665                     <para>
4666                       Note: eventually <command>named</command> will have to stop
4667                       treating such timeouts as due to RFC 1034 non
4668                       compliance and start treating it as plain
4669                       packet loss.  Falsely classifying packet
4670                       loss as due to RFC 1034 non compliance impacts
4671                       on DNSSEC validation which requires EDNS for
4672                       the DNSSEC records to be returned.
4673                     </para>
4674                   </entry>
4675                 </row>
4676                 <row rowsep="0">
4677                   <entry colname="1">
4678                     <para><command>RPZ</command></para>
4679                   </entry>
4680                   <entry colname="2">
4681                     <para>
4682                       Information about errors in response policy zone files,
4683                       rewritten responses, and at the highest
4684                       <command>debug</command> levels, mere rewriting
4685                       attempts.
4686                     </para>
4687                   </entry>
4688                 </row>
4689               </tbody>
4690             </tgroup>
4691           </informaltable>
4692         </sect3>
4693         <sect3>
4694           <title>The <command>query-errors</command> Category</title>
4695           <para>
4696             The <command>query-errors</command> category is
4697             specifically intended for debugging purposes: To identify
4698             why and how specific queries result in responses which
4699             indicate an error.
4700             Messages of this category are therefore only logged
4701             with <command>debug</command> levels.
4702           </para>
4703
4704           <para>
4705             At the debug levels of 1 or higher, each response with the
4706             rcode of SERVFAIL is logged as follows:
4707           </para>
4708           <para>
4709             <computeroutput>client 127.0.0.1#61502: query failed (SERVFAIL) for www.example.com/IN/AAAA at query.c:3880</computeroutput>
4710           </para>
4711           <para>
4712             This means an error resulting in SERVFAIL was
4713             detected at line 3880 of source file
4714             <filename>query.c</filename>.
4715             Log messages of this level will particularly
4716             help identify the cause of SERVFAIL for an
4717             authoritative server.
4718           </para>
4719           <para>
4720             At the debug levels of 2 or higher, detailed context
4721             information of recursive resolutions that resulted in
4722             SERVFAIL is logged.
4723             The log message will look like as follows:
4724           </para>
4725           <para>
4726 <!-- NOTE: newlines and some spaces added so this would fit on page -->
4727             <programlisting>
4728 fetch completed at resolver.c:2970 for www.example.com/A
4729 in 30.000183: timed out/success [domain:example.com,
4730 referral:2,restart:7,qrysent:8,timeout:5,lame:0,neterr:0,
4731 badresp:1,adberr:0,findfail:0,valfail:0]
4732             </programlisting>
4733           </para>
4734           <para>
4735             The first part before the colon shows that a recursive
4736             resolution for AAAA records of www.example.com completed
4737             in 30.000183 seconds and the final result that led to the
4738             SERVFAIL was determined at line 2970 of source file
4739             <filename>resolver.c</filename>.
4740           </para>
4741           <para>
4742             The following part shows the detected final result and the
4743             latest result of DNSSEC validation.
4744             The latter is always success when no validation attempt
4745             is made.
4746             In this example, this query resulted in SERVFAIL probably
4747             because all name servers are down or unreachable, leading
4748             to a timeout in 30 seconds.
4749             DNSSEC validation was probably not attempted.
4750           </para>
4751           <para>
4752             The last part enclosed in square brackets shows statistics
4753             information collected for this particular resolution
4754             attempt.
4755             The <varname>domain</varname> field shows the deepest zone
4756             that the resolver reached;
4757             it is the zone where the error was finally detected.
4758             The meaning of the other fields is summarized in the
4759             following table.
4760           </para>
4761
4762           <informaltable colsep="0" rowsep="0">
4763             <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
4764               <colspec colname="1" colnum="1" colsep="0" colwidth="1.150in"/>
4765               <colspec colname="2" colnum="2" colsep="0" colwidth="3.350in"/>
4766               <tbody>
4767                 <row rowsep="0">
4768                   <entry colname="1">
4769                     <para><varname>referral</varname></para>
4770                   </entry>
4771                   <entry colname="2">
4772                     <para>
4773                       The number of referrals the resolver received
4774                       throughout the resolution process.
4775                       In the above example this is 2, which are most
4776                       likely com and example.com.
4777                     </para>
4778                   </entry>
4779                 </row>
4780                 <row rowsep="0">
4781                   <entry colname="1">
4782                     <para><varname>restart</varname></para>
4783                   </entry>
4784                   <entry colname="2">
4785                     <para>
4786                       The number of cycles that the resolver tried
4787                       remote servers at the <varname>domain</varname>
4788                       zone.
4789                       In each cycle the resolver sends one query
4790                       (possibly resending it, depending on the response)
4791                       to each known name server of
4792                       the <varname>domain</varname> zone.
4793                     </para>
4794                   </entry>
4795                 </row>
4796                 <row rowsep="0">
4797                   <entry colname="1">
4798                     <para><varname>qrysent</varname></para>
4799                   </entry>
4800                   <entry colname="2">
4801                     <para>
4802                       The number of queries the resolver sent at the
4803                       <varname>domain</varname> zone.
4804                     </para>
4805                   </entry>
4806                 </row>
4807                 <row rowsep="0">
4808                   <entry colname="1">
4809                     <para><varname>timeout</varname></para>
4810                   </entry>
4811                   <entry colname="2">
4812                     <para>
4813                       The number of timeouts since the resolver
4814                       received the last response.
4815                     </para>
4816                   </entry>
4817                 </row>
4818                 <row rowsep="0">
4819                   <entry colname="1">
4820                     <para><varname>lame</varname></para>
4821                   </entry>
4822                   <entry colname="2">
4823                     <para>
4824                       The number of lame servers the resolver detected
4825                       at the <varname>domain</varname> zone.
4826                       A server is detected to be lame either by an
4827                       invalid response or as a result of lookup in
4828                       BIND9's address database (ADB), where lame
4829                       servers are cached.
4830                     </para>
4831                   </entry>
4832                 </row>
4833                 <row rowsep="0">
4834                   <entry colname="1">
4835                     <para><varname>neterr</varname></para>
4836                   </entry>
4837                   <entry colname="2">
4838                     <para>
4839                       The number of erroneous results that the
4840                       resolver encountered in sending queries
4841                       at the <varname>domain</varname> zone.
4842                       One common case is the remote server is
4843                       unreachable and the resolver receives an ICMP
4844                       unreachable error message.
4845                     </para>
4846                   </entry>
4847                 </row>
4848                 <row rowsep="0">
4849                   <entry colname="1">
4850                     <para><varname>badresp</varname></para>
4851                   </entry>
4852                   <entry colname="2">
4853                     <para>
4854                       The number of unexpected responses (other than
4855                       <varname>lame</varname>) to queries sent by the
4856                       resolver at the <varname>domain</varname> zone.
4857                     </para>
4858                   </entry>
4859                 </row>
4860                 <row rowsep="0">
4861                   <entry colname="1">
4862                     <para><varname>adberr</varname></para>
4863                   </entry>
4864                   <entry colname="2">
4865                     <para>
4866                       Failures in finding remote server addresses
4867                       of the <varname>domain</varname> zone in the ADB.
4868                       One common case of this is that the remote
4869                       server's name does not have any address records.
4870                     </para>
4871                   </entry>
4872                 </row>
4873                 <row rowsep="0">
4874                   <entry colname="1">
4875                     <para><varname>findfail</varname></para>
4876                   </entry>
4877                   <entry colname="2">
4878                     <para>
4879                       Failures of resolving remote server addresses.
4880                       This is a total number of failures throughout
4881                       the resolution process.
4882                     </para>
4883                   </entry>
4884                 </row>
4885                 <row rowsep="0">
4886                   <entry colname="1">
4887                     <para><varname>valfail</varname></para>
4888                   </entry>
4889                   <entry colname="2">
4890                     <para>
4891                       Failures of DNSSEC validation.
4892                       Validation failures are counted throughout
4893                       the resolution process (not limited to
4894                       the <varname>domain</varname> zone), but should
4895                       only happen in <varname>domain</varname>.
4896                     </para>
4897                   </entry>
4898                 </row>
4899               </tbody>
4900             </tgroup>
4901           </informaltable>
4902           <para>
4903             At the debug levels of 3 or higher, the same messages
4904             as those at the debug 1 level are logged for other errors
4905             than SERVFAIL.
4906             Note that negative responses such as NXDOMAIN are not
4907             regarded as errors here.
4908           </para>
4909           <para>
4910             At the debug levels of 4 or higher, the same messages
4911             as those at the debug 2 level are logged for other errors
4912             than SERVFAIL.
4913             Unlike the above case of level 3, messages are logged for
4914             negative responses.
4915             This is because any unexpected results can be difficult to
4916             debug in the recursion case.
4917           </para>
4918         </sect3>
4919       </sect2>
4920
4921       <sect2>
4922         <title><command>lwres</command> Statement Grammar</title>
4923
4924         <para>
4925            This is the grammar of the <command>lwres</command>
4926           statement in the <filename>named.conf</filename> file:
4927         </para>
4928
4929 <programlisting><command>lwres</command> {
4930     <optional> listen-on { <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ;
4931                 <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
4932     <optional> view <replaceable>view_name</replaceable>; </optional>
4933     <optional> search { <replaceable>domain_name</replaceable> ; <optional> <replaceable>domain_name</replaceable> ; ... </optional> }; </optional>
4934     <optional> ndots <replaceable>number</replaceable>; </optional>
4935 };
4936 </programlisting>
4937
4938       </sect2>
4939       <sect2>
4940         <title><command>lwres</command> Statement Definition and Usage</title>
4941
4942         <para>
4943           The <command>lwres</command> statement configures the
4944           name
4945           server to also act as a lightweight resolver server. (See
4946           <xref linkend="lwresd"/>.)  There may be multiple
4947           <command>lwres</command> statements configuring
4948           lightweight resolver servers with different properties.
4949         </para>
4950
4951         <para>
4952           The <command>listen-on</command> statement specifies a
4953           list of
4954           addresses (and ports) that this instance of a lightweight resolver
4955           daemon
4956           should accept requests on.  If no port is specified, port 921 is
4957           used.
4958           If this statement is omitted, requests will be accepted on
4959           127.0.0.1,
4960           port 921.
4961         </para>
4962
4963         <para>
4964           The <command>view</command> statement binds this
4965           instance of a
4966           lightweight resolver daemon to a view in the DNS namespace, so that
4967           the
4968           response will be constructed in the same manner as a normal DNS
4969           query
4970           matching this view.  If this statement is omitted, the default view
4971           is
4972           used, and if there is no default view, an error is triggered.
4973         </para>
4974
4975         <para>
4976           The <command>search</command> statement is equivalent to
4977           the
4978           <command>search</command> statement in
4979           <filename>/etc/resolv.conf</filename>.  It provides a
4980           list of domains
4981           which are appended to relative names in queries.
4982         </para>
4983
4984         <para>
4985           The <command>ndots</command> statement is equivalent to
4986           the
4987           <command>ndots</command> statement in
4988           <filename>/etc/resolv.conf</filename>.  It indicates the
4989           minimum
4990           number of dots in a relative domain name that should result in an
4991           exact match lookup before search path elements are appended.
4992         </para>
4993       </sect2>
4994       <sect2>
4995         <title><command>masters</command> Statement Grammar</title>
4996
4997 <programlisting>
4998 <command>masters</command> <replaceable>name</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> { ( <replaceable>masters_list</replaceable> | 
4999       <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> <optional>key <replaceable>key</replaceable></optional> ) ; <optional>...</optional> };
5000 </programlisting>
5001
5002       </sect2>
5003
5004       <sect2>
5005         <title><command>masters</command> Statement Definition and
5006           Usage</title>
5007         <para><command>masters</command>
5008           lists allow for a common set of masters to be easily used by
5009           multiple stub and slave zones.
5010         </para>
5011       </sect2>
5012
5013       <sect2>
5014         <title><command>options</command> Statement Grammar</title>
5015
5016         <para>
5017           This is the grammar of the <command>options</command>
5018           statement in the <filename>named.conf</filename> file:
5019         </para>
5020
5021 <programlisting><command>options</command> {
5022     <optional> attach-cache <replaceable>cache_name</replaceable>; </optional>
5023     <optional> version <replaceable>version_string</replaceable>; </optional>
5024     <optional> hostname <replaceable>hostname_string</replaceable>; </optional>
5025     <optional> server-id <replaceable>server_id_string</replaceable>; </optional>
5026     <optional> directory <replaceable>path_name</replaceable>; </optional>
5027     <optional> key-directory <replaceable>path_name</replaceable>; </optional>
5028     <optional> managed-keys-directory <replaceable>path_name</replaceable>; </optional>
5029     <optional> named-xfer <replaceable>path_name</replaceable>; </optional>
5030     <optional> tkey-gssapi-keytab <replaceable>path_name</replaceable>; </optional>
5031     <optional> tkey-gssapi-credential <replaceable>principal</replaceable>; </optional>
5032     <optional> tkey-domain <replaceable>domainname</replaceable>; </optional>
5033     <optional> tkey-dhkey <replaceable>key_name</replaceable> <replaceable>key_tag</replaceable>; </optional>
5034     <optional> cache-file <replaceable>path_name</replaceable>; </optional>
5035     <optional> dump-file <replaceable>path_name</replaceable>; </optional>
5036     <optional> bindkeys-file <replaceable>path_name</replaceable>; </optional>
5037     <optional> secroots-file <replaceable>path_name</replaceable>; </optional>
5038     <optional> session-keyfile <replaceable>path_name</replaceable>; </optional>
5039     <optional> session-keyname <replaceable>key_name</replaceable>; </optional>
5040     <optional> session-keyalg <replaceable>algorithm_id</replaceable>; </optional>
5041     <optional> memstatistics <replaceable>yes_or_no</replaceable>; </optional>
5042     <optional> memstatistics-file <replaceable>path_name</replaceable>; </optional>
5043     <optional> pid-file <replaceable>path_name</replaceable>; </optional>
5044     <optional> recursing-file <replaceable>path_name</replaceable>; </optional>
5045     <optional> statistics-file <replaceable>path_name</replaceable>; </optional>
5046     <optional> zone-statistics <replaceable>yes_or_no</replaceable>; </optional>
5047     <optional> auth-nxdomain <replaceable>yes_or_no</replaceable>; </optional>
5048     <optional> deallocate-on-exit <replaceable>yes_or_no</replaceable>; </optional>
5049     <optional> dialup <replaceable>dialup_option</replaceable>; </optional>
5050     <optional> fake-iquery <replaceable>yes_or_no</replaceable>; </optional>
5051     <optional> fetch-glue <replaceable>yes_or_no</replaceable>; </optional>
5052     <optional> flush-zones-on-shutdown <replaceable>yes_or_no</replaceable>; </optional>
5053     <optional> has-old-clients <replaceable>yes_or_no</replaceable>; </optional>
5054     <optional> host-statistics <replaceable>yes_or_no</replaceable>; </optional>
5055     <optional> host-statistics-max <replaceable>number</replaceable>; </optional>
5056     <optional> minimal-responses <replaceable>yes_or_no</replaceable>; </optional>
5057     <optional> multiple-cnames <replaceable>yes_or_no</replaceable>; </optional>
5058     <optional> notify <replaceable>yes_or_no</replaceable> | <replaceable>explicit</replaceable> | <replaceable>master-only</replaceable>; </optional>
5059     <optional> recursion <replaceable>yes_or_no</replaceable>; </optional>
5060     <optional> rfc2308-type1 <replaceable>yes_or_no</replaceable>; </optional>
5061     <optional> use-id-pool <replaceable>yes_or_no</replaceable>; </optional>
5062     <optional> maintain-ixfr-base <replaceable>yes_or_no</replaceable>; </optional>
5063     <optional> ixfr-from-differences (<replaceable>yes_or_no</replaceable> | <constant>master</constant> | <constant>slave</constant>); </optional>
5064     <optional> dnssec-enable <replaceable>yes_or_no</replaceable>; </optional>
5065     <optional> dnssec-validation (<replaceable>yes_or_no</replaceable> | <constant>auto</constant>); </optional>
5066     <optional> dnssec-lookaside ( <replaceable>auto</replaceable> |
5067                         <replaceable>no</replaceable> |
5068                         <replaceable>domain</replaceable> trust-anchor <replaceable>domain</replaceable> ); </optional>
5069     <optional> dnssec-must-be-secure <replaceable>domain yes_or_no</replaceable>; </optional>
5070     <optional> dnssec-accept-expired <replaceable>yes_or_no</replaceable>; </optional>
5071     <optional> forward ( <replaceable>only</replaceable> | <replaceable>first</replaceable> ); </optional>
5072     <optional> forwarders { <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
5073     <optional> dual-stack-servers <optional>port <replaceable>ip_port</replaceable></optional> {
5074         ( <replaceable>domain_name</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> |
5075           <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ) ; 
5076         ... }; </optional>
5077     <optional> check-names ( <replaceable>master</replaceable> | <replaceable>slave</replaceable> | <replaceable>response</replaceable> )
5078         ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional>
5079     <optional> check-dup-records ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional>
5080     <optional> check-mx ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional>
5081     <optional> check-wildcard <replaceable>yes_or_no</replaceable>; </optional>
5082     <optional> check-integrity <replaceable>yes_or_no</replaceable>; </optional>
5083     <optional> check-mx-cname ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional>
5084     <optional> check-srv-cname ( <replaceable>warn</replaceable> | <replaceable>fail</replaceable> | <replaceable>ignore</replaceable> ); </optional>
5085     <optional> check-sibling <replaceable>yes_or_no</replaceable>; </optional>
5086     <optional> allow-new-zones { <replaceable>yes_or_no</replaceable> }; </optional>
5087     <optional> allow-notify { <replaceable>address_match_list</replaceable> }; </optional>
5088     <optional> allow-query { <replaceable>address_match_list</replaceable> }; </optional>
5089     <optional> allow-query-on { <replaceable>address_match_list</replaceable> }; </optional>
5090     <optional> allow-query-cache { <replaceable>address_match_list</replaceable> }; </optional>
5091     <optional> allow-query-cache-on { <replaceable>address_match_list</replaceable> }; </optional>
5092     <optional> allow-transfer { <replaceable>address_match_list</replaceable> }; </optional>
5093     <optional> allow-recursion { <replaceable>address_match_list</replaceable> }; </optional>
5094     <optional> allow-recursion-on { <replaceable>address_match_list</replaceable> }; </optional>
5095     <optional> allow-update { <replaceable>address_match_list</replaceable> }; </optional>
5096     <optional> allow-update-forwarding { <replaceable>address_match_list</replaceable> }; </optional>
5097     <optional> update-check-ksk <replaceable>yes_or_no</replaceable>; </optional>
5098     <optional> dnssec-dnskey-kskonly <replaceable>yes_or_no</replaceable>; </optional>
5099     <optional> dnssec-secure-to-insecure <replaceable>yes_or_no</replaceable> ;</optional>
5100     <optional> try-tcp-refresh <replaceable>yes_or_no</replaceable>; </optional>
5101     <optional> allow-v6-synthesis { <replaceable>address_match_list</replaceable> }; </optional>
5102     <optional> blackhole { <replaceable>address_match_list</replaceable> }; </optional>
5103     <optional> use-v4-udp-ports { <replaceable>port_list</replaceable> }; </optional>
5104     <optional> avoid-v4-udp-ports { <replaceable>port_list</replaceable> }; </optional>
5105     <optional> use-v6-udp-ports { <replaceable>port_list</replaceable> }; </optional>
5106     <optional> avoid-v6-udp-ports { <replaceable>port_list</replaceable> }; </optional>
5107     <optional> listen-on <optional> port <replaceable>ip_port</replaceable> </optional> { <replaceable>address_match_list</replaceable> }; </optional>
5108     <optional> listen-on-v6 <optional> port <replaceable>ip_port</replaceable> </optional> { <replaceable>address_match_list</replaceable> }; </optional>
5109     <optional> query-source ( ( <replaceable>ip4_addr</replaceable> | <replaceable>*</replaceable> )
5110         <optional> port ( <replaceable>ip_port</replaceable> | <replaceable>*</replaceable> ) </optional> |
5111         <optional> address ( <replaceable>ip4_addr</replaceable> | <replaceable>*</replaceable> ) </optional>
5112         <optional> port ( <replaceable>ip_port</replaceable> | <replaceable>*</replaceable> ) </optional> ) ; </optional>
5113     <optional> query-source-v6 ( ( <replaceable>ip6_addr</replaceable> | <replaceable>*</replaceable> )
5114         <optional> port ( <replaceable>ip_port</replaceable> | <replaceable>*</replaceable> ) </optional> | 
5115         <optional> address ( <replaceable>ip6_addr</replaceable> | <replaceable>*</replaceable> ) </optional> 
5116         <optional> port ( <replaceable>ip_port</replaceable> | <replaceable>*</replaceable> ) </optional> ) ; </optional>
5117     <optional> use-queryport-pool <replaceable>yes_or_no</replaceable>; </optional>
5118     <optional> queryport-pool-ports <replaceable>number</replaceable>; </optional>
5119     <optional> queryport-pool-updateinterval <replaceable>number</replaceable>; </optional>
5120     <optional> max-transfer-time-in <replaceable>number</replaceable>; </optional>
5121     <optional> max-transfer-time-out <replaceable>number</replaceable>; </optional>
5122     <optional> max-transfer-idle-in <replaceable>number</replaceable>; </optional>
5123     <optional> max-transfer-idle-out <replaceable>number</replaceable>; </optional>
5124     <optional> tcp-clients <replaceable>number</replaceable>; </optional>
5125     <optional> reserved-sockets <replaceable>number</replaceable>; </optional>
5126     <optional> recursive-clients <replaceable>number</replaceable>; </optional>
5127     <optional> serial-query-rate <replaceable>number</replaceable>; </optional>
5128     <optional> serial-queries <replaceable>number</replaceable>; </optional>
5129     <optional> tcp-listen-queue <replaceable>number</replaceable>; </optional>
5130     <optional> transfer-format <replaceable>( one-answer | many-answers )</replaceable>; </optional>
5131     <optional> transfers-in  <replaceable>number</replaceable>; </optional>
5132     <optional> transfers-out <replaceable>number</replaceable>; </optional>
5133     <optional> transfers-per-ns <replaceable>number</replaceable>; </optional>
5134     <optional> transfer-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
5135     <optional> transfer-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
5136     <optional> alt-transfer-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
5137     <optional> alt-transfer-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>)
5138                              <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
5139     <optional> use-alt-transfer-source <replaceable>yes_or_no</replaceable>; </optional>
5140     <optional> notify-delay <replaceable>seconds</replaceable> ; </optional>
5141     <optional> notify-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
5142     <optional> notify-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
5143     <optional> notify-to-soa <replaceable>yes_or_no</replaceable> ; </optional>
5144     <optional> also-notify { <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ;
5145                   <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
5146     <optional> max-ixfr-log-size <replaceable>number</replaceable>; </optional>
5147     <optional> max-journal-size <replaceable>size_spec</replaceable>; </optional>
5148     <optional> coresize <replaceable>size_spec</replaceable> ; </optional>
5149     <optional> datasize <replaceable>size_spec</replaceable> ; </optional>
5150     <optional> files <replaceable>size_spec</replaceable> ; </optional>
5151     <optional> stacksize <replaceable>size_spec</replaceable> ; </optional>
5152     <optional> cleaning-interval <replaceable>number</replaceable>; </optional>
5153     <optional> heartbeat-interval <replaceable>number</replaceable>; </optional>
5154     <optional> interface-interval <replaceable>number</replaceable>; </optional>
5155     <optional> statistics-interval <replaceable>number</replaceable>; </optional>
5156     <optional> topology { <replaceable>address_match_list</replaceable> }</optional>;
5157     <optional> sortlist { <replaceable>address_match_list</replaceable> }</optional>;
5158     <optional> rrset-order { <replaceable>order_spec</replaceable> ; <optional> <replaceable>order_spec</replaceable> ; ... </optional> </optional> };
5159     <optional> lame-ttl <replaceable>number</replaceable>; </optional>
5160     <optional> max-ncache-ttl <replaceable>number</replaceable>; </optional>
5161     <optional> max-cache-ttl <replaceable>number</replaceable>; </optional>
5162     <optional> sig-validity-interval <replaceable>number</replaceable> <optional><replaceable>number</replaceable></optional> ; </optional>
5163     <optional> sig-signing-nodes <replaceable>number</replaceable> ; </optional>
5164     <optional> sig-signing-signatures <replaceable>number</replaceable> ; </optional>
5165     <optional> sig-signing-type <replaceable>number</replaceable> ; </optional>
5166     <optional> min-roots <replaceable>number</replaceable>; </optional>
5167     <optional> use-ixfr <replaceable>yes_or_no</replaceable> ; </optional>
5168     <optional> provide-ixfr <replaceable>yes_or_no</replaceable>; </optional>
5169     <optional> request-ixfr <replaceable>yes_or_no</replaceable>; </optional>
5170     <optional> treat-cr-as-space <replaceable>yes_or_no</replaceable> ; </optional>
5171     <optional> min-refresh-time <replaceable>number</replaceable> ; </optional>
5172     <optional> max-refresh-time <replaceable>number</replaceable> ; </optional>
5173     <optional> min-retry-time <replaceable>number</replaceable> ; </optional>
5174     <optional> max-retry-time <replaceable>number</replaceable> ; </optional>
5175     <optional> port <replaceable>ip_port</replaceable>; </optional>
5176     <optional> additional-from-auth <replaceable>yes_or_no</replaceable> ; </optional>
5177     <optional> additional-from-cache <replaceable>yes_or_no</replaceable> ; </optional>
5178     <optional> random-device <replaceable>path_name</replaceable> ; </optional>
5179     <optional> max-cache-size <replaceable>size_spec</replaceable> ; </optional>
5180     <optional> match-mapped-addresses <replaceable>yes_or_no</replaceable>; </optional>
5181     <optional> filter-aaaa-on-v4 ( <replaceable>yes_or_no</replaceable> | <replaceable>break-dnssec</replaceable> ); </optional>
5182     <optional> filter-aaaa { <replaceable>address_match_list</replaceable> }; </optional>
5183     <optional> dns64 <replaceable>IPv6-prefix</replaceable> {
5184         <optional> clients { <replaceable>address_match_list</replaceable> }; </optional>
5185         <optional> mapped { <replaceable>address_match_list</replaceable> }; </optional>
5186         <optional> exclude { <replaceable>address_match_list</replaceable> }; </optional>
5187         <optional> suffix IPv6-address; </optional>
5188         <optional> recursive-only <replaceable>yes_or_no</replaceable>; </optional>
5189         <optional> break-dnssec <replaceable>yes_or_no</replaceable>; </optional>
5190     }; </optional>;
5191     <optional> dns64-server <replaceable>name</replaceable> </optional>
5192     <optional> dns64-contact <replaceable>name</replaceable> </optional>
5193     <optional> preferred-glue ( <replaceable>A</replaceable> | <replaceable>AAAA</replaceable> | <replaceable>NONE</replaceable> ); </optional>
5194     <optional> edns-udp-size <replaceable>number</replaceable>; </optional>
5195     <optional> max-udp-size <replaceable>number</replaceable>; </optional>
5196     <optional> root-delegation-only <optional> exclude { <replaceable>namelist</replaceable> } </optional> ; </optional>
5197     <optional> querylog <replaceable>yes_or_no</replaceable> ; </optional>
5198     <optional> disable-algorithms <replaceable>domain</replaceable> { <replaceable>algorithm</replaceable>;
5199                                 <optional> <replaceable>algorithm</replaceable>; </optional> }; </optional>
5200     <optional> acache-enable <replaceable>yes_or_no</replaceable> ; </optional>
5201     <optional> acache-cleaning-interval <replaceable>number</replaceable>; </optional>
5202     <optional> max-acache-size <replaceable>size_spec</replaceable> ; </optional>
5203     <optional> clients-per-query <replaceable>number</replaceable> ; </optional>
5204     <optional> max-clients-per-query <replaceable>number</replaceable> ; </optional>
5205     <optional> masterfile-format (<constant>text</constant>|<constant>raw</constant>) ; </optional>
5206     <optional> empty-server <replaceable>name</replaceable> ; </optional>
5207     <optional> empty-contact <replaceable>name</replaceable> ; </optional>
5208     <optional> empty-zones-enable <replaceable>yes_or_no</replaceable> ; </optional>
5209     <optional> disable-empty-zone <replaceable>zone_name</replaceable> ; </optional>
5210     <optional> zero-no-soa-ttl <replaceable>yes_or_no</replaceable> ; </optional>
5211     <optional> zero-no-soa-ttl-cache <replaceable>yes_or_no</replaceable> ; </optional>
5212     <optional> resolver-query-timeout <replaceable>number</replaceable> ; </optional>
5213     <optional> deny-answer-addresses { <replaceable>address_match_list</replaceable> } <optional> except-from { <replaceable>namelist</replaceable> } </optional>;</optional>
5214     <optional> deny-answer-aliases { <replaceable>namelist</replaceable> } <optional> except-from { <replaceable>namelist</replaceable> } </optional>;</optional>
5215     <optional> response-policy { <replaceable>zone_name</replaceable>
5216         <optional> policy given | disabled | passthru | nxdomain | nodata | cname <replaceable>domain</replaceable> </optional>
5217         <optional> recursive-only <replaceable>yes_or_no</replaceable> </optional> <optional> max-policy-ttl <replaceable>number</replaceable> </optional> ;
5218     } <optional> recursive-only <replaceable>yes_or_no</replaceable> </optional> <optional> max-policy-ttl <replaceable>number</replaceable> </optional>
5219         <optional> break-dnssec <replaceable>yes_or_no</replaceable> </optional> ; </optional>
5220 };
5221 </programlisting>
5222
5223       </sect2>
5224
5225       <sect2 id="options">
5226         <title><command>options</command> Statement Definition and
5227           Usage</title>
5228
5229         <para>
5230           The <command>options</command> statement sets up global
5231           options
5232           to be used by <acronym>BIND</acronym>. This statement
5233           may appear only
5234           once in a configuration file. If there is no <command>options</command>
5235           statement, an options block with each option set to its default will
5236           be used.
5237         </para>
5238
5239         <variablelist>
5240
5241             <varlistentry>
5242               <term><command>attach-cache</command></term>
5243               <listitem>
5244                 <para>
5245                   Allows multiple views to share a single cache
5246                   database.
5247                   Each view has its own cache database by default, but
5248                   if multiple views have the same operational policy
5249                   for name resolution and caching, those views can
5250                   share a single cache to save memory and possibly
5251                   improve resolution efficiency by using this option.
5252                 </para>
5253
5254                 <para>
5255                   The <command>attach-cache</command> option
5256                   may also be specified in <command>view</command>
5257                   statements, in which case it overrides the
5258                   global <command>attach-cache</command> option.
5259                 </para>
5260
5261                 <para>
5262                   The <replaceable>cache_name</replaceable> specifies
5263                   the cache to be shared.
5264                   When the <command>named</command> server configures
5265                   views which are supposed to share a cache, it
5266                   creates a cache with the specified name for the
5267                   first view of these sharing views.
5268                   The rest of the views will simply refer to the
5269                   already created cache.
5270                 </para>
5271
5272                 <para>
5273                   One common configuration to share a cache would be to
5274                   allow all views to share a single cache.
5275                   This can be done by specifying
5276                   the <command>attach-cache</command> as a global
5277                   option with an arbitrary name.
5278                 </para>
5279
5280                 <para>
5281                   Another possible operation is to allow a subset of
5282                   all views to share a cache while the others to
5283                   retain their own caches.
5284                   For example, if there are three views A, B, and C,
5285                   and only A and B should share a cache, specify the
5286                   <command>attach-cache</command> option as a view A (or
5287                   B)'s option, referring to the other view name:
5288                 </para>
5289
5290 <programlisting>
5291   view "A" {
5292     // this view has its own cache
5293     ...
5294   };
5295   view "B" {
5296     // this view refers to A's cache
5297     attach-cache "A";
5298   };
5299   view "C" {
5300     // this view has its own cache
5301     ...
5302   };
5303 </programlisting>
5304
5305                 <para>
5306                   Views that share a cache must have the same policy
5307                   on configurable parameters that may affect caching.
5308                   The current implementation requires the following
5309                   configurable options be consistent among these
5310                   views:
5311                   <command>check-names</command>,
5312                   <command>cleaning-interval</command>,
5313                   <command>dnssec-accept-expired</command>,
5314                   <command>dnssec-validation</command>,
5315                   <command>max-cache-ttl</command>,
5316                   <command>max-ncache-ttl</command>,
5317                   <command>max-cache-size</command>, and
5318                   <command>zero-no-soa-ttl</command>.
5319                 </para>
5320
5321                 <para>
5322                   Note that there may be other parameters that may
5323                   cause confusion if they are inconsistent for
5324                   different views that share a single cache.
5325                   For example, if these views define different sets of
5326                   forwarders that can return different answers for the
5327                   same question, sharing the answer does not make
5328                   sense or could even be harmful.
5329                   It is administrator's responsibility to ensure
5330                   configuration differences in different views do
5331                   not cause disruption with a shared cache.
5332                 </para>
5333               </listitem>
5334
5335             </varlistentry>
5336
5337           <varlistentry>
5338             <term><command>directory</command></term>
5339             <listitem>
5340               <para>
5341                 The working directory of the server.
5342                 Any non-absolute pathnames in the configuration file will be
5343                 taken
5344                 as relative to this directory. The default location for most
5345                 server
5346                 output files (e.g. <filename>named.run</filename>)
5347                 is this directory.
5348                 If a directory is not specified, the working directory
5349                 defaults to `<filename>.</filename>', the directory from
5350                 which the server
5351                 was started. The directory specified should be an absolute
5352                 path.
5353               </para>
5354             </listitem>
5355           </varlistentry>
5356
5357           <varlistentry>
5358             <term><command>key-directory</command></term>
5359             <listitem>
5360               <para>
5361                 When performing dynamic update of secure zones, the
5362                 directory where the public and private DNSSEC key files
5363                 should be found, if different than the current working
5364                 directory.  (Note that this option has no effect on the
5365                 paths for files containing non-DNSSEC keys such as
5366                 <filename>bind.keys</filename>,
5367                 <filename>rndc.key</filename> or
5368                 <filename>session.key</filename>.)
5369               </para>
5370             </listitem>
5371           </varlistentry>
5372
5373           <varlistentry>
5374             <term><command>managed-keys-directory</command></term>
5375             <listitem>
5376               <para>
5377                 The directory used to hold the files used to track managed keys.
5378                 By default it is the working directory.  It there are no
5379                 views then the file <filename>managed-keys.bind</filename>
5380                 otherwise a SHA256 hash of the view name is used with
5381                 <filename>.mkeys</filename> extension added.
5382               </para>
5383             </listitem>
5384           </varlistentry>
5385
5386           <varlistentry>
5387             <term><command>named-xfer</command></term>
5388             <listitem>
5389               <para>
5390                 <emphasis>This option is obsolete.</emphasis> It
5391                 was used in <acronym>BIND</acronym> 8 to specify
5392                 the pathname to the <command>named-xfer</command>
5393                 program.  In <acronym>BIND</acronym> 9, no separate
5394                 <command>named-xfer</command> program is needed;
5395                 its functionality is built into the name server.
5396               </para>
5397             </listitem>
5398           </varlistentry>
5399
5400           <varlistentry>
5401             <term><command>tkey-gssapi-keytab</command></term>
5402             <listitem>
5403               <para>
5404                 The KRB5 keytab file to use for GSS-TSIG updates. If
5405                 this option is set and tkey-gssapi-credential is not
5406                 set, then updates will be allowed with any key
5407                 matching a principal in the specified keytab.
5408               </para>
5409             </listitem>
5410           </varlistentry>
5411
5412           <varlistentry>
5413             <term><command>tkey-gssapi-credential</command></term>
5414             <listitem>
5415               <para>
5416                 The security credential with which the server should
5417                 authenticate keys requested by the GSS-TSIG protocol.
5418                 Currently only Kerberos 5 authentication is available
5419                 and the credential is a Kerberos principal which the
5420                 server can acquire through the default system key
5421                 file, normally <filename>/etc/krb5.keytab</filename>.
5422                 The location keytab file can be overridden using the
5423                 tkey-gssapi-keytab option. Normally this principal is
5424                 of the form "<userinput>DNS/</userinput><varname>server.domain</varname>".
5425                 To use GSS-TSIG, <command>tkey-domain</command> must
5426                 also be set if a specific keytab is not set with
5427                 tkey-gssapi-keytab.
5428               </para>
5429             </listitem>
5430           </varlistentry>
5431
5432           <varlistentry>
5433             <term><command>tkey-domain</command></term>
5434             <listitem>
5435               <para>
5436                 The domain appended to the names of all shared keys
5437                 generated with <command>TKEY</command>.  When a
5438                 client requests a <command>TKEY</command> exchange,
5439                 it may or may not specify the desired name for the
5440                 key. If present, the name of the shared key will
5441                 be <varname>client specified part</varname> +
5442                 <varname>tkey-domain</varname>.  Otherwise, the
5443                 name of the shared key will be <varname>random hex
5444                 digits</varname> + <varname>tkey-domain</varname>.
5445                 In most cases, the <command>domainname</command>
5446                 should be the server's domain name, or an otherwise
5447                 non-existent subdomain like
5448                 "_tkey.<varname>domainname</varname>".  If you are
5449                 using GSS-TSIG, this variable must be defined, unless
5450                 you specify a specific keytab using tkey-gssapi-keytab.
5451               </para>
5452             </listitem>
5453           </varlistentry>
5454
5455           <varlistentry>
5456             <term><command>tkey-dhkey</command></term>
5457             <listitem>
5458               <para>
5459                 The Diffie-Hellman key used by the server
5460                 to generate shared keys with clients using the Diffie-Hellman
5461                 mode
5462                 of <command>TKEY</command>. The server must be
5463                 able to load the
5464                 public and private keys from files in the working directory.
5465                 In
5466                 most cases, the keyname should be the server's host name.
5467               </para>
5468             </listitem>
5469           </varlistentry>
5470
5471           <varlistentry>
5472             <term><command>cache-file</command></term>
5473             <listitem>
5474               <para>
5475                 This is for testing only.  Do not use.
5476               </para>
5477             </listitem>
5478           </varlistentry>
5479
5480           <varlistentry>
5481             <term><command>dump-file</command></term>
5482             <listitem>
5483               <para>
5484                 The pathname of the file the server dumps
5485                 the database to when instructed to do so with
5486                 <command>rndc dumpdb</command>.
5487                 If not specified, the default is <filename>named_dump.db</filename>.
5488               </para>
5489             </listitem>
5490           </varlistentry>
5491
5492           <varlistentry>
5493             <term><command>memstatistics-file</command></term>
5494             <listitem>
5495               <para>
5496                 The pathname of the file the server writes memory
5497                 usage statistics to on exit. If not specified,
5498                 the default is <filename>named.memstats</filename>.
5499               </para>
5500             </listitem>
5501           </varlistentry>
5502
5503           <varlistentry>
5504             <term><command>pid-file</command></term>
5505             <listitem>
5506               <para>
5507                 The pathname of the file the server writes its process ID
5508                 in. If not specified, the default is
5509                 <filename>/var/run/named/named.pid</filename>.
5510                 The PID file is used by programs that want to send signals to
5511                 the running
5512                 name server. Specifying <command>pid-file none</command> disables the
5513                 use of a PID file &mdash; no file will be written and any
5514                 existing one will be removed.  Note that <command>none</command>
5515                 is a keyword, not a filename, and therefore is not enclosed
5516                 in
5517                 double quotes.
5518               </para>
5519             </listitem>
5520           </varlistentry>
5521
5522           <varlistentry>
5523             <term><command>recursing-file</command></term>
5524             <listitem>
5525               <para>
5526                 The pathname of the file the server dumps
5527                 the queries that are currently recursing when instructed
5528                 to do so with <command>rndc recursing</command>.
5529                 If not specified, the default is <filename>named.recursing</filename>.
5530               </para>
5531             </listitem>
5532           </varlistentry>
5533
5534           <varlistentry>
5535             <term><command>statistics-file</command></term>
5536             <listitem>
5537               <para>
5538                 The pathname of the file the server appends statistics
5539                 to when instructed to do so using <command>rndc stats</command>.
5540                 If not specified, the default is <filename>named.stats</filename> in the
5541                 server's current directory.  The format of the file is
5542                 described
5543                 in <xref linkend="statsfile"/>.
5544               </para>
5545             </listitem>
5546           </varlistentry>
5547
5548           <varlistentry>
5549             <term><command>bindkeys-file</command></term>
5550             <listitem>
5551               <para>
5552                 The pathname of a file to override the built-in trusted
5553                 keys provided by <command>named</command>.
5554                 See the discussion of <command>dnssec-lookaside</command>
5555                 and <command>dnssec-validation</command> for details. 
5556                 If not specified, the default is
5557                 <filename>/etc/bind.keys</filename>.
5558               </para>
5559             </listitem>
5560           </varlistentry>
5561
5562           <varlistentry>
5563             <term><command>secroots-file</command></term>
5564             <listitem>
5565               <para>
5566                 The pathname of the file the server dumps
5567                 security roots to when instructed to do so with
5568                 <command>rndc secroots</command>.
5569                 If not specified, the default is
5570                 <filename>named.secroots</filename>.
5571               </para>
5572             </listitem>
5573           </varlistentry>
5574
5575           <varlistentry>
5576             <term><command>session-keyfile</command></term>
5577             <listitem>
5578               <para>
5579                 The pathname of the file into which to write a TSIG
5580                 session key generated by <command>named</command> for use by
5581                 <command>nsupdate -l</command>.  If not specified, the
5582                 default is <filename>/var/run/named/session.key</filename>.
5583                 (See <xref linkend="dynamic_update_policies"/>, and in
5584                 particular the discussion of the
5585                 <command>update-policy</command> statement's
5586                 <userinput>local</userinput> option for more
5587                 information about this feature.)
5588               </para>
5589             </listitem>
5590           </varlistentry>
5591
5592           <varlistentry>
5593             <term><command>session-keyname</command></term>
5594             <listitem>
5595               <para>
5596                 The key name to use for the TSIG session key.
5597                 If not specified, the default is "local-ddns".
5598               </para>
5599             </listitem>
5600           </varlistentry>
5601
5602           <varlistentry>
5603             <term><command>session-keyalg</command></term>
5604             <listitem>
5605               <para>
5606                 The algorithm to use for the TSIG session key.
5607                 Valid values are hmac-sha1, hmac-sha224, hmac-sha256,
5608                 hmac-sha384, hmac-sha512 and hmac-md5.  If not
5609                 specified, the default is hmac-sha256.
5610               </para>
5611             </listitem>
5612           </varlistentry>
5613
5614           <varlistentry>
5615             <term><command>port</command></term>
5616             <listitem>
5617               <para>
5618                 The UDP/TCP port number the server uses for
5619                 receiving and sending DNS protocol traffic.
5620                 The default is 53.  This option is mainly intended for server
5621                 testing;
5622                 a server using a port other than 53 will not be able to
5623                 communicate with
5624                 the global DNS.
5625               </para>
5626             </listitem>
5627           </varlistentry>
5628
5629           <varlistentry>
5630             <term><command>random-device</command></term>
5631             <listitem>
5632               <para>
5633                 The source of entropy to be used by the server.  Entropy is
5634                 primarily needed
5635                 for DNSSEC operations, such as TKEY transactions and dynamic
5636                 update of signed
5637                 zones.  This options specifies the device (or file) from which
5638                 to read
5639                 entropy.  If this is a file, operations requiring entropy will
5640                 fail when the
5641                 file has been exhausted.  If not specified, the default value
5642                 is
5643                 <filename>/dev/random</filename>
5644                 (or equivalent) when present, and none otherwise.  The
5645                 <command>random-device</command> option takes
5646                 effect during
5647                 the initial configuration load at server startup time and
5648                 is ignored on subsequent reloads.
5649               </para>
5650             </listitem>
5651           </varlistentry>
5652
5653           <varlistentry>
5654             <term><command>preferred-glue</command></term>
5655             <listitem>
5656               <para>
5657                 If specified, the listed type (A or AAAA) will be emitted
5658                 before other glue
5659                 in the additional section of a query response.
5660                 The default is not to prefer any type (NONE).
5661               </para>
5662             </listitem>
5663           </varlistentry>
5664
5665           <varlistentry id="root_delegation_only">
5666             <term><command>root-delegation-only</command></term>
5667             <listitem>
5668               <para>
5669                 Turn on enforcement of delegation-only in TLDs
5670                 (top level domains) and root zones with an optional
5671                 exclude list.
5672               </para>
5673               <para>
5674                 DS queries are expected to be made to and be answered by
5675                 delegation only zones.  Such queries and responses are
5676                 treated as an exception to delegation-only processing
5677                 and are not converted to NXDOMAIN responses provided
5678                 a CNAME is not discovered at the query name.
5679               </para>
5680               <para>
5681                 If a delegation only zone server also serves a child
5682                 zone it is not always possible to determine whether
5683                 an answer comes from the delegation only zone or the
5684                 child zone.  SOA NS and DNSKEY records are apex
5685                 only records and a matching response that contains
5686                 these records or DS is treated as coming from a
5687                 child zone.  RRSIG records are also examined to see
5688                 if they are signed by a child zone or not.  The
5689                 authority section is also examined to see if there
5690                 is evidence that the answer is from the child zone.
5691                 Answers that are determined to be from a child zone
5692                 are not converted to NXDOMAIN responses.  Despite
5693                 all these checks there is still a possibility of
5694                 false negatives when a child zone is being served.
5695               </para>
5696               <para>
5697                 Similarly false positives can arise from empty nodes
5698                 (no records at the name) in the delegation only zone
5699                 when the query type is not ANY.
5700               </para>
5701               <para>
5702                 Note some TLDs are not delegation only (e.g. "DE", "LV",
5703                 "US" and "MUSEUM").  This list is not exhaustive.
5704               </para>
5705
5706 <programlisting>
5707 options {
5708         root-delegation-only exclude { "de"; "lv"; "us"; "museum"; };
5709 };
5710 </programlisting>
5711
5712             </listitem>
5713           </varlistentry>
5714
5715           <varlistentry>
5716             <term><command>disable-algorithms</command></term>
5717             <listitem>
5718               <para>
5719                 Disable the specified DNSSEC algorithms at and below the
5720                 specified name.
5721                 Multiple <command>disable-algorithms</command>
5722                 statements are allowed.
5723                 Only the most specific will be applied.
5724               </para>
5725             </listitem>
5726           </varlistentry>
5727
5728           <varlistentry>
5729             <term><command>dnssec-lookaside</command></term>
5730             <listitem>
5731               <para>
5732                 When set, <command>dnssec-lookaside</command> provides the
5733                 validator with an alternate method to validate DNSKEY
5734                 records at the top of a zone.  When a DNSKEY is at or
5735                 below a domain specified by the deepest
5736                 <command>dnssec-lookaside</command>, and the normal DNSSEC
5737                 validation has left the key untrusted, the trust-anchor
5738                 will be appended to the key name and a DLV record will be
5739                 looked up to see if it can validate the key.  If the DLV
5740                 record validates a DNSKEY (similarly to the way a DS
5741                 record does) the DNSKEY RRset is deemed to be trusted.
5742               </para>
5743               <para>
5744                 If <command>dnssec-lookaside</command> is set to
5745                 <userinput>auto</userinput>, then built-in default
5746                 values for the DLV domain and trust anchor will be
5747                 used, along with a built-in key for validation.
5748               </para>
5749               <para>
5750                 If <command>dnssec-lookaside</command> is set to
5751                 <userinput>no</userinput>, then dnssec-lookaside
5752                 is not used.
5753               </para>
5754               <para>
5755                 The default DLV key is stored in the file
5756                 <filename>bind.keys</filename>;
5757                 <command>named</command> will load that key at
5758                 startup if <command>dnssec-lookaside</command> is set to
5759                 <constant>auto</constant>.  A copy of the file is
5760                 installed along with <acronym>BIND</acronym> 9, and is
5761                 current as of the release date.  If the DLV key expires, a
5762                 new copy of <filename>bind.keys</filename> can be downloaded
5763                 from <ulink>https://www.isc.org/solutions/dlv</ulink>.
5764               </para>
5765               <para>
5766                 (To prevent problems if <filename>bind.keys</filename> is
5767                 not found, the current key is also compiled in to
5768                 <command>named</command>.  Relying on this is not
5769                 recommended, however, as it requires <command>named</command>
5770                 to be recompiled with a new key when the DLV key expires.)
5771               </para>
5772               <para>
5773                 NOTE: <command>named</command> only loads certain specific
5774                 keys from <filename>bind.keys</filename>:  those for the
5775                 DLV zone and for the DNS root zone.  The file cannot be
5776                 used to store keys for other zones.
5777               </para>
5778             </listitem>
5779           </varlistentry>
5780
5781           <varlistentry>
5782             <term><command>dnssec-must-be-secure</command></term>
5783             <listitem>
5784               <para>
5785                 Specify hierarchies which must be or may not be secure
5786                 (signed and validated).  If <userinput>yes</userinput>,
5787                 then <command>named</command> will only accept answers if
5788                 they are secure.  If <userinput>no</userinput>, then normal
5789                 DNSSEC validation applies allowing for insecure answers to
5790                 be accepted.  The specified domain must be under a
5791                 <command>trusted-keys</command> or
5792                 <command>managed-keys</command> statement, or
5793                 <command>dnssec-lookaside</command> must be active.
5794               </para>
5795             </listitem>
5796           </varlistentry>
5797
5798           <varlistentry>
5799             <term><command>dns64</command></term>
5800             <listitem>
5801               <para>
5802                 This directive instructs <command>named</command> to
5803                 return mapped IPv4 addresses to AAAA queries when
5804                 there are no AAAA records.  It is intended to be
5805                 used in conjunction with a NAT64.  Each
5806                 <command>dns64</command> defines one DNS64 prefix.
5807                 Multiple DNS64 prefixes can be defined.
5808               </para>
5809               <para>
5810                 Compatible IPv6 prefixes have lengths of 32, 40, 48, 56,
5811                 64 and 96 as per RFC 6052.
5812               </para>
5813               <para>
5814                 Additionally a reverse IP6.ARPA zone will be created for
5815                 the prefix to provide a mapping from the IP6.ARPA names
5816                 to the corresponding IN-ADDR.ARPA names using synthesized
5817                 CNAMEs.  <command>dns64-server</command> and
5818                 <command>dns64-contact</command> can be used to specify
5819                 the name of the server and contact for the zones. These
5820                 are settable at the view / options level.  These are
5821                 not settable on a per-prefix basis.
5822               </para>
5823               <para>
5824                 Each <command>dns64</command> supports an optional
5825                 <command>clients</command> ACL that determines which
5826                 clients are affected by this directive.  If not defined,
5827                 it defaults to <userinput>any;</userinput>.
5828               </para>
5829               <para>
5830                 Each <command>dns64</command> supports an optional
5831                 <command>mapped</command> ACL that selects which
5832                 IPv4 addresses are to be mapped in the corresponding    
5833                 A RRset.  If not defined it defaults to
5834                 <userinput>any;</userinput>.
5835               </para>
5836               <para>
5837                 Normally, DNS64 won't apply to a domain name that
5838                 owns one or more AAAA records; these records will
5839                 simply be returned.  The optional
5840                 <command>exclude</command> ACL allows specification
5841                 of a list of IPv6 addresses that will be ignored
5842                 if they appear in a domain name's AAAA records, and
5843                 DNS64 will be applied to any A records the domain
5844                 name owns.  If not defined, <command>exclude</command>
5845                 defaults to none.
5846               </para>
5847               <para>
5848                 A optional <command>suffix</command> can also
5849                 be defined to set the bits trailing the mapped
5850                 IPv4 address bits.  By default these bits are
5851                 set to <userinput>::</userinput>.  The bits
5852                 matching the prefix and mapped IPv4 address
5853                 must be zero.
5854               </para>
5855               <para>
5856                 If <command>recursive-only</command> is set to
5857                 <command>yes</command> the DNS64 synthesis will
5858                 only happen for recursive queries.  The default
5859                 is <command>no</command>.
5860               </para>
5861               <para>
5862                 If <command>break-dnssec</command> is set to
5863                 <command>yes</command> the DNS64 synthesis will
5864                 happen even if the result, if validated, would
5865                 cause a DNSSEC validation failure.  If this option
5866                 is set to <command>no</command> (the default), the DO
5867                 is set on the incoming query, and there are RRSIGs on
5868                 the applicable records, then synthesis will not happen.
5869               </para>
5870 <programlisting>
5871         acl rfc1918 { 10/8; 192.168/16; 172.16/12; };
5872
5873         dns64 64:FF9B::/96 {
5874                 clients { any; };
5875                 mapped { !rfc1918; any; };
5876                 exclude { 64:FF9B::/96; ::ffff:0000:0000/96; };
5877                 suffix ::;
5878         };
5879 </programlisting>
5880             </listitem>
5881           </varlistentry>
5882
5883         </variablelist>
5884
5885         <sect3 id="boolean_options">
5886           <title>Boolean Options</title>
5887
5888           <variablelist>
5889
5890             <varlistentry>
5891               <term><command>allow-new-zones</command></term>
5892               <listitem>
5893                 <para>
5894                   If <userinput>yes</userinput>, then zones can be
5895                   added at runtime via <command>rndc addzone</command>
5896                   or deleted via <command>rndc delzone</command>.
5897                   The default is <userinput>no</userinput>.
5898                 </para>
5899               </listitem>
5900             </varlistentry>
5901
5902             <varlistentry>
5903               <term><command>auth-nxdomain</command></term>
5904               <listitem>
5905                 <para>
5906                   If <userinput>yes</userinput>, then the <command>AA</command> bit
5907                   is always set on NXDOMAIN responses, even if the server is
5908                   not actually
5909                   authoritative. The default is <userinput>no</userinput>;
5910                   this is
5911                   a change from <acronym>BIND</acronym> 8. If you
5912                   are using very old DNS software, you
5913                   may need to set it to <userinput>yes</userinput>.
5914                 </para>
5915               </listitem>
5916             </varlistentry>
5917
5918             <varlistentry>
5919               <term><command>deallocate-on-exit</command></term>
5920               <listitem>
5921                 <para>
5922                   This option was used in <acronym>BIND</acronym>
5923                   8 to enable checking
5924                   for memory leaks on exit. <acronym>BIND</acronym> 9 ignores the option and always performs
5925                   the checks.
5926                 </para>
5927               </listitem>
5928             </varlistentry>
5929
5930             <varlistentry>
5931               <term><command>memstatistics</command></term>
5932               <listitem>
5933                 <para>
5934                   Write memory statistics to the file specified by
5935                   <command>memstatistics-file</command> at exit.
5936                   The default is <userinput>no</userinput> unless
5937                   '-m record' is specified on the command line in
5938                   which case it is <userinput>yes</userinput>.
5939                 </para>
5940               </listitem>
5941             </varlistentry>
5942
5943             <varlistentry>
5944               <term><command>dialup</command></term>
5945               <listitem>
5946                 <para>
5947                   If <userinput>yes</userinput>, then the
5948                   server treats all zones as if they are doing zone transfers
5949                   across
5950                   a dial-on-demand dialup link, which can be brought up by
5951                   traffic
5952                   originating from this server. This has different effects
5953                   according
5954                   to zone type and concentrates the zone maintenance so that
5955                   it all
5956                   happens in a short interval, once every <command>heartbeat-interval</command> and
5957                   hopefully during the one call. It also suppresses some of
5958                   the normal
5959                   zone maintenance traffic. The default is <userinput>no</userinput>.
5960                 </para>
5961                 <para>
5962                   The <command>dialup</command> option
5963                   may also be specified in the <command>view</command> and
5964                   <command>zone</command> statements,
5965                   in which case it overrides the global <command>dialup</command>
5966                   option.
5967                 </para>
5968                 <para>
5969                   If the zone is a master zone, then the server will send out a
5970                   NOTIFY
5971                   request to all the slaves (default). This should trigger the
5972                   zone serial
5973                   number check in the slave (providing it supports NOTIFY)
5974                   allowing the slave
5975                   to verify the zone while the connection is active.
5976                   The set of servers to which NOTIFY is sent can be controlled
5977                   by
5978                   <command>notify</command> and <command>also-notify</command>.
5979                 </para>
5980                 <para>
5981                   If the
5982                   zone is a slave or stub zone, then the server will suppress
5983                   the regular
5984                   "zone up to date" (refresh) queries and only perform them
5985                   when the
5986                   <command>heartbeat-interval</command> expires in
5987                   addition to sending
5988                   NOTIFY requests.
5989                 </para>
5990                 <para>
5991                   Finer control can be achieved by using
5992                   <userinput>notify</userinput> which only sends NOTIFY
5993                   messages,
5994                   <userinput>notify-passive</userinput> which sends NOTIFY
5995                   messages and
5996                   suppresses the normal refresh queries, <userinput>refresh</userinput>
5997                   which suppresses normal refresh processing and sends refresh
5998                   queries
5999                   when the <command>heartbeat-interval</command>
6000                   expires, and
6001                   <userinput>passive</userinput> which just disables normal
6002                   refresh
6003                   processing.
6004                 </para>
6005
6006                 <informaltable colsep="0" rowsep="0">
6007                   <tgroup cols="4" colsep="0" rowsep="0" tgroupstyle="4Level-table">
6008                     <colspec colname="1" colnum="1" colsep="0" colwidth="1.150in"/>
6009                     <colspec colname="2" colnum="2" colsep="0" colwidth="1.150in"/>
6010                     <colspec colname="3" colnum="3" colsep="0" colwidth="1.150in"/>
6011                     <colspec colname="4" colnum="4" colsep="0" colwidth="1.150in"/>
6012                     <tbody>
6013                       <row rowsep="0">
6014                         <entry colname="1">
6015                           <para>
6016                             dialup mode
6017                           </para>
6018                         </entry>
6019                         <entry colname="2">
6020                           <para>
6021                             normal refresh
6022                           </para>
6023                         </entry>
6024                         <entry colname="3">
6025                           <para>
6026                             heart-beat refresh
6027                           </para>
6028                         </entry>
6029                         <entry colname="4">
6030                           <para>
6031                             heart-beat notify
6032                           </para>
6033                         </entry>
6034                       </row>
6035                       <row rowsep="0">
6036                         <entry colname="1">
6037                           <para><command>no</command> (default)</para>
6038                         </entry>
6039                         <entry colname="2">
6040                           <para>
6041                             yes
6042                           </para>
6043                         </entry>
6044                         <entry colname="3">
6045                           <para>
6046                             no
6047                           </para>
6048                         </entry>
6049                         <entry colname="4">
6050                           <para>
6051                             no
6052                           </para>
6053                         </entry>
6054                       </row>
6055                       <row rowsep="0">
6056                         <entry colname="1">
6057                           <para><command>yes</command></para>
6058                         </entry>
6059                         <entry colname="2">
6060                           <para>
6061                             no
6062                           </para>
6063                         </entry>
6064                         <entry colname="3">
6065                           <para>
6066                             yes
6067                           </para>
6068                         </entry>
6069                         <entry colname="4">
6070                           <para>
6071                             yes
6072                           </para>
6073                         </entry>
6074                       </row>
6075                       <row rowsep="0">
6076                         <entry colname="1">
6077                           <para><command>notify</command></para>
6078                         </entry>
6079                         <entry colname="2">
6080                           <para>
6081                             yes
6082                           </para>
6083                         </entry>
6084                         <entry colname="3">
6085                           <para>
6086                             no
6087                           </para>
6088                         </entry>
6089                         <entry colname="4">
6090                           <para>
6091                             yes
6092                           </para>
6093                         </entry>
6094                       </row>
6095                       <row rowsep="0">
6096                         <entry colname="1">
6097                           <para><command>refresh</command></para>
6098                         </entry>
6099                         <entry colname="2">
6100                           <para>
6101                             no
6102                           </para>
6103                         </entry>
6104                         <entry colname="3">
6105                           <para>
6106                             yes
6107                           </para>
6108                         </entry>
6109                         <entry colname="4">
6110                           <para>
6111                             no
6112                           </para>
6113                         </entry>
6114                       </row>
6115                       <row rowsep="0">
6116                         <entry colname="1">
6117                           <para><command>passive</command></para>
6118                         </entry>
6119                         <entry colname="2">
6120                           <para>
6121                             no
6122                           </para>
6123                         </entry>
6124                         <entry colname="3">
6125                           <para>
6126                             no
6127                           </para>
6128                         </entry>
6129                         <entry colname="4">
6130                           <para>
6131                             no
6132                           </para>
6133                         </entry>
6134                       </row>
6135                       <row rowsep="0">
6136                         <entry colname="1">
6137                           <para><command>notify-passive</command></para>
6138                         </entry>
6139                         <entry colname="2">
6140                           <para>
6141                             no
6142                           </para>
6143                         </entry>
6144                         <entry colname="3">
6145                           <para>
6146                             no
6147                           </para>
6148                         </entry>
6149                         <entry colname="4">
6150                           <para>
6151                             yes
6152                           </para>
6153                         </entry>
6154                       </row>
6155                     </tbody>
6156                   </tgroup>
6157                 </informaltable>
6158
6159                 <para>
6160                   Note that normal NOTIFY processing is not affected by
6161                   <command>dialup</command>.
6162                 </para>
6163
6164               </listitem>
6165             </varlistentry>
6166
6167             <varlistentry>
6168               <term><command>fake-iquery</command></term>
6169               <listitem>
6170                 <para>
6171                   In <acronym>BIND</acronym> 8, this option
6172                   enabled simulating the obsolete DNS query type
6173                   IQUERY. <acronym>BIND</acronym> 9 never does
6174                   IQUERY simulation.
6175                 </para>
6176               </listitem>
6177             </varlistentry>
6178
6179             <varlistentry>
6180               <term><command>fetch-glue</command></term>
6181               <listitem>
6182                 <para>
6183                   This option is obsolete.
6184                   In BIND 8, <userinput>fetch-glue yes</userinput>
6185                   caused the server to attempt to fetch glue resource records
6186                   it
6187                   didn't have when constructing the additional
6188                   data section of a response.  This is now considered a bad
6189                   idea
6190                   and BIND 9 never does it.
6191                 </para>
6192               </listitem>
6193             </varlistentry>
6194
6195             <varlistentry>
6196               <term><command>flush-zones-on-shutdown</command></term>
6197               <listitem>
6198                 <para>
6199                   When the nameserver exits due receiving SIGTERM,
6200                   flush or do not flush any pending zone writes.  The default
6201                   is
6202                   <command>flush-zones-on-shutdown</command> <userinput>no</userinput>.
6203                 </para>
6204               </listitem>
6205             </varlistentry>
6206
6207             <varlistentry>
6208               <term><command>has-old-clients</command></term>
6209               <listitem>
6210                 <para>
6211                   This option was incorrectly implemented
6212                   in <acronym>BIND</acronym> 8, and is ignored by <acronym>BIND</acronym> 9.
6213                   To achieve the intended effect
6214                   of
6215                   <command>has-old-clients</command> <userinput>yes</userinput>, specify
6216                   the two separate options <command>auth-nxdomain</command> <userinput>yes</userinput>
6217                   and <command>rfc2308-type1</command> <userinput>no</userinput> instead.
6218                 </para>
6219               </listitem>
6220             </varlistentry>
6221
6222             <varlistentry>
6223               <term><command>host-statistics</command></term>
6224               <listitem>
6225                 <para>
6226                   In BIND 8, this enables keeping of
6227                   statistics for every host that the name server interacts
6228                   with.
6229                   Not implemented in BIND 9.
6230                 </para>
6231               </listitem>
6232             </varlistentry>
6233
6234             <varlistentry>
6235               <term><command>maintain-ixfr-base</command></term>
6236               <listitem>
6237                 <para>
6238                   <emphasis>This option is obsolete</emphasis>.
6239                   It was used in <acronym>BIND</acronym> 8 to
6240                   determine whether a transaction log was
6241                   kept for Incremental Zone Transfer. <acronym>BIND</acronym> 9 maintains a transaction
6242                   log whenever possible.  If you need to disable outgoing
6243                   incremental zone
6244                   transfers, use <command>provide-ixfr</command> <userinput>no</userinput>.
6245                 </para>
6246               </listitem>
6247             </varlistentry>
6248
6249             <varlistentry>
6250               <term><command>minimal-responses</command></term>
6251               <listitem>
6252                 <para>
6253                   If <userinput>yes</userinput>, then when generating
6254                   responses the server will only add records to the authority
6255                   and additional data sections when they are required (e.g.
6256                   delegations, negative responses).  This may improve the
6257                   performance of the server.
6258                   The default is <userinput>no</userinput>.
6259                 </para>
6260               </listitem>
6261             </varlistentry>
6262
6263             <varlistentry>
6264               <term><command>multiple-cnames</command></term>
6265               <listitem>
6266                 <para>
6267                   This option was used in <acronym>BIND</acronym> 8 to allow
6268                   a domain name to have multiple CNAME records in violation of
6269                   the DNS standards.  <acronym>BIND</acronym> 9.2 onwards
6270                   always strictly enforces the CNAME rules both in master
6271                   files and dynamic updates.
6272                 </para>
6273               </listitem>
6274             </varlistentry>
6275
6276             <varlistentry>
6277               <term><command>notify</command></term>
6278               <listitem>
6279                 <para>
6280                   If <userinput>yes</userinput> (the default),
6281                   DNS NOTIFY messages are sent when a zone the server is
6282                   authoritative for
6283                   changes, see <xref linkend="notify"/>.  The messages are
6284                   sent to the
6285                   servers listed in the zone's NS records (except the master
6286                   server identified
6287                   in the SOA MNAME field), and to any servers listed in the
6288                   <command>also-notify</command> option.
6289                 </para>
6290                 <para>
6291                   If <userinput>master-only</userinput>, notifies are only
6292                   sent
6293                   for master zones.
6294                   If <userinput>explicit</userinput>, notifies are sent only
6295                   to
6296                   servers explicitly listed using <command>also-notify</command>.
6297                   If <userinput>no</userinput>, no notifies are sent.
6298                 </para>
6299                 <para>
6300                   The <command>notify</command> option may also be
6301                   specified in the <command>zone</command>
6302                   statement,
6303                   in which case it overrides the <command>options notify</command> statement.
6304                   It would only be necessary to turn off this option if it
6305                   caused slaves
6306                   to crash.
6307                 </para>
6308               </listitem>
6309             </varlistentry>
6310
6311             <varlistentry>
6312               <term><command>notify-to-soa</command></term>
6313               <listitem>
6314                 <para>
6315                   If <userinput>yes</userinput> do not check the nameservers
6316                   in the NS RRset against the SOA MNAME.  Normally a NOTIFY
6317                   message is not sent to the SOA MNAME (SOA ORIGIN) as it is
6318                   supposed to contain the name of the ultimate master.
6319                   Sometimes, however, a slave is listed as the SOA MNAME in
6320                   hidden master configurations and in that case you would
6321                   want the ultimate master to still send NOTIFY messages to
6322                   all the nameservers listed in the NS RRset.
6323                 </para>
6324               </listitem>
6325             </varlistentry>
6326
6327             <varlistentry>
6328               <term><command>recursion</command></term>
6329               <listitem>
6330                 <para>
6331                   If <userinput>yes</userinput>, and a
6332                   DNS query requests recursion, then the server will attempt
6333                   to do
6334                   all the work required to answer the query. If recursion is
6335                   off
6336                   and the server does not already know the answer, it will
6337                   return a
6338                   referral response. The default is
6339                   <userinput>yes</userinput>.
6340                   Note that setting <command>recursion no</command> does not prevent
6341                   clients from getting data from the server's cache; it only
6342                   prevents new data from being cached as an effect of client
6343                   queries.
6344                   Caching may still occur as an effect the server's internal
6345                   operation, such as NOTIFY address lookups.
6346                   See also <command>fetch-glue</command> above.
6347                 </para>
6348               </listitem>
6349             </varlistentry>
6350
6351             <varlistentry>
6352               <term><command>rfc2308-type1</command></term>
6353               <listitem>
6354                 <para>
6355                   Setting this to <userinput>yes</userinput> will
6356                   cause the server to send NS records along with the SOA
6357                   record for negative
6358                   answers. The default is <userinput>no</userinput>.
6359                 </para>
6360                 <note>
6361                   <simpara>
6362                     Not yet implemented in <acronym>BIND</acronym>
6363                     9.
6364                   </simpara>
6365                 </note>
6366               </listitem>
6367             </varlistentry>
6368
6369             <varlistentry>
6370               <term><command>use-id-pool</command></term>
6371               <listitem>
6372                 <para>
6373                   <emphasis>This option is obsolete</emphasis>.
6374                   <acronym>BIND</acronym> 9 always allocates query
6375                   IDs from a pool.
6376                 </para>
6377               </listitem>
6378             </varlistentry>
6379
6380             <varlistentry>
6381               <term><command>zone-statistics</command></term>
6382               <listitem>
6383                 <para>
6384                   If <userinput>yes</userinput>, the server will collect
6385                   statistical data on all zones (unless specifically turned
6386                   off
6387                   on a per-zone basis by specifying <command>zone-statistics no</command>
6388                   in the <command>zone</command> statement).
6389                   The default is <userinput>no</userinput>.
6390                   These statistics may be accessed
6391                   using <command>rndc stats</command>, which will
6392                   dump them to the file listed
6393                   in the <command>statistics-file</command>.  See
6394                   also <xref linkend="statsfile"/>.
6395                 </para>
6396               </listitem>
6397             </varlistentry>
6398
6399             <varlistentry>
6400               <term><command>use-ixfr</command></term>
6401               <listitem>
6402                 <para>
6403                   <emphasis>This option is obsolete</emphasis>.
6404                   If you need to disable IXFR to a particular server or
6405                   servers, see
6406                   the information on the <command>provide-ixfr</command> option
6407                   in <xref linkend="server_statement_definition_and_usage"/>.
6408                   See also
6409                   <xref linkend="incremental_zone_transfers"/>.
6410                 </para>
6411               </listitem>
6412             </varlistentry>
6413
6414             <varlistentry>
6415               <term><command>provide-ixfr</command></term>
6416               <listitem>
6417                 <para>
6418                   See the description of
6419                   <command>provide-ixfr</command> in
6420                   <xref linkend="server_statement_definition_and_usage"/>.
6421                 </para>
6422               </listitem>
6423             </varlistentry>
6424
6425             <varlistentry>
6426               <term><command>request-ixfr</command></term>
6427               <listitem>
6428                 <para>
6429                   See the description of
6430                   <command>request-ixfr</command> in
6431                   <xref linkend="server_statement_definition_and_usage"/>.
6432                 </para>
6433               </listitem>
6434             </varlistentry>
6435
6436             <varlistentry>
6437               <term><command>treat-cr-as-space</command></term>
6438               <listitem>
6439                 <para>
6440                   This option was used in <acronym>BIND</acronym>
6441                   8 to make
6442                   the server treat carriage return ("<command>\r</command>") characters the same way
6443                   as a space or tab character,
6444                   to facilitate loading of zone files on a UNIX system that
6445                   were generated
6446                   on an NT or DOS machine. In <acronym>BIND</acronym> 9, both UNIX "<command>\n</command>"
6447                   and NT/DOS "<command>\r\n</command>" newlines
6448                   are always accepted,
6449                   and the option is ignored.
6450                 </para>
6451               </listitem>
6452             </varlistentry>
6453
6454             <varlistentry>
6455               <term><command>additional-from-auth</command></term>
6456               <term><command>additional-from-cache</command></term>
6457               <listitem>
6458
6459                 <para>
6460                   These options control the behavior of an authoritative
6461                   server when
6462                   answering queries which have additional data, or when
6463                   following CNAME
6464                   and DNAME chains.
6465                 </para>
6466
6467                 <para>
6468                   When both of these options are set to <userinput>yes</userinput>
6469                   (the default) and a
6470                   query is being answered from authoritative data (a zone
6471                   configured into the server), the additional data section of
6472                   the
6473                   reply will be filled in using data from other authoritative
6474                   zones
6475                   and from the cache.  In some situations this is undesirable,
6476                   such
6477                   as when there is concern over the correctness of the cache,
6478                   or
6479                   in servers where slave zones may be added and modified by
6480                   untrusted third parties.  Also, avoiding
6481                   the search for this additional data will speed up server
6482                   operations
6483                   at the possible expense of additional queries to resolve
6484                   what would
6485                   otherwise be provided in the additional section.
6486                 </para>
6487
6488                 <para>
6489                   For example, if a query asks for an MX record for host <literal>foo.example.com</literal>,
6490                   and the record found is "<literal>MX 10 mail.example.net</literal>", normally the address
6491                   records (A and AAAA) for <literal>mail.example.net</literal> will be provided as well,
6492                   if known, even though they are not in the example.com zone.
6493                   Setting these options to <command>no</command>
6494                   disables this behavior and makes
6495                   the server only search for additional data in the zone it
6496                   answers from.
6497                 </para>
6498
6499                 <para>
6500                   These options are intended for use in authoritative-only
6501                   servers, or in authoritative-only views.  Attempts to set
6502                   them to <command>no</command> without also
6503                   specifying
6504                   <command>recursion no</command> will cause the
6505                   server to
6506                   ignore the options and log a warning message.
6507                 </para>
6508
6509                 <para>
6510                   Specifying <command>additional-from-cache no</command> actually
6511                   disables the use of the cache not only for additional data
6512                   lookups
6513                   but also when looking up the answer.  This is usually the
6514                   desired
6515                   behavior in an authoritative-only server where the
6516                   correctness of
6517                   the cached data is an issue.
6518                 </para>
6519
6520                 <para>
6521                   When a name server is non-recursively queried for a name
6522                   that is not
6523                   below the apex of any served zone, it normally answers with
6524                   an
6525                   "upwards referral" to the root servers or the servers of
6526                   some other
6527                   known parent of the query name.  Since the data in an
6528                   upwards referral
6529                   comes from the cache, the server will not be able to provide
6530                   upwards
6531                   referrals when <command>additional-from-cache no</command>
6532                   has been specified.  Instead, it will respond to such
6533                   queries
6534                   with REFUSED.  This should not cause any problems since
6535                   upwards referrals are not required for the resolution
6536                   process.
6537                 </para>
6538
6539               </listitem>
6540             </varlistentry>
6541
6542             <varlistentry>
6543               <term><command>match-mapped-addresses</command></term>
6544               <listitem>
6545                 <para>
6546                   If <userinput>yes</userinput>, then an
6547                   IPv4-mapped IPv6 address will match any address match
6548                   list entries that match the corresponding IPv4 address.
6549                 </para>
6550                 <para>
6551                   This option was introduced to work around a kernel quirk
6552                   in some operating systems that causes IPv4 TCP
6553                   connections, such as zone transfers, to be accepted on an
6554                   IPv6 socket using mapped addresses.  This caused address
6555                   match lists designed for IPv4 to fail to match.  However,
6556                   <command>named</command> now solves this problem
6557                   internally.  The use of this option is discouraged.
6558                 </para>
6559               </listitem>
6560             </varlistentry>
6561
6562             <varlistentry>
6563               <term><command>filter-aaaa-on-v4</command></term>
6564               <listitem>
6565                 <para>
6566                   This option is only available when
6567                   <acronym>BIND</acronym> 9 is compiled with the
6568                   <userinput>--enable-filter-aaaa</userinput> option on the
6569                   "configure" command line.  It is intended to help the
6570                   transition from IPv4 to IPv6 by not giving IPv6 addresses
6571                   to DNS clients unless they have connections to the IPv6
6572                   Internet.  This is not recommended unless absolutely
6573                   necessary.  The default is <userinput>no</userinput>.
6574                   The <command>filter-aaaa-on-v4</command> option
6575                   may also be specified in <command>view</command> statements
6576                   to override the global <command>filter-aaaa-on-v4</command>
6577                   option.
6578                 </para>
6579                 <para>
6580                   If <userinput>yes</userinput>,
6581                   the DNS client is at an IPv4 address, in <command>filter-aaaa</command>,
6582                   and if the response does not include DNSSEC signatures, 
6583                   then all AAAA records are deleted from the response.
6584                   This filtering applies to all responses and not only
6585                   authoritative responses.
6586                 </para>
6587                 <para>
6588                   If <userinput>break-dnssec</userinput>,
6589                   then AAAA records are deleted even when dnssec is enabled.
6590                   As suggested by the name, this makes the response not verify,
6591                   because the DNSSEC protocol is designed detect deletions.
6592                 </para>
6593                 <para>
6594                   This mechanism can erroneously cause other servers to 
6595                   not give AAAA records to their clients.  
6596                   A recursing server with both IPv6 and IPv4 network connections
6597                   that queries an authoritative server using this mechanism
6598                   via IPv4 will be denied AAAA records even if its client is
6599                   using IPv6.
6600                 </para>
6601                 <para>
6602                   This mechanism is applied to authoritative as well as
6603                   non-authoritative records.
6604                   A client using IPv4 that is not allowed recursion can
6605                   erroneously be given AAAA records because the server is not
6606                   allowed to check for A records.
6607                 </para>
6608                 <para>
6609                   Some AAAA records are given to IPv4 clients in glue records.
6610                   IPv4 clients that are servers can then erroneously
6611                   answer requests for AAAA records received via IPv4.
6612                 </para>
6613               </listitem>
6614             </varlistentry>
6615
6616             <varlistentry>
6617               <term><command>ixfr-from-differences</command></term>
6618               <listitem>
6619                 <para>
6620                   When <userinput>yes</userinput> and the server loads a new version of a master
6621                   zone from its zone file or receives a new version of a slave
6622                   file by a non-incremental zone transfer, it will compare
6623                   the new version to the previous one and calculate a set
6624                   of differences.  The differences are then logged in the
6625                   zone's journal file such that the changes can be transmitted
6626                   to downstream slaves as an incremental zone transfer.
6627                 </para>
6628                 <para>
6629                   By allowing incremental zone transfers to be used for
6630                   non-dynamic zones, this option saves bandwidth at the
6631                   expense of increased CPU and memory consumption at the
6632                   master.
6633                   In particular, if the new version of a zone is completely
6634                   different from the previous one, the set of differences
6635                   will be of a size comparable to the combined size of the
6636                   old and new zone version, and the server will need to
6637                   temporarily allocate memory to hold this complete
6638                   difference set.
6639                 </para>
6640                 <para><command>ixfr-from-differences</command>
6641                   also accepts <command>master</command> and
6642                   <command>slave</command> at the view and options
6643                   levels which causes
6644                   <command>ixfr-from-differences</command> to be enabled for
6645                   all <command>master</command> or
6646                   <command>slave</command> zones respectively.
6647                   It is off by default.
6648                 </para>
6649               </listitem>
6650             </varlistentry>
6651
6652             <varlistentry>
6653               <term><command>multi-master</command></term>
6654               <listitem>
6655                 <para>
6656                   This should be set when you have multiple masters for a zone
6657                   and the
6658                   addresses refer to different machines.  If <userinput>yes</userinput>, <command>named</command> will
6659                   not log
6660                   when the serial number on the master is less than what <command>named</command>
6661                   currently
6662                   has.  The default is <userinput>no</userinput>.
6663                 </para>
6664               </listitem>
6665             </varlistentry>
6666
6667             <varlistentry>
6668               <term><command>dnssec-enable</command></term>
6669               <listitem>
6670                 <para>
6671                   Enable DNSSEC support in <command>named</command>.  Unless set to <userinput>yes</userinput>,
6672                   <command>named</command> behaves as if it does not support DNSSEC.
6673                   The default is <userinput>yes</userinput>.
6674                 </para>
6675               </listitem>
6676             </varlistentry>
6677
6678             <varlistentry>
6679               <term><command>dnssec-validation</command></term>
6680               <listitem>
6681                 <para>
6682                   Enable DNSSEC validation in <command>named</command>.
6683                   Note <command>dnssec-enable</command> also needs to be
6684                   set to <userinput>yes</userinput> to be effective.
6685                   If set to <userinput>no</userinput>, DNSSEC validation
6686                   is disabled.  If set to <userinput>auto</userinput>,
6687                   DNSSEC validation is enabled, and a default
6688                   trust-anchor for the DNS root zone is used.  If set to
6689                   <userinput>yes</userinput>, DNSSEC validation is enabled,
6690                   but a trust anchor must be manually configured using
6691                   a <command>trusted-keys</command> or
6692                   <command>managed-keys</command> statement.  The default
6693                   is <userinput>yes</userinput>.
6694                 </para>
6695               </listitem>
6696             </varlistentry>
6697
6698             <varlistentry>
6699               <term><command>dnssec-accept-expired</command></term>
6700               <listitem>
6701                 <para>
6702                   Accept expired signatures when verifying DNSSEC signatures.
6703                   The default is <userinput>no</userinput>.
6704                   Setting this option to <userinput>yes</userinput>
6705                   leaves <command>named</command> vulnerable to
6706                   replay attacks.
6707                 </para>
6708               </listitem>
6709             </varlistentry>
6710
6711             <varlistentry>
6712               <term><command>querylog</command></term>
6713               <listitem>
6714                 <para>
6715                   Specify whether query logging should be started when <command>named</command>
6716                   starts.
6717                   If <command>querylog</command> is not specified,
6718                   then the query logging
6719                   is determined by the presence of the logging category <command>queries</command>.
6720                 </para>
6721               </listitem>
6722             </varlistentry>
6723
6724             <varlistentry>
6725               <term><command>check-names</command></term>
6726               <listitem>
6727                 <para>
6728                   This option is used to restrict the character set and syntax
6729                   of
6730                   certain domain names in master files and/or DNS responses
6731                   received
6732                   from the network.  The default varies according to usage
6733                   area.  For
6734                   <command>master</command> zones the default is <command>fail</command>.
6735                   For <command>slave</command> zones the default
6736                   is <command>warn</command>.
6737                   For answers received from the network (<command>response</command>)
6738                   the default is <command>ignore</command>.
6739                 </para>
6740                 <para>
6741                   The rules for legal hostnames and mail domains are derived
6742                   from RFC 952 and RFC 821 as modified by RFC 1123.
6743                 </para>
6744                 <para><command>check-names</command>
6745                   applies to the owner names of A, AAAA and MX records.
6746                   It also applies to the domain names in the RDATA of NS, SOA,
6747                   MX, and SRV records.
6748                   It also applies to the RDATA of PTR records where the owner
6749                   name indicated that it is a reverse lookup of a hostname
6750                   (the owner name ends in IN-ADDR.ARPA, IP6.ARPA, or IP6.INT).
6751                 </para>
6752               </listitem>
6753             </varlistentry>
6754
6755             <varlistentry>
6756               <term><command>check-dup-records</command></term>
6757               <listitem>
6758                 <para>
6759                   Check master zones for records that are treated as different
6760                   by DNSSEC but are semantically equal in plain DNS.  The
6761                   default is to <command>warn</command>.  Other possible
6762                   values are <command>fail</command> and
6763                   <command>ignore</command>.
6764                 </para>
6765               </listitem>
6766             </varlistentry>
6767
6768             <varlistentry>
6769               <term><command>check-mx</command></term>
6770               <listitem>
6771                 <para>
6772                   Check whether the MX record appears to refer to a IP address.
6773                   The default is to <command>warn</command>.  Other possible
6774                   values are <command>fail</command> and
6775                   <command>ignore</command>.
6776                 </para>
6777               </listitem>
6778             </varlistentry>
6779
6780             <varlistentry>
6781               <term><command>check-wildcard</command></term>
6782               <listitem>
6783                 <para>
6784                   This option is used to check for non-terminal wildcards.
6785                   The use of non-terminal wildcards is almost always as a
6786                   result of a failure
6787                   to understand the wildcard matching algorithm (RFC 1034).
6788                   This option
6789                   affects master zones.  The default (<command>yes</command>) is to check
6790                   for non-terminal wildcards and issue a warning.
6791                 </para>
6792               </listitem>
6793             </varlistentry>
6794
6795             <varlistentry>
6796               <term><command>check-integrity</command></term>
6797               <listitem>
6798                 <para>
6799                   Perform post load zone integrity checks on master
6800                   zones.  This checks that MX and SRV records refer
6801                   to address (A or AAAA) records and that glue
6802                   address records exist for delegated zones.  For
6803                   MX and SRV records only in-zone hostnames are
6804                   checked (for out-of-zone hostnames use
6805                   <command>named-checkzone</command>).
6806                   For NS records only names below top of zone are
6807                   checked (for out-of-zone names and glue consistency
6808                   checks use <command>named-checkzone</command>).
6809                   The default is <command>yes</command>.
6810                 </para>
6811               </listitem>
6812             </varlistentry>
6813
6814             <varlistentry>
6815               <term><command>check-mx-cname</command></term>
6816               <listitem>
6817                 <para>
6818                   If <command>check-integrity</command> is set then
6819                   fail, warn or ignore MX records that refer
6820                   to CNAMES.  The default is to <command>warn</command>.
6821                 </para>
6822               </listitem>
6823             </varlistentry>
6824
6825             <varlistentry>
6826               <term><command>check-srv-cname</command></term>
6827               <listitem>
6828                 <para>
6829                   If <command>check-integrity</command> is set then
6830                   fail, warn or ignore SRV records that refer
6831                   to CNAMES.  The default is to <command>warn</command>.
6832                 </para>
6833               </listitem>
6834             </varlistentry>
6835
6836             <varlistentry>
6837               <term><command>check-sibling</command></term>
6838               <listitem>
6839                 <para>
6840                   When performing integrity checks, also check that
6841                   sibling glue exists.  The default is <command>yes</command>.
6842                 </para>
6843               </listitem>
6844             </varlistentry>
6845
6846             <varlistentry>
6847               <term><command>zero-no-soa-ttl</command></term>
6848               <listitem>
6849                 <para>
6850                   When returning authoritative negative responses to
6851                   SOA queries set the TTL of the SOA record returned in
6852                   the authority section to zero.
6853                   The default is <command>yes</command>.
6854                 </para>
6855               </listitem>
6856             </varlistentry>
6857
6858             <varlistentry>
6859               <term><command>zero-no-soa-ttl-cache</command></term>
6860               <listitem>
6861                 <para>
6862                   When caching a negative response to a SOA query
6863                   set the TTL to zero.
6864                   The default is <command>no</command>.
6865                 </para>
6866               </listitem>
6867             </varlistentry>
6868
6869             <varlistentry>
6870               <term><command>update-check-ksk</command></term>
6871               <listitem>
6872                 <para>
6873                   When set to the default value of <literal>yes</literal>,
6874                   check the KSK bit in each key to determine how the key
6875                   should be used when generating RRSIGs for a secure zone.
6876                 </para>
6877                 <para>
6878                   Ordinarily, zone-signing keys (that is, keys without the
6879                   KSK bit set) are used to sign the entire zone, while
6880                   key-signing keys (keys with the KSK bit set) are only
6881                   used to sign the DNSKEY RRset at the zone apex.
6882                   However, if this option is set to <literal>no</literal>,
6883                   then the KSK bit is ignored; KSKs are treated as if they
6884                   were ZSKs and are used to sign the entire zone.  This is
6885                   similar to the <command>dnssec-signzone -z</command>
6886                   command line option.
6887                 </para>
6888                 <para>
6889                   When this option is set to <literal>yes</literal>, there
6890                   must be at least two active keys for every algorithm
6891                   represented in the DNSKEY RRset: at least one KSK and one
6892                   ZSK per algorithm.  If there is any algorithm for which
6893                   this requirement is not met, this option will be ignored
6894                   for that algorithm.
6895                 </para>
6896               </listitem>
6897             </varlistentry>
6898
6899             <varlistentry>
6900               <term><command>dnssec-dnskey-kskonly</command></term>
6901               <listitem>
6902                 <para>
6903                   When this option and <command>update-check-ksk</command>
6904                   are both set to <literal>yes</literal>, only key-signing
6905                   keys (that is, keys with the KSK bit set) will be used
6906                   to sign the DNSKEY RRset at the zone apex.  Zone-signing
6907                   keys (keys without the KSK bit set) will be used to sign
6908                   the remainder of the zone, but not the DNSKEY RRset.
6909                   This is similar to the
6910                   <command>dnssec-signzone -x</command> command line option.
6911                 </para>
6912                 <para>
6913                   The default is <command>no</command>.  If
6914                   <command>update-check-ksk</command> is set to
6915                   <literal>no</literal>, this option is ignored.
6916                 </para>
6917               </listitem>
6918             </varlistentry>
6919
6920             <varlistentry>
6921               <term><command>try-tcp-refresh</command></term>
6922               <listitem>
6923                 <para>
6924                   Try to refresh the zone using TCP if UDP queries fail.
6925                   For BIND 8 compatibility, the default is
6926                   <command>yes</command>.
6927                 </para>
6928               </listitem>
6929             </varlistentry>
6930
6931             <varlistentry>
6932               <term><command>dnssec-secure-to-insecure</command></term>
6933               <listitem>
6934                 <para>
6935                   Allow a dynamic zone to transition from secure to
6936                   insecure (i.e., signed to unsigned) by deleting all
6937                   of the DNSKEY records.  The default is <command>no</command>.
6938                   If set to <command>yes</command>, and if the DNSKEY RRset
6939                   at the zone apex is deleted, all RRSIG and NSEC records
6940                   will be removed from the zone as well.
6941                 </para>
6942                 <para>
6943                   If the zone uses NSEC3, then it is also necessary to
6944                   delete the NSEC3PARAM RRset from the zone apex; this will
6945                   cause the removal of all corresponding NSEC3 records.
6946                   (It is expected that this requirement will be eliminated
6947                   in a future release.)
6948                 </para>
6949                 <para>
6950                   Note that if a zone has been configured with
6951                   <command>auto-dnssec maintain</command> and the
6952                   private keys remain accessible in the key repository,
6953                   then the zone will be automatically signed again the
6954                   next time <command>named</command> is started.
6955                 </para>
6956               </listitem>
6957             </varlistentry>
6958
6959           </variablelist>
6960
6961         </sect3>
6962
6963         <sect3>
6964           <title>Forwarding</title>
6965           <para>
6966             The forwarding facility can be used to create a large site-wide
6967             cache on a few servers, reducing traffic over links to external
6968             name servers. It can also be used to allow queries by servers that
6969             do not have direct access to the Internet, but wish to look up
6970             exterior
6971             names anyway. Forwarding occurs only on those queries for which
6972             the server is not authoritative and does not have the answer in
6973             its cache.
6974           </para>
6975
6976           <variablelist>
6977             <varlistentry>
6978               <term><command>forward</command></term>
6979               <listitem>
6980                 <para>
6981                   This option is only meaningful if the
6982                   forwarders list is not empty. A value of <varname>first</varname>,
6983                   the default, causes the server to query the forwarders
6984                   first &mdash; and
6985                   if that doesn't answer the question, the server will then
6986                   look for
6987                   the answer itself. If <varname>only</varname> is
6988                   specified, the
6989                   server will only query the forwarders.
6990                 </para>
6991               </listitem>
6992             </varlistentry>
6993
6994             <varlistentry>
6995               <term><command>forwarders</command></term>
6996               <listitem>
6997                 <para>
6998                   Specifies the IP addresses to be used
6999                   for forwarding. The default is the empty list (no
7000                   forwarding).
7001                 </para>
7002               </listitem>
7003             </varlistentry>
7004
7005           </variablelist>
7006
7007           <para>
7008             Forwarding can also be configured on a per-domain basis, allowing
7009             for the global forwarding options to be overridden in a variety
7010             of ways. You can set particular domains to use different
7011             forwarders,
7012             or have a different <command>forward only/first</command> behavior,
7013             or not forward at all, see <xref linkend="zone_statement_grammar"/>.
7014           </para>
7015         </sect3>
7016
7017         <sect3>
7018           <title>Dual-stack Servers</title>
7019           <para>
7020             Dual-stack servers are used as servers of last resort to work
7021             around
7022             problems in reachability due the lack of support for either IPv4
7023             or IPv6
7024             on the host machine.
7025           </para>
7026
7027           <variablelist>
7028             <varlistentry>
7029               <term><command>dual-stack-servers</command></term>
7030               <listitem>
7031                 <para>
7032                   Specifies host names or addresses of machines with access to
7033                   both IPv4 and IPv6 transports. If a hostname is used, the
7034                   server must be able
7035                   to resolve the name using only the transport it has.  If the
7036                   machine is dual
7037                   stacked, then the <command>dual-stack-servers</command> have no effect unless
7038                   access to a transport has been disabled on the command line
7039                   (e.g. <command>named -4</command>).
7040                 </para>
7041               </listitem>
7042             </varlistentry>
7043           </variablelist>
7044         </sect3>
7045
7046         <sect3 id="access_control">
7047           <title>Access Control</title>
7048
7049           <para>
7050             Access to the server can be restricted based on the IP address
7051             of the requesting system. See <xref linkend="address_match_lists"/> for
7052             details on how to specify IP address lists.
7053           </para>
7054
7055           <variablelist>
7056
7057             <varlistentry>
7058               <term><command>allow-notify</command></term>
7059               <listitem>
7060                 <para>
7061                   Specifies which hosts are allowed to
7062                   notify this server, a slave, of zone changes in addition
7063                   to the zone masters.
7064                   <command>allow-notify</command> may also be
7065                   specified in the
7066                   <command>zone</command> statement, in which case
7067                   it overrides the
7068                   <command>options allow-notify</command>
7069                   statement.  It is only meaningful
7070                   for a slave zone.  If not specified, the default is to
7071                   process notify messages
7072                   only from a zone's master.
7073                 </para>
7074               </listitem>
7075             </varlistentry>
7076
7077             <varlistentry>
7078               <term><command>allow-query</command></term>
7079               <listitem>
7080                 <para>
7081                   Specifies which hosts are allowed to ask ordinary
7082                   DNS questions. <command>allow-query</command> may
7083                   also be specified in the <command>zone</command>
7084                   statement, in which case it overrides the
7085                   <command>options allow-query</command> statement.
7086                   If not specified, the default is to allow queries
7087                   from all hosts.
7088                 </para>
7089                 <note>
7090                   <para>
7091                     <command>allow-query-cache</command> is now
7092                     used to specify access to the cache.
7093                   </para>
7094                 </note>
7095               </listitem>
7096             </varlistentry>
7097
7098             <varlistentry>
7099               <term><command>allow-query-on</command></term>
7100               <listitem>
7101                 <para>
7102                   Specifies which local addresses can accept ordinary
7103                   DNS questions. This makes it possible, for instance,
7104                   to allow queries on internal-facing interfaces but
7105                   disallow them on external-facing ones, without
7106                   necessarily knowing the internal network's addresses.
7107                 </para>
7108                 <para>
7109                   <command>allow-query-on</command> may
7110                   also be specified in the <command>zone</command>
7111                   statement, in which case it overrides the
7112                   <command>options allow-query-on</command> statement.
7113                 </para>
7114                 <para>
7115                   If not specified, the default is to allow queries
7116                   on all addresses.
7117                 </para>
7118                 <note>
7119                   <para>
7120                     <command>allow-query-cache</command> is
7121                     used to specify access to the cache.
7122                   </para>
7123                 </note>
7124               </listitem>
7125             </varlistentry>
7126
7127             <varlistentry>
7128               <term><command>allow-query-cache</command></term>
7129               <listitem>
7130                 <para>
7131                   Specifies which hosts are allowed to get answers
7132                   from the cache.  If <command>allow-query-cache</command>
7133                   is not set then <command>allow-recursion</command>
7134                   is used if set, otherwise <command>allow-query</command>
7135                   is used if set unless <command>recursion no;</command> is
7136                   set in which case <command>none;</command> is used,
7137                   otherwise the default (<command>localnets;</command>
7138                   <command>localhost;</command>) is used.
7139                 </para>
7140               </listitem>
7141             </varlistentry>
7142
7143             <varlistentry>
7144               <term><command>allow-query-cache-on</command></term>
7145               <listitem>
7146                 <para>
7147                   Specifies which local addresses can give answers
7148                   from the cache.  If not specified, the default is
7149                   to allow cache queries on any address,
7150                   <command>localnets</command> and
7151                   <command>localhost</command>.
7152                 </para>
7153               </listitem>
7154             </varlistentry>
7155
7156             <varlistentry>
7157               <term><command>allow-recursion</command></term>
7158               <listitem>
7159                 <para>
7160                   Specifies which hosts are allowed to make recursive
7161                   queries through this server. If
7162                   <command>allow-recursion</command> is not set
7163                   then <command>allow-query-cache</command> is
7164                   used if set, otherwise <command>allow-query</command>
7165                   is used if set, otherwise the default
7166                   (<command>localnets;</command>
7167                   <command>localhost;</command>) is used.
7168                 </para>
7169               </listitem>
7170             </varlistentry>
7171
7172             <varlistentry>
7173               <term><command>allow-recursion-on</command></term>
7174               <listitem>
7175                 <para>
7176                   Specifies which local addresses can accept recursive
7177                   queries.  If not specified, the default is to allow
7178                   recursive queries on all addresses.
7179                 </para>
7180               </listitem>
7181             </varlistentry>
7182
7183             <varlistentry>
7184               <term><command>allow-update</command></term>
7185               <listitem>
7186                 <para>
7187                   Specifies which hosts are allowed to
7188                   submit Dynamic DNS updates for master zones. The default is
7189                   to deny
7190                   updates from all hosts.  Note that allowing updates based
7191                   on the requestor's IP address is insecure; see
7192                   <xref linkend="dynamic_update_security"/> for details.
7193                 </para>
7194               </listitem>
7195             </varlistentry>
7196
7197             <varlistentry>
7198               <term><command>allow-update-forwarding</command></term>
7199               <listitem>
7200                 <para>
7201                   Specifies which hosts are allowed to
7202                   submit Dynamic DNS updates to slave zones to be forwarded to
7203                   the
7204                   master.  The default is <userinput>{ none; }</userinput>,
7205                   which
7206                   means that no update forwarding will be performed.  To
7207                   enable
7208                   update forwarding, specify
7209                   <userinput>allow-update-forwarding { any; };</userinput>.
7210                   Specifying values other than <userinput>{ none; }</userinput> or
7211                   <userinput>{ any; }</userinput> is usually
7212                   counterproductive, since
7213                   the responsibility for update access control should rest
7214                   with the
7215                   master server, not the slaves.
7216                 </para>
7217                 <para>
7218                   Note that enabling the update forwarding feature on a slave
7219                   server
7220                   may expose master servers relying on insecure IP address
7221                   based
7222                   access control to attacks; see <xref linkend="dynamic_update_security"/>
7223                   for more details.
7224                 </para>
7225               </listitem>
7226             </varlistentry>
7227
7228             <varlistentry>
7229               <term><command>allow-v6-synthesis</command></term>
7230               <listitem>
7231                 <para>
7232                   This option was introduced for the smooth transition from
7233                   AAAA
7234                   to A6 and from "nibble labels" to binary labels.
7235                   However, since both A6 and binary labels were then
7236                   deprecated,
7237                   this option was also deprecated.
7238                   It is now ignored with some warning messages.
7239                 </para>
7240               </listitem>
7241             </varlistentry>
7242
7243             <varlistentry>
7244               <term><command>allow-transfer</command></term>
7245               <listitem>
7246                 <para>
7247                   Specifies which hosts are allowed to
7248                   receive zone transfers from the server. <command>allow-transfer</command> may
7249                   also be specified in the <command>zone</command>
7250                   statement, in which
7251                   case it overrides the <command>options allow-transfer</command> statement.
7252                   If not specified, the default is to allow transfers to all
7253                   hosts.
7254                 </para>
7255               </listitem>
7256             </varlistentry>
7257
7258             <varlistentry>
7259               <term><command>blackhole</command></term>
7260               <listitem>
7261                 <para>
7262                   Specifies a list of addresses that the
7263                   server will not accept queries from or use to resolve a
7264                   query. Queries
7265                   from these addresses will not be responded to. The default
7266                   is <userinput>none</userinput>.
7267                 </para>
7268               </listitem>
7269             </varlistentry>
7270
7271             <varlistentry>
7272               <term><command>filter-aaaa</command></term>
7273               <listitem>
7274                 <para>
7275                   Specifies a list of addresses to which
7276                   <command>filter-aaaa-on-v4</command>
7277                   is applies.  The default is <userinput>any</userinput>.
7278                 </para>
7279               </listitem>
7280             </varlistentry>
7281
7282             <varlistentry>
7283               <term><command>resolver-query-timeout</command></term>
7284               <listitem>
7285                 <para>
7286                   The amount of time the resolver will spend attempting
7287                   to resolve a recursive query before failing.  The default
7288                   and minimum is <literal>10</literal> and the maximum is
7289                   <literal>30</literal>.  Setting it to <literal>0</literal>
7290                   will result in the default being used.
7291                 </para>
7292               </listitem>
7293             </varlistentry>
7294           </variablelist>
7295
7296         </sect3>
7297
7298         <sect3>
7299           <title>Interfaces</title>
7300           <para>
7301             The interfaces and ports that the server will answer queries
7302             from may be specified using the <command>listen-on</command> option. <command>listen-on</command> takes
7303             an optional port and an <varname>address_match_list</varname>.
7304             The server will listen on all interfaces allowed by the address
7305             match list. If a port is not specified, port 53 will be used.
7306           </para>
7307           <para>
7308             Multiple <command>listen-on</command> statements are
7309             allowed.
7310             For example,
7311           </para>
7312
7313 <programlisting>listen-on { 5.6.7.8; };
7314 listen-on port 1234 { !1.2.3.4; 1.2/16; };
7315 </programlisting>
7316
7317           <para>
7318             will enable the name server on port 53 for the IP address
7319             5.6.7.8, and on port 1234 of an address on the machine in net
7320             1.2 that is not 1.2.3.4.
7321           </para>
7322
7323           <para>
7324             If no <command>listen-on</command> is specified, the
7325             server will listen on port 53 on all IPv4 interfaces.
7326           </para>
7327
7328           <para>
7329             The <command>listen-on-v6</command> option is used to
7330             specify the interfaces and the ports on which the server will
7331             listen
7332             for incoming queries sent using IPv6.
7333           </para>
7334
7335           <para>
7336             When <programlisting>{ any; }</programlisting> is
7337             specified
7338             as the <varname>address_match_list</varname> for the
7339             <command>listen-on-v6</command> option,
7340             the server does not bind a separate socket to each IPv6 interface
7341             address as it does for IPv4 if the operating system has enough API
7342             support for IPv6 (specifically if it conforms to RFC 3493 and RFC
7343             3542).
7344             Instead, it listens on the IPv6 wildcard address.
7345             If the system only has incomplete API support for IPv6, however,
7346             the behavior is the same as that for IPv4.
7347           </para>
7348
7349           <para>
7350             A list of particular IPv6 addresses can also be specified, in
7351             which case
7352             the server listens on a separate socket for each specified
7353             address,
7354             regardless of whether the desired API is supported by the system.
7355           </para>
7356
7357           <para>
7358             Multiple <command>listen-on-v6</command> options can
7359             be used.
7360             For example,
7361           </para>
7362
7363 <programlisting>listen-on-v6 { any; };
7364 listen-on-v6 port 1234 { !2001:db8::/32; any; };
7365 </programlisting>
7366
7367           <para>
7368             will enable the name server on port 53 for any IPv6 addresses
7369             (with a single wildcard socket),
7370             and on port 1234 of IPv6 addresses that is not in the prefix
7371             2001:db8::/32 (with separate sockets for each matched address.)
7372           </para>
7373
7374           <para>
7375             To make the server not listen on any IPv6 address, use
7376           </para>
7377
7378 <programlisting>listen-on-v6 { none; };
7379 </programlisting>
7380
7381           <para>
7382             If no <command>listen-on-v6</command> option is
7383             specified, the server will not listen on any IPv6 address
7384             unless <command>-6</command> is specified when <command>named</command> is
7385             invoked.  If <command>-6</command> is specified then
7386             <command>named</command> will listen on port 53 on all IPv6 interfaces by default.
7387           </para>
7388         </sect3>
7389
7390         <sect3 id="query_address">
7391           <title>Query Address</title>
7392           <para>
7393             If the server doesn't know the answer to a question, it will
7394             query other name servers. <command>query-source</command> specifies
7395             the address and port used for such queries. For queries sent over
7396             IPv6, there is a separate <command>query-source-v6</command> option.
7397             If <command>address</command> is <command>*</command> (asterisk) or is omitted,
7398             a wildcard IP address (<command>INADDR_ANY</command>)
7399             will be used.
7400           </para>
7401
7402           <para>
7403             If <command>port</command> is <command>*</command> or is omitted,
7404             a random port number from a pre-configured
7405             range is picked up and will be used for each query.
7406             The port range(s) is that specified in
7407             the <command>use-v4-udp-ports</command> (for IPv4)
7408             and <command>use-v6-udp-ports</command> (for IPv6)
7409             options, excluding the ranges specified in
7410             the <command>avoid-v4-udp-ports</command>
7411             and <command>avoid-v6-udp-ports</command> options, respectively.
7412           </para>
7413
7414           <para>
7415             The defaults of the <command>query-source</command> and
7416             <command>query-source-v6</command> options
7417             are:
7418           </para>
7419
7420 <programlisting>query-source address * port *;
7421 query-source-v6 address * port *;
7422 </programlisting>
7423
7424           <para>
7425             If <command>use-v4-udp-ports</command> or
7426             <command>use-v6-udp-ports</command> is unspecified,
7427             <command>named</command> will check if the operating
7428             system provides a programming interface to retrieve the
7429             system's default range for ephemeral ports.
7430             If such an interface is available,
7431             <command>named</command> will use the corresponding system
7432             default range; otherwise, it will use its own defaults:
7433          </para>
7434
7435 <programlisting>use-v4-udp-ports { range 1024 65535; };
7436 use-v6-udp-ports { range 1024 65535; };
7437 </programlisting>
7438
7439           <para>
7440             Note: make sure the ranges be sufficiently large for
7441             security.  A desirable size depends on various parameters,
7442             but we generally recommend it contain at least 16384 ports
7443             (14 bits of entropy).
7444             Note also that the system's default range when used may be
7445             too small for this purpose, and that the range may even be
7446             changed while <command>named</command> is running; the new
7447             range will automatically be applied when <command>named</command>
7448             is reloaded.
7449             It is encouraged to
7450             configure <command>use-v4-udp-ports</command> and
7451             <command>use-v6-udp-ports</command> explicitly so that the
7452             ranges are sufficiently large and are reasonably
7453             independent from the ranges used by other applications.
7454           </para>
7455
7456           <para>
7457             Note: the operational configuration
7458             where <command>named</command> runs may prohibit the use
7459             of some ports.  For example, UNIX systems will not allow
7460             <command>named</command> running without a root privilege
7461             to use ports less than 1024.
7462             If such ports are included in the specified (or detected)
7463             set of query ports, the corresponding query attempts will
7464             fail, resulting in resolution failures or delay.
7465             It is therefore important to configure the set of ports
7466             that can be safely used in the expected operational environment.
7467           </para>
7468
7469           <para>
7470             The defaults of the <command>avoid-v4-udp-ports</command> and
7471             <command>avoid-v6-udp-ports</command> options
7472             are:
7473           </para>
7474
7475 <programlisting>avoid-v4-udp-ports {};
7476 avoid-v6-udp-ports {};
7477 </programlisting>
7478
7479           <para>
7480             Note: BIND 9.5.0 introduced
7481             the <command>use-queryport-pool</command> 
7482             option to support a pool of such random ports, but this
7483             option is now obsolete because reusing the same ports in
7484             the pool may not be sufficiently secure.
7485             For the same reason, it is generally strongly discouraged to
7486             specify a particular port for the
7487             <command>query-source</command> or
7488             <command>query-source-v6</command> options;
7489             it implicitly disables the use of randomized port numbers.
7490           </para>
7491
7492           <variablelist>
7493             <varlistentry>
7494               <term><command>use-queryport-pool</command></term>
7495               <listitem>
7496                 <para>
7497                   This option is obsolete.
7498                 </para>
7499               </listitem>
7500             </varlistentry>
7501
7502             <varlistentry>
7503               <term><command>queryport-pool-ports</command></term>
7504               <listitem>
7505                 <para>
7506                   This option is obsolete.
7507                 </para>
7508               </listitem>
7509             </varlistentry>
7510
7511             <varlistentry>
7512               <term><command>queryport-pool-updateinterval</command></term>
7513               <listitem>
7514                 <para>
7515                   This option is obsolete.
7516                 </para>
7517               </listitem>
7518             </varlistentry>
7519             
7520           </variablelist>
7521           <note>
7522             <para>
7523               The address specified in the <command>query-source</command> option
7524               is used for both UDP and TCP queries, but the port applies only
7525               to UDP queries.  TCP queries always use a random
7526               unprivileged port.
7527             </para>
7528           </note>
7529           <note>
7530             <para>
7531               Solaris 2.5.1 and earlier does not support setting the source
7532               address for TCP sockets.
7533             </para>
7534           </note>
7535           <note>
7536             <para>
7537               See also <command>transfer-source</command> and
7538               <command>notify-source</command>.
7539             </para>
7540           </note>
7541         </sect3>
7542
7543         <sect3 id="zone_transfers">
7544           <title>Zone Transfers</title>
7545           <para>
7546             <acronym>BIND</acronym> has mechanisms in place to
7547             facilitate zone transfers
7548             and set limits on the amount of load that transfers place on the
7549             system. The following options apply to zone transfers.
7550           </para>
7551
7552           <variablelist>
7553
7554             <varlistentry>
7555               <term><command>also-notify</command></term>
7556               <listitem>
7557                 <para>
7558                   Defines a global list of IP addresses of name servers
7559                   that are also sent NOTIFY messages whenever a fresh copy of
7560                   the
7561                   zone is loaded, in addition to the servers listed in the
7562                   zone's NS records.
7563                   This helps to ensure that copies of the zones will
7564                   quickly converge on stealth servers.
7565                   Optionally, a port may be specified with each
7566                   <command>also-notify</command> address to send
7567                   the notify messages to a port other than the
7568                   default of 53.
7569                   If an <command>also-notify</command> list
7570                   is given in a <command>zone</command> statement,
7571                   it will override
7572                   the <command>options also-notify</command>
7573                   statement. When a <command>zone notify</command>
7574                   statement
7575                   is set to <command>no</command>, the IP
7576                   addresses in the global <command>also-notify</command> list will
7577                   not be sent NOTIFY messages for that zone. The default is
7578                   the empty
7579                   list (no global notification list).
7580                 </para>
7581               </listitem>
7582             </varlistentry>
7583
7584             <varlistentry>
7585               <term><command>max-transfer-time-in</command></term>
7586               <listitem>
7587                 <para>
7588                   Inbound zone transfers running longer than
7589                   this many minutes will be terminated. The default is 120
7590                   minutes
7591                   (2 hours).  The maximum value is 28 days (40320 minutes).
7592                 </para>
7593               </listitem>
7594             </varlistentry>
7595
7596             <varlistentry>
7597               <term><command>max-transfer-idle-in</command></term>
7598               <listitem>
7599                 <para>
7600                   Inbound zone transfers making no progress
7601                   in this many minutes will be terminated. The default is 60
7602                   minutes
7603                   (1 hour).  The maximum value is 28 days (40320 minutes).
7604                 </para>
7605               </listitem>
7606             </varlistentry>
7607
7608             <varlistentry>
7609               <term><command>max-transfer-time-out</command></term>
7610               <listitem>
7611                 <para>
7612                   Outbound zone transfers running longer than
7613                   this many minutes will be terminated. The default is 120
7614                   minutes
7615                   (2 hours).  The maximum value is 28 days (40320 minutes).
7616                 </para>
7617               </listitem>
7618             </varlistentry>
7619
7620             <varlistentry>
7621               <term><command>max-transfer-idle-out</command></term>
7622               <listitem>
7623                 <para>
7624                   Outbound zone transfers making no progress
7625                   in this many minutes will be terminated.  The default is 60
7626                   minutes (1
7627                   hour).  The maximum value is 28 days (40320 minutes).
7628                 </para>
7629               </listitem>
7630             </varlistentry>
7631
7632             <varlistentry>
7633               <term><command>serial-query-rate</command></term>
7634               <listitem>
7635                 <para>
7636                   Slave servers will periodically query master
7637                   servers to find out if zone serial numbers have
7638                   changed. Each such query uses a minute amount of
7639                   the slave server's network bandwidth.  To limit
7640                   the amount of bandwidth used, BIND 9 limits the
7641                   rate at which queries are sent.  The value of the
7642                   <command>serial-query-rate</command> option, an
7643                   integer, is the maximum number of queries sent
7644                   per second.  The default is 20.
7645                 </para>
7646                 <para>
7647                   In addition to controlling the rate SOA refresh
7648                   queries are issued at
7649                   <command>serial-query-rate</command> also controls
7650                   the rate at which NOTIFY messages are sent from
7651                   both master and slave zones.
7652                 </para>
7653               </listitem>
7654             </varlistentry>
7655
7656             <varlistentry>
7657               <term><command>serial-queries</command></term>
7658               <listitem>
7659                 <para>
7660                   In BIND 8, the <command>serial-queries</command>
7661                   option
7662                   set the maximum number of concurrent serial number queries
7663                   allowed to be outstanding at any given time.
7664                   BIND 9 does not limit the number of outstanding
7665                   serial queries and ignores the <command>serial-queries</command> option.
7666                   Instead, it limits the rate at which the queries are sent
7667                   as defined using the <command>serial-query-rate</command> option.
7668                 </para>
7669               </listitem>
7670             </varlistentry>
7671
7672             <varlistentry>
7673               <term><command>transfer-format</command></term>
7674               <listitem>
7675
7676                 <para>
7677                   Zone transfers can be sent using two different formats,
7678                   <command>one-answer</command> and
7679                   <command>many-answers</command>.
7680                   The <command>transfer-format</command> option is used
7681                   on the master server to determine which format it sends.
7682                   <command>one-answer</command> uses one DNS message per
7683                   resource record transferred.
7684                   <command>many-answers</command> packs as many resource
7685                   records as possible into a message.
7686                   <command>many-answers</command> is more efficient, but is
7687                   only supported by relatively new slave servers,
7688                   such as <acronym>BIND</acronym> 9, <acronym>BIND</acronym>
7689                   8.x and <acronym>BIND</acronym> 4.9.5 onwards.
7690                   The <command>many-answers</command> format is also supported by
7691                   recent Microsoft Windows nameservers.
7692                   The default is <command>many-answers</command>.
7693                   <command>transfer-format</command> may be overridden on a
7694                   per-server basis by using the <command>server</command>
7695                   statement.
7696                 </para>
7697
7698               </listitem>
7699             </varlistentry>
7700
7701             <varlistentry>
7702               <term><command>transfers-in</command></term>
7703               <listitem>
7704                 <para>
7705                   The maximum number of inbound zone transfers
7706                   that can be running concurrently. The default value is <literal>10</literal>.
7707                   Increasing <command>transfers-in</command> may
7708                   speed up the convergence
7709                   of slave zones, but it also may increase the load on the
7710                   local system.
7711                 </para>
7712               </listitem>
7713             </varlistentry>
7714
7715             <varlistentry>
7716               <term><command>transfers-out</command></term>
7717               <listitem>
7718                 <para>
7719                   The maximum number of outbound zone transfers
7720                   that can be running concurrently. Zone transfer requests in
7721                   excess
7722                   of the limit will be refused. The default value is <literal>10</literal>.
7723                 </para>
7724               </listitem>
7725             </varlistentry>
7726
7727             <varlistentry>
7728               <term><command>transfers-per-ns</command></term>
7729               <listitem>
7730                 <para>
7731                   The maximum number of inbound zone transfers
7732                   that can be concurrently transferring from a given remote
7733                   name server.
7734                   The default value is <literal>2</literal>.
7735                   Increasing <command>transfers-per-ns</command>
7736                   may
7737                   speed up the convergence of slave zones, but it also may
7738                   increase
7739                   the load on the remote name server. <command>transfers-per-ns</command> may
7740                   be overridden on a per-server basis by using the <command>transfers</command> phrase
7741                   of the <command>server</command> statement.
7742                 </para>
7743               </listitem>
7744             </varlistentry>
7745
7746             <varlistentry>
7747               <term><command>transfer-source</command></term>
7748               <listitem>
7749                 <para><command>transfer-source</command>
7750                   determines which local address will be bound to IPv4
7751                   TCP connections used to fetch zones transferred
7752                   inbound by the server.  It also determines the
7753                   source IPv4 address, and optionally the UDP port,
7754                   used for the refresh queries and forwarded dynamic
7755                   updates.  If not set, it defaults to a system
7756                   controlled value which will usually be the address
7757                   of the interface "closest to" the remote end. This
7758                   address must appear in the remote end's
7759                   <command>allow-transfer</command> option for the
7760                   zone being transferred, if one is specified. This
7761                   statement sets the
7762                   <command>transfer-source</command> for all zones,
7763                   but can be overridden on a per-view or per-zone
7764                   basis by including a
7765                   <command>transfer-source</command> statement within
7766                   the <command>view</command> or
7767                   <command>zone</command> block in the configuration
7768                   file.
7769                 </para>
7770                 <note>
7771                   <para>
7772                     Solaris 2.5.1 and earlier does not support setting the
7773                     source address for TCP sockets.
7774                   </para>
7775                 </note>
7776               </listitem>
7777             </varlistentry>
7778
7779             <varlistentry>
7780               <term><command>transfer-source-v6</command></term>
7781               <listitem>
7782                 <para>
7783                   The same as <command>transfer-source</command>,
7784                   except zone transfers are performed using IPv6.
7785                 </para>
7786               </listitem>
7787             </varlistentry>
7788
7789             <varlistentry>
7790               <term><command>alt-transfer-source</command></term>
7791               <listitem>
7792                 <para>
7793                   An alternate transfer source if the one listed in
7794                   <command>transfer-source</command> fails and
7795                   <command>use-alt-transfer-source</command> is
7796                   set.
7797                 </para>
7798                 <note>
7799                   If you do not wish the alternate transfer source
7800                   to be used, you should set
7801                   <command>use-alt-transfer-source</command>
7802                   appropriately and you should not depend upon
7803                   getting an answer back to the first refresh
7804                   query.
7805                 </note>
7806               </listitem>
7807             </varlistentry>
7808
7809             <varlistentry>
7810               <term><command>alt-transfer-source-v6</command></term>
7811               <listitem>
7812                 <para>
7813                   An alternate transfer source if the one listed in
7814                   <command>transfer-source-v6</command> fails and
7815                   <command>use-alt-transfer-source</command> is
7816                   set.
7817                 </para>
7818               </listitem>
7819             </varlistentry>
7820
7821             <varlistentry>
7822               <term><command>use-alt-transfer-source</command></term>
7823               <listitem>
7824                 <para>
7825                   Use the alternate transfer sources or not.  If views are
7826                   specified this defaults to <command>no</command>
7827                   otherwise it defaults to
7828                   <command>yes</command> (for BIND 8
7829                   compatibility).
7830                 </para>
7831               </listitem>
7832             </varlistentry>
7833
7834             <varlistentry>
7835               <term><command>notify-source</command></term>
7836               <listitem>
7837                 <para><command>notify-source</command>
7838                   determines which local source address, and
7839                   optionally UDP port, will be used to send NOTIFY
7840                   messages.  This address must appear in the slave
7841                   server's <command>masters</command> zone clause or
7842                   in an <command>allow-notify</command> clause.  This
7843                   statement sets the <command>notify-source</command>
7844                   for all zones, but can be overridden on a per-zone or
7845                   per-view basis by including a
7846                   <command>notify-source</command> statement within
7847                   the <command>zone</command> or
7848                   <command>view</command> block in the configuration
7849                   file.
7850                 </para>
7851                 <note>
7852                   <para>
7853                     Solaris 2.5.1 and earlier does not support setting the
7854                     source address for TCP sockets.
7855                   </para>
7856                 </note>
7857               </listitem>
7858             </varlistentry>
7859
7860             <varlistentry>
7861               <term><command>notify-source-v6</command></term>
7862               <listitem>
7863                 <para>
7864                   Like <command>notify-source</command>,
7865                   but applies to notify messages sent to IPv6 addresses.
7866                 </para>
7867               </listitem>
7868             </varlistentry>
7869
7870           </variablelist>
7871
7872         </sect3>
7873
7874         <sect3>
7875           <title>UDP Port Lists</title>
7876           <para>
7877             <command>use-v4-udp-ports</command>,
7878             <command>avoid-v4-udp-ports</command>,
7879             <command>use-v6-udp-ports</command>, and
7880             <command>avoid-v6-udp-ports</command>
7881             specify a list of IPv4 and IPv6 UDP ports that will be
7882             used or not used as source ports for UDP messages.
7883             See <xref linkend="query_address"/> about how the
7884             available ports are determined.
7885             For example, with the following configuration
7886           </para>
7887
7888 <programlisting>
7889 use-v6-udp-ports { range 32768 65535; };
7890 avoid-v6-udp-ports { 40000; range 50000 60000; };
7891 </programlisting>
7892
7893            <para>
7894              UDP ports of IPv6 messages sent
7895              from <command>named</command> will be in one
7896              of the following ranges: 32768 to 39999, 40001 to 49999,
7897              and 60001 to 65535.
7898            </para>
7899
7900            <para>
7901              <command>avoid-v4-udp-ports</command> and
7902              <command>avoid-v6-udp-ports</command> can be used
7903              to prevent <command>named</command> from choosing as its random source port a
7904              port that is blocked by your firewall or a port that is
7905              used by other applications;
7906              if a query went out with a source port blocked by a
7907              firewall, the
7908              answer would not get by the firewall and the name server would
7909              have to query again.
7910              Note: the desired range can also be represented only with
7911              <command>use-v4-udp-ports</command> and
7912              <command>use-v6-udp-ports</command>, and the
7913              <command>avoid-</command> options are redundant in that
7914              sense; they are provided for backward compatibility and
7915              to possibly simplify the port specification.
7916            </para>
7917         </sect3>
7918
7919         <sect3>
7920           <title>Operating System Resource Limits</title>
7921
7922           <para>
7923             The server's usage of many system resources can be limited.
7924             Scaled values are allowed when specifying resource limits.  For
7925             example, <command>1G</command> can be used instead of
7926             <command>1073741824</command> to specify a limit of
7927             one
7928             gigabyte. <command>unlimited</command> requests
7929             unlimited use, or the
7930             maximum available amount. <command>default</command>
7931             uses the limit
7932             that was in force when the server was started. See the description
7933             of <command>size_spec</command> in <xref linkend="configuration_file_elements"/>.
7934           </para>
7935
7936           <para>
7937             The following options set operating system resource limits for
7938             the name server process.  Some operating systems don't support
7939             some or
7940             any of the limits. On such systems, a warning will be issued if
7941             the
7942             unsupported limit is used.
7943           </para>
7944
7945           <variablelist>
7946
7947             <varlistentry>
7948               <term><command>coresize</command></term>
7949               <listitem>
7950                 <para>
7951                   The maximum size of a core dump. The default
7952                   is <literal>default</literal>.
7953                 </para>
7954               </listitem>
7955             </varlistentry>
7956
7957             <varlistentry>
7958               <term><command>datasize</command></term>
7959               <listitem>
7960                 <para>
7961                   The maximum amount of data memory the server
7962                   may use. The default is <literal>default</literal>.
7963                   This is a hard limit on server memory usage.
7964                   If the server attempts to allocate memory in excess of this
7965                   limit, the allocation will fail, which may in turn leave
7966                   the server unable to perform DNS service.  Therefore,
7967                   this option is rarely useful as a way of limiting the
7968                   amount of memory used by the server, but it can be used
7969                   to raise an operating system data size limit that is
7970                   too small by default.  If you wish to limit the amount
7971                   of memory used by the server, use the
7972                   <command>max-cache-size</command> and
7973                   <command>recursive-clients</command>
7974                   options instead.
7975                 </para>
7976               </listitem>
7977             </varlistentry>
7978
7979             <varlistentry>
7980               <term><command>files</command></term>
7981               <listitem>
7982                 <para>
7983                   The maximum number of files the server
7984                   may have open concurrently. The default is <literal>unlimited</literal>.
7985                 </para>
7986               </listitem>
7987             </varlistentry>
7988
7989             <varlistentry>
7990               <term><command>stacksize</command></term>
7991               <listitem>
7992                 <para>
7993                   The maximum amount of stack memory the server
7994                   may use. The default is <literal>default</literal>.
7995                 </para>
7996               </listitem>
7997             </varlistentry>
7998
7999           </variablelist>
8000
8001         </sect3>
8002
8003         <sect3 id="server_resource_limits">
8004           <title>Server  Resource Limits</title>
8005
8006           <para>
8007             The following options set limits on the server's
8008             resource consumption that are enforced internally by the
8009             server rather than the operating system.
8010           </para>
8011
8012           <variablelist>
8013
8014             <varlistentry>
8015               <term><command>max-ixfr-log-size</command></term>
8016               <listitem>
8017                 <para>
8018                   This option is obsolete; it is accepted
8019                   and ignored for BIND 8 compatibility.  The option
8020                   <command>max-journal-size</command> performs a
8021                   similar function in BIND 9.
8022                 </para>
8023               </listitem>
8024             </varlistentry>
8025
8026             <varlistentry>
8027               <term><command>max-journal-size</command></term>
8028               <listitem>
8029                 <para>
8030                   Sets a maximum size for each journal file
8031                   (see <xref linkend="journal"/>).  When the journal file
8032                   approaches
8033                   the specified size, some of the oldest transactions in the
8034                   journal
8035                   will be automatically removed.  The default is
8036                   <literal>unlimited</literal>.
8037                   This may also be set on a per-zone basis.
8038                 </para>
8039               </listitem>
8040             </varlistentry>
8041
8042             <varlistentry>
8043               <term><command>host-statistics-max</command></term>
8044               <listitem>
8045                 <para>
8046                   In BIND 8, specifies the maximum number of host statistics
8047                   entries to be kept.
8048                   Not implemented in BIND 9.
8049                 </para>
8050               </listitem>
8051             </varlistentry>
8052
8053             <varlistentry>
8054               <term><command>recursive-clients</command></term>
8055               <listitem>
8056                 <para>
8057                   The maximum number of simultaneous recursive lookups
8058                   the server will perform on behalf of clients.  The default
8059                   is
8060                   <literal>1000</literal>.  Because each recursing
8061                   client uses a fair
8062                   bit of memory, on the order of 20 kilobytes, the value of
8063                   the
8064                   <command>recursive-clients</command> option may
8065                   have to be decreased
8066                   on hosts with limited memory.
8067                 </para>
8068               </listitem>
8069             </varlistentry>
8070
8071             <varlistentry>
8072               <term><command>tcp-clients</command></term>
8073               <listitem>
8074                 <para>
8075                   The maximum number of simultaneous client TCP
8076                   connections that the server will accept.
8077                   The default is <literal>100</literal>.
8078                 </para>
8079               </listitem>
8080             </varlistentry>
8081
8082             <varlistentry>
8083               <term><command>reserved-sockets</command></term>
8084               <listitem>
8085                 <para>
8086                   The number of file descriptors reserved for TCP, stdio,
8087                   etc.  This needs to be big enough to cover the number of
8088                   interfaces <command>named</command> listens on, <command>tcp-clients</command> as well as
8089                   to provide room for outgoing TCP queries and incoming zone
8090                   transfers.  The default is <literal>512</literal>.
8091                   The minimum value is <literal>128</literal> and the
8092                   maximum value is <literal>128</literal> less than
8093                   maxsockets (-S).  This option may be removed in the future.
8094                 </para>
8095                 <para>
8096                   This option has little effect on Windows.
8097                 </para>
8098               </listitem>
8099             </varlistentry>
8100
8101             <varlistentry>
8102               <term><command>max-cache-size</command></term>
8103               <listitem>
8104                 <para>
8105                   The maximum amount of memory to use for the
8106                   server's cache, in bytes.
8107                   When the amount of data in the cache
8108                   reaches this limit, the server will cause records to expire
8109                   prematurely based on an LRU based strategy so that
8110                   the limit is not exceeded.
8111                   A value of 0 is special, meaning that
8112                   records are purged from the cache only when their
8113                   TTLs expire.
8114                   Another special keyword <userinput>unlimited</userinput>
8115                   means the maximum value of 32-bit unsigned integers
8116                   (0xffffffff), which may not have the same effect as
8117                   0 on machines that support more than 32 bits of
8118                   memory space.
8119                   Any positive values less than 2MB will be ignored reset
8120                   to 2MB.
8121                   In a server with multiple views, the limit applies
8122                   separately to the cache of each view.
8123                   The default is 0.
8124                 </para>
8125               </listitem>
8126             </varlistentry>
8127
8128             <varlistentry>
8129               <term><command>tcp-listen-queue</command></term>
8130               <listitem>
8131                 <para>
8132                   The listen queue depth.  The default and minimum is 3.
8133                   If the kernel supports the accept filter "dataready" this
8134                   also controls how
8135                   many TCP connections that will be queued in kernel space
8136                   waiting for
8137                   some data before being passed to accept.  Values less than 3
8138                   will be
8139                   silently raised.
8140                 </para>
8141               </listitem>
8142             </varlistentry>
8143
8144           </variablelist>
8145
8146         </sect3>
8147
8148         <sect3>
8149           <title>Periodic Task Intervals</title>
8150
8151           <variablelist>
8152
8153             <varlistentry>
8154               <term><command>cleaning-interval</command></term>
8155               <listitem>
8156                 <para>
8157                   This interval is effectively obsolete.  Previously,
8158                   the server would remove expired resource records
8159                   from the cache every <command>cleaning-interval</command> minutes.
8160                   <acronym>BIND</acronym> 9 now manages cache
8161                   memory in a more sophisticated manner and does not
8162                   rely on the periodic cleaning any more.
8163                   Specifying this option therefore has no effect on
8164                   the server's behavior.
8165                 </para>
8166               </listitem>
8167             </varlistentry>
8168
8169             <varlistentry>
8170               <term><command>heartbeat-interval</command></term>
8171               <listitem>
8172                 <para>
8173                   The server will perform zone maintenance tasks
8174                   for all zones marked as <command>dialup</command> whenever this
8175                   interval expires. The default is 60 minutes. Reasonable
8176                   values are up
8177                   to 1 day (1440 minutes).  The maximum value is 28 days
8178                   (40320 minutes).
8179                   If set to 0, no zone maintenance for these zones will occur.
8180                 </para>
8181               </listitem>
8182             </varlistentry>
8183
8184             <varlistentry>
8185               <term><command>interface-interval</command></term>
8186               <listitem>
8187                 <para>
8188                   The server will scan the network interface list
8189                   every <command>interface-interval</command>
8190                   minutes. The default
8191                   is 60 minutes. The maximum value is 28 days (40320 minutes).
8192                   If set to 0, interface scanning will only occur when
8193                   the configuration file is  loaded. After the scan, the
8194                   server will
8195                   begin listening for queries on any newly discovered
8196                   interfaces (provided they are allowed by the
8197                   <command>listen-on</command> configuration), and
8198                   will
8199                   stop listening on interfaces that have gone away.
8200                 </para>
8201               </listitem>
8202             </varlistentry>
8203
8204             <varlistentry>
8205               <term><command>statistics-interval</command></term>
8206               <listitem>
8207                 <para>
8208                   Name server statistics will be logged
8209                   every <command>statistics-interval</command>
8210                   minutes. The default is
8211                   60. The maximum value is 28 days (40320 minutes).
8212                   If set to 0, no statistics will be logged.
8213                   </para><note>
8214                   <simpara>
8215                     Not yet implemented in
8216                     <acronym>BIND</acronym> 9.
8217                   </simpara>
8218                 </note>
8219               </listitem>
8220             </varlistentry>
8221
8222           </variablelist>
8223
8224         </sect3>
8225
8226         <sect3 id="topology">
8227           <title>Topology</title>
8228
8229           <para>
8230             All other things being equal, when the server chooses a name
8231             server
8232             to query from a list of name servers, it prefers the one that is
8233             topologically closest to itself. The <command>topology</command> statement
8234             takes an <command>address_match_list</command> and
8235             interprets it
8236             in a special way. Each top-level list element is assigned a
8237             distance.
8238             Non-negated elements get a distance based on their position in the
8239             list, where the closer the match is to the start of the list, the
8240             shorter the distance is between it and the server. A negated match
8241             will be assigned the maximum distance from the server. If there
8242             is no match, the address will get a distance which is further than
8243             any non-negated list element, and closer than any negated element.
8244             For example,
8245           </para>
8246
8247 <programlisting>topology {
8248     10/8;
8249     !1.2.3/24;
8250     { 1.2/16; 3/8; };
8251 };</programlisting>
8252
8253           <para>
8254             will prefer servers on network 10 the most, followed by hosts
8255             on network 1.2.0.0 (netmask 255.255.0.0) and network 3, with the
8256             exception of hosts on network 1.2.3 (netmask 255.255.255.0), which
8257             is preferred least of all.
8258           </para>
8259           <para>
8260             The default topology is
8261           </para>
8262
8263 <programlisting>    topology { localhost; localnets; };
8264 </programlisting>
8265
8266           <note>
8267             <simpara>
8268               The <command>topology</command> option
8269               is not implemented in <acronym>BIND</acronym> 9.
8270             </simpara>
8271           </note>
8272         </sect3>
8273
8274         <sect3 id="the_sortlist_statement">
8275
8276           <title>The <command>sortlist</command> Statement</title>
8277
8278           <para>
8279             The response to a DNS query may consist of multiple resource
8280             records (RRs) forming a resource records set (RRset).
8281             The name server will normally return the
8282             RRs within the RRset in an indeterminate order
8283             (but see the <command>rrset-order</command>
8284             statement in <xref linkend="rrset_ordering"/>).
8285             The client resolver code should rearrange the RRs as appropriate,
8286             that is, using any addresses on the local net in preference to
8287             other addresses.
8288             However, not all resolvers can do this or are correctly
8289             configured.
8290             When a client is using a local server, the sorting can be performed
8291             in the server, based on the client's address. This only requires
8292             configuring the name servers, not all the clients.
8293           </para>
8294
8295           <para>
8296             The <command>sortlist</command> statement (see below)
8297             takes
8298             an <command>address_match_list</command> and
8299             interprets it even
8300             more specifically than the <command>topology</command>
8301             statement
8302             does (<xref linkend="topology"/>).
8303             Each top level statement in the <command>sortlist</command> must
8304             itself be an explicit <command>address_match_list</command> with
8305             one or two elements. The first element (which may be an IP
8306             address,
8307             an IP prefix, an ACL name or a nested <command>address_match_list</command>)
8308             of each top level list is checked against the source address of
8309             the query until a match is found.
8310           </para>
8311           <para>
8312             Once the source address of the query has been matched, if
8313             the top level statement contains only one element, the actual
8314             primitive
8315             element that matched the source address is used to select the
8316             address
8317             in the response to move to the beginning of the response. If the
8318             statement is a list of two elements, then the second element is
8319             treated the same as the <command>address_match_list</command> in
8320             a <command>topology</command> statement. Each top
8321             level element
8322             is assigned a distance and the address in the response with the
8323             minimum
8324             distance is moved to the beginning of the response.
8325           </para>
8326           <para>
8327             In the following example, any queries received from any of
8328             the addresses of the host itself will get responses preferring
8329             addresses
8330             on any of the locally connected networks. Next most preferred are
8331             addresses
8332             on the 192.168.1/24 network, and after that either the
8333             192.168.2/24
8334             or
8335             192.168.3/24 network with no preference shown between these two
8336             networks. Queries received from a host on the 192.168.1/24 network
8337             will prefer other addresses on that network to the 192.168.2/24
8338             and
8339             192.168.3/24 networks. Queries received from a host on the
8340             192.168.4/24
8341             or the 192.168.5/24 network will only prefer other addresses on
8342             their directly connected networks.
8343           </para>
8344
8345 <programlisting>sortlist {
8346     // IF the local host
8347     // THEN first fit on the following nets
8348     { localhost;
8349         { localnets;
8350             192.168.1/24;
8351             { 192.168.2/24; 192.168.3/24; }; }; };
8352     // IF on class C 192.168.1 THEN use .1, or .2 or .3
8353     { 192.168.1/24;
8354         { 192.168.1/24;
8355             { 192.168.2/24; 192.168.3/24; }; }; };
8356     // IF on class C 192.168.2 THEN use .2, or .1 or .3
8357     { 192.168.2/24;
8358         { 192.168.2/24;
8359             { 192.168.1/24; 192.168.3/24; }; }; };
8360     // IF on class C 192.168.3 THEN use .3, or .1 or .2
8361     { 192.168.3/24;
8362         { 192.168.3/24;
8363             { 192.168.1/24; 192.168.2/24; }; }; };
8364     // IF .4 or .5 THEN prefer that net
8365     { { 192.168.4/24; 192.168.5/24; };
8366     };
8367 };</programlisting>
8368
8369           <para>
8370             The following example will give reasonable behavior for the
8371             local host and hosts on directly connected networks. It is similar
8372             to the behavior of the address sort in <acronym>BIND</acronym> 4.9.x. Responses sent
8373             to queries from the local host will favor any of the directly
8374             connected
8375             networks. Responses sent to queries from any other hosts on a
8376             directly
8377             connected network will prefer addresses on that same network.
8378             Responses
8379             to other queries will not be sorted.
8380           </para>
8381
8382 <programlisting>sortlist {
8383            { localhost; localnets; };
8384            { localnets; };
8385 };
8386 </programlisting>
8387
8388         </sect3>
8389         <sect3 id="rrset_ordering">
8390           <title id="rrset_ordering_title">RRset Ordering</title>
8391           <para>
8392             When multiple records are returned in an answer it may be
8393             useful to configure the order of the records placed into the
8394             response.
8395             The <command>rrset-order</command> statement permits
8396             configuration
8397             of the ordering of the records in a multiple record response.
8398             See also the <command>sortlist</command> statement,
8399             <xref linkend="the_sortlist_statement"/>.
8400           </para>
8401
8402           <para>
8403             An <command>order_spec</command> is defined as
8404             follows:
8405           </para>
8406           <para>
8407             <optional>class <replaceable>class_name</replaceable></optional>
8408             <optional>type <replaceable>type_name</replaceable></optional>
8409             <optional>name <replaceable>"domain_name"</replaceable></optional>
8410             order <replaceable>ordering</replaceable>
8411           </para>
8412           <para>
8413             If no class is specified, the default is <command>ANY</command>.
8414             If no type is specified, the default is <command>ANY</command>.
8415             If no name is specified, the default is "<command>*</command>" (asterisk).
8416           </para>
8417           <para>
8418             The legal values for <command>ordering</command> are:
8419           </para>
8420           <informaltable colsep="0" rowsep="0">
8421             <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
8422               <colspec colname="1" colnum="1" colsep="0" colwidth="0.750in"/>
8423               <colspec colname="2" colnum="2" colsep="0" colwidth="3.750in"/>
8424               <tbody>
8425                 <row rowsep="0">
8426                   <entry colname="1">
8427                     <para><command>fixed</command></para>
8428                   </entry>
8429                   <entry colname="2">
8430                     <para>
8431                       Records are returned in the order they
8432                       are defined in the zone file.
8433                     </para>
8434                   </entry>
8435                 </row>
8436                 <row rowsep="0">
8437                   <entry colname="1">
8438                     <para><command>random</command></para>
8439                   </entry>
8440                   <entry colname="2">
8441                     <para>
8442                       Records are returned in some random order.
8443                     </para>
8444                   </entry>
8445                 </row>
8446                 <row rowsep="0">
8447                   <entry colname="1">
8448                     <para><command>cyclic</command></para>
8449                   </entry>
8450                   <entry colname="2">
8451                     <para>
8452                       Records are returned in a cyclic round-robin order.
8453                     </para>
8454                     <para>
8455                       If <acronym>BIND</acronym> is configured with the
8456                       "--enable-fixed-rrset" option at compile time, then
8457                       the initial ordering of the RRset will match the
8458                       one specified in the zone file.
8459                     </para>
8460                   </entry>
8461                 </row>
8462               </tbody>
8463             </tgroup>
8464           </informaltable>
8465           <para>
8466             For example:
8467           </para>
8468
8469 <programlisting>rrset-order {
8470    class IN type A name "host.example.com" order random;
8471    order cyclic;
8472 };
8473 </programlisting>
8474
8475           <para>
8476             will cause any responses for type A records in class IN that
8477             have "<literal>host.example.com</literal>" as a
8478             suffix, to always be returned
8479             in random order. All other records are returned in cyclic order.
8480           </para>
8481           <para>
8482             If multiple <command>rrset-order</command> statements
8483             appear,
8484             they are not combined &mdash; the last one applies.
8485           </para>
8486
8487           <note>
8488             <simpara>
8489               In this release of <acronym>BIND</acronym> 9, the
8490               <command>rrset-order</command> statement does not support
8491               "fixed" ordering by default.  Fixed ordering can be enabled
8492               at compile time by specifying "--enable-fixed-rrset" on
8493               the "configure" command line.
8494             </simpara>
8495           </note>
8496         </sect3>
8497
8498         <sect3 id="tuning">
8499           <title>Tuning</title>
8500
8501           <variablelist>
8502
8503             <varlistentry>
8504               <term><command>lame-ttl</command></term>
8505               <listitem>
8506                 <para>
8507                   Sets the number of seconds to cache a
8508                   lame server indication. 0 disables caching. (This is
8509                   <emphasis role="bold">NOT</emphasis> recommended.)
8510                   The default is <literal>600</literal> (10 minutes) and the
8511                   maximum value is
8512                   <literal>1800</literal> (30 minutes).
8513                 </para>
8514
8515                 <para>
8516                   Lame-ttl also controls the amount of time DNSSEC
8517                   validation failures are cached.  There is a minimum
8518                   of 30 seconds applied to bad cache entries if the
8519                   lame-ttl is set to less than 30 seconds.
8520                 </para>
8521
8522               </listitem>
8523             </varlistentry>
8524
8525             <varlistentry>
8526               <term><command>max-ncache-ttl</command></term>
8527               <listitem>
8528                 <para>
8529                   To reduce network traffic and increase performance,
8530                   the server stores negative answers. <command>max-ncache-ttl</command> is
8531                   used to set a maximum retention time for these answers in
8532                   the server
8533                   in seconds. The default
8534                   <command>max-ncache-ttl</command> is <literal>10800</literal> seconds (3 hours).
8535                   <command>max-ncache-ttl</command> cannot exceed
8536                   7 days and will
8537                   be silently truncated to 7 days if set to a greater value.
8538                 </para>
8539               </listitem>
8540             </varlistentry>
8541
8542             <varlistentry>
8543               <term><command>max-cache-ttl</command></term>
8544               <listitem>
8545                 <para>
8546                   Sets the maximum time for which the server will
8547                   cache ordinary (positive) answers. The default is
8548                   one week (7 days).
8549                   A value of zero may cause all queries to return
8550                   SERVFAIL, because of lost caches of intermediate
8551                   RRsets (such as NS and glue AAAA/A records) in the
8552                   resolution process.
8553                 </para>
8554               </listitem>
8555             </varlistentry>
8556
8557             <varlistentry>
8558               <term><command>min-roots</command></term>
8559               <listitem>
8560                 <para>
8561                   The minimum number of root servers that
8562                   is required for a request for the root servers to be
8563                   accepted. The default
8564                   is <userinput>2</userinput>.
8565                 </para>
8566                 <note>
8567                   <simpara>
8568                     Not implemented in <acronym>BIND</acronym> 9.
8569                   </simpara>
8570                 </note>
8571               </listitem>
8572             </varlistentry>
8573
8574             <varlistentry>
8575               <term><command>sig-validity-interval</command></term>
8576               <listitem>
8577                 <para>
8578                   Specifies the number of days into the future when
8579                   DNSSEC signatures automatically generated as a
8580                   result of dynamic updates (<xref
8581                   linkend="dynamic_update"/>) will expire.  There
8582                   is an optional second field which specifies how
8583                   long before expiry that the signatures will be
8584                   regenerated.  If not specified, the signatures will
8585                   be regenerated at 1/4 of base interval.  The second
8586                   field is specified in days if the base interval is
8587                   greater than 7 days otherwise it is specified in hours.
8588                   The default base interval is <literal>30</literal> days
8589                   giving a re-signing interval of 7 1/2 days.  The maximum
8590                   values are 10 years (3660 days).
8591                 </para>
8592                 <para>
8593                   The signature inception time is unconditionally
8594                   set to one hour before the current time to allow
8595                   for a limited amount of clock skew.
8596                 </para>
8597                 <para>
8598                   The <command>sig-validity-interval</command>
8599                   should be, at least, several multiples of the SOA
8600                   expire interval to allow for reasonable interaction
8601                   between the various timer and expiry dates.
8602                 </para>
8603               </listitem>
8604             </varlistentry>
8605
8606             <varlistentry>
8607               <term><command>sig-signing-nodes</command></term>
8608               <listitem>
8609                 <para>
8610                   Specify the maximum number of nodes to be
8611                   examined in each quantum when signing a zone with
8612                   a new DNSKEY. The default is
8613                   <literal>100</literal>.
8614                 </para>
8615               </listitem>
8616             </varlistentry>
8617
8618             <varlistentry>
8619               <term><command>sig-signing-signatures</command></term>
8620               <listitem>
8621                 <para>
8622                   Specify a threshold number of signatures that
8623                   will terminate processing a quantum when signing
8624                   a zone with a new DNSKEY.  The default is
8625                   <literal>10</literal>.
8626                 </para>
8627               </listitem>
8628             </varlistentry>
8629
8630             <varlistentry>
8631               <term><command>sig-signing-type</command></term>
8632               <listitem>
8633                 <para>
8634                   Specify a private RDATA type to be used when generating
8635                   key signing records.  The default is
8636                   <literal>65534</literal>.
8637                 </para>
8638                 <para>
8639                   It is expected that this parameter may be removed
8640                   in a future version once there is a standard type.
8641                 </para>
8642               </listitem>
8643             </varlistentry>
8644
8645             <varlistentry>
8646               <term><command>min-refresh-time</command></term>
8647               <term><command>max-refresh-time</command></term>
8648               <term><command>min-retry-time</command></term>
8649               <term><command>max-retry-time</command></term>
8650               <listitem>
8651                 <para>
8652                   These options control the server's behavior on refreshing a
8653                   zone
8654                   (querying for SOA changes) or retrying failed transfers.
8655                   Usually the SOA values for the zone are used, but these
8656                   values
8657                   are set by the master, giving slave server administrators
8658                   little
8659                   control over their contents.
8660                 </para>
8661                 <para>
8662                   These options allow the administrator to set a minimum and
8663                   maximum
8664                   refresh and retry time either per-zone, per-view, or
8665                   globally.
8666                   These options are valid for slave and stub zones,
8667                   and clamp the SOA refresh and retry times to the specified
8668                   values.
8669                 </para>
8670                 <para>
8671                   The following defaults apply.
8672                   <command>min-refresh-time</command> 300 seconds,
8673                   <command>max-refresh-time</command> 2419200 seconds
8674                   (4 weeks), <command>min-retry-time</command> 500 seconds,
8675                   and <command>max-retry-time</command> 1209600 seconds
8676                   (2 weeks).
8677                 </para>
8678               </listitem>
8679             </varlistentry>
8680
8681             <varlistentry>
8682               <term><command>edns-udp-size</command></term>
8683               <listitem>
8684                 <para>
8685                   Sets the advertised EDNS UDP buffer size in bytes
8686                   to control the size of packets received.
8687                   Valid values are 512 to 4096 (values outside this range
8688                   will be silently adjusted).  The default value
8689                   is 4096.  The usual reason for setting
8690                   <command>edns-udp-size</command> to a non-default
8691                   value is to get UDP answers to pass through broken
8692                   firewalls that block fragmented packets and/or
8693                   block UDP packets that are greater than 512 bytes.
8694                 </para>
8695                 <para>
8696                   <command>named</command> will fallback to using 512 bytes
8697                   if it get a series of timeout at the initial value.  512
8698                   bytes is not being offered to encourage sites to fix their
8699                   firewalls.  Small EDNS UDP sizes will result in the
8700                   excessive use of TCP.
8701                 </para>
8702               </listitem>
8703             </varlistentry>
8704
8705             <varlistentry>
8706               <term><command>max-udp-size</command></term>
8707               <listitem>
8708                 <para>
8709                   Sets the maximum EDNS UDP message size
8710                   <command>named</command> will send in bytes.
8711                   Valid values are 512 to 4096 (values outside this
8712                   range will be silently adjusted).  The default
8713                   value is 4096.  The usual reason for setting
8714                   <command>max-udp-size</command> to a non-default
8715                   value is to get UDP answers to pass through broken
8716                   firewalls that block fragmented packets and/or
8717                   block UDP packets that are greater than 512 bytes.
8718                   This is independent of the advertised receive
8719                   buffer (<command>edns-udp-size</command>).
8720                 </para>
8721                 <para>
8722                   Setting this to a low value will encourage additional
8723                   TCP traffic to the nameserver.
8724                 </para>
8725               </listitem>
8726             </varlistentry>
8727
8728             <varlistentry>
8729               <term><command>masterfile-format</command></term>
8730               <listitem>
8731                 <para>Specifies
8732                   the file format of zone files (see
8733                   <xref linkend="zonefile_format"/>).
8734                   The default value is <constant>text</constant>, which is the
8735                   standard textual representation.  Files in other formats
8736                   than <constant>text</constant> are typically expected
8737                   to be generated by the <command>named-compilezone</command> tool.
8738                   Note that when a zone file in a different format than
8739                   <constant>text</constant> is loaded, <command>named</command>
8740                   may omit some of the checks which would be performed for a
8741                   file in the <constant>text</constant> format.  In particular,
8742                   <command>check-names</command> checks do not apply
8743                   for the <constant>raw</constant> format.  This means
8744                   a zone file in the <constant>raw</constant> format
8745                   must be generated with the same check level as that
8746                   specified in the <command>named</command> configuration
8747                   file.  This statement sets the
8748                   <command>masterfile-format</command> for all zones,
8749                   but can be overridden on a per-zone or per-view basis
8750                   by including a <command>masterfile-format</command>
8751                   statement within the <command>zone</command> or
8752                   <command>view</command> block in the configuration
8753                   file.
8754                 </para>
8755               </listitem>
8756             </varlistentry>
8757
8758             <varlistentry id="clients-per-query">
8759               <term><command>clients-per-query</command></term>
8760               <term><command>max-clients-per-query</command></term>
8761               <listitem>
8762                 <para>These set the
8763                   initial value (minimum) and maximum number of recursive
8764                   simultaneous clients for any given query
8765                   (&lt;qname,qtype,qclass&gt;) that the server will accept
8766                   before dropping additional clients.  <command>named</command> will attempt to
8767                   self tune this value and changes will be logged.  The
8768                   default values are 10 and 100.
8769                 </para>
8770                 <para>
8771                   This value should reflect how many queries come in for
8772                   a given name in the time it takes to resolve that name.
8773                   If the number of queries exceed this value, <command>named</command> will
8774                   assume that it is dealing with a non-responsive zone
8775                   and will drop additional queries.  If it gets a response
8776                   after dropping queries, it will raise the estimate.  The
8777                   estimate will then be lowered in 20 minutes if it has
8778                   remained unchanged.
8779                 </para>
8780                 <para>
8781                   If <command>clients-per-query</command> is set to zero,
8782                   then there is no limit on the number of clients per query
8783                   and no queries will be dropped.
8784                 </para>
8785                 <para>
8786                   If <command>max-clients-per-query</command> is set to zero,
8787                   then there is no upper bound other than imposed by
8788                   <command>recursive-clients</command>.
8789                 </para>
8790               </listitem>
8791             </varlistentry>
8792
8793             <varlistentry>
8794               <term><command>notify-delay</command></term>
8795               <listitem>
8796                 <para>
8797                   The delay, in seconds, between sending sets of notify
8798                   messages for a zone.  The default is five (5) seconds.
8799                 </para>
8800                 <para>
8801                   The overall rate that NOTIFY messages are sent for all
8802                   zones is controlled by <command>serial-query-rate</command>.
8803                 </para>
8804               </listitem>
8805             </varlistentry>
8806           </variablelist>
8807
8808         </sect3>
8809
8810         <sect3 id="builtin">
8811           <title>Built-in server information zones</title>
8812
8813           <para>
8814             The server provides some helpful diagnostic information
8815             through a number of built-in zones under the
8816             pseudo-top-level-domain <literal>bind</literal> in the
8817             <command>CHAOS</command> class.  These zones are part
8818             of a
8819             built-in view (see <xref linkend="view_statement_grammar"/>) of
8820             class
8821             <command>CHAOS</command> which is separate from the
8822             default view of
8823             class <command>IN</command>; therefore, any global
8824             server options
8825             such as <command>allow-query</command> do not apply
8826             the these zones.
8827             If you feel the need to disable these zones, use the options
8828             below, or hide the built-in <command>CHAOS</command>
8829             view by
8830             defining an explicit view of class <command>CHAOS</command>
8831             that matches all clients.
8832           </para>
8833
8834           <variablelist>
8835
8836             <varlistentry>
8837               <term><command>version</command></term>
8838               <listitem>
8839                 <para>
8840                   The version the server should report
8841                   via a query of the name <literal>version.bind</literal>
8842                   with type <command>TXT</command>, class <command>CHAOS</command>.
8843                   The default is the real version number of this server.
8844                   Specifying <command>version none</command>
8845                   disables processing of the queries.
8846                 </para>
8847               </listitem>
8848             </varlistentry>
8849
8850             <varlistentry>
8851               <term><command>hostname</command></term>
8852               <listitem>
8853                 <para>
8854                   The hostname the server should report via a query of
8855                   the name <filename>hostname.bind</filename>
8856                   with type <command>TXT</command>, class <command>CHAOS</command>.
8857                   This defaults to the hostname of the machine hosting the
8858                   name server as
8859                   found by the gethostname() function.  The primary purpose of such queries
8860                   is to
8861                   identify which of a group of anycast servers is actually
8862                   answering your queries.  Specifying <command>hostname none;</command>
8863                   disables processing of the queries.
8864                 </para>
8865               </listitem>
8866             </varlistentry>
8867
8868             <varlistentry>
8869               <term><command>server-id</command></term>
8870               <listitem>
8871                 <para>
8872                   The ID the server should report when receiving a Name
8873                   Server Identifier (NSID) query, or a query of the name
8874                   <filename>ID.SERVER</filename> with type
8875                   <command>TXT</command>, class <command>CHAOS</command>.
8876                   The primary purpose of such queries is to
8877                   identify which of a group of anycast servers is actually
8878                   answering your queries.  Specifying <command>server-id none;</command>
8879                   disables processing of the queries.
8880                   Specifying <command>server-id hostname;</command> will cause <command>named</command> to
8881                   use the hostname as found by the gethostname() function.
8882                   The default <command>server-id</command> is <command>none</command>.
8883                 </para>
8884               </listitem>
8885             </varlistentry>
8886
8887           </variablelist>
8888
8889         </sect3>
8890
8891         <sect3 id="empty">
8892           <title>Built-in Empty Zones</title>
8893           <para>
8894             Named has some built-in empty zones (SOA and NS records only).
8895             These are for zones that should normally be answered locally
8896             and which queries should not be sent to the Internet's root
8897             servers.  The official servers which cover these namespaces
8898             return NXDOMAIN responses to these queries.  In particular,
8899             these cover the reverse namespaces for addresses from
8900             RFC 1918, RFC 4193, and RFC 5737.  They also include the
8901             reverse namespace for IPv6 local address (locally assigned),
8902             IPv6 link local addresses, the IPv6 loopback address and the
8903             IPv6 unknown address.
8904           </para>
8905           <para>
8906             Named will attempt to determine if a built-in zone already exists
8907             or is active (covered by a forward-only forwarding declaration)
8908             and will not create an empty zone in that case.
8909           </para>
8910           <para>
8911             The current list of empty zones is:
8912             <itemizedlist>
8913               <listitem>10.IN-ADDR.ARPA</listitem>
8914               <listitem>16.172.IN-ADDR.ARPA</listitem>
8915               <listitem>17.172.IN-ADDR.ARPA</listitem>
8916               <listitem>18.172.IN-ADDR.ARPA</listitem>
8917               <listitem>19.172.IN-ADDR.ARPA</listitem>
8918               <listitem>20.172.IN-ADDR.ARPA</listitem>
8919               <listitem>21.172.IN-ADDR.ARPA</listitem>
8920               <listitem>22.172.IN-ADDR.ARPA</listitem>
8921               <listitem>23.172.IN-ADDR.ARPA</listitem>
8922               <listitem>24.172.IN-ADDR.ARPA</listitem>
8923               <listitem>25.172.IN-ADDR.ARPA</listitem>
8924               <listitem>26.172.IN-ADDR.ARPA</listitem>
8925               <listitem>27.172.IN-ADDR.ARPA</listitem>
8926               <listitem>28.172.IN-ADDR.ARPA</listitem>
8927               <listitem>29.172.IN-ADDR.ARPA</listitem>
8928               <listitem>30.172.IN-ADDR.ARPA</listitem>
8929               <listitem>31.172.IN-ADDR.ARPA</listitem>
8930               <listitem>168.192.IN-ADDR.ARPA</listitem>
8931               <listitem>0.IN-ADDR.ARPA</listitem>
8932               <listitem>127.IN-ADDR.ARPA</listitem>
8933               <listitem>254.169.IN-ADDR.ARPA</listitem>
8934               <listitem>2.0.192.IN-ADDR.ARPA</listitem>
8935               <listitem>100.51.198.IN-ADDR.ARPA</listitem>
8936               <listitem>113.0.203.IN-ADDR.ARPA</listitem>
8937               <listitem>255.255.255.255.IN-ADDR.ARPA</listitem>
8938               <listitem>0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA</listitem>
8939               <listitem>1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA</listitem>
8940               <listitem>8.B.D.0.1.0.0.2.IP6.ARPA</listitem>
8941               <listitem>D.F.IP6.ARPA</listitem>
8942               <listitem>8.E.F.IP6.ARPA</listitem>
8943               <listitem>9.E.F.IP6.ARPA</listitem>
8944               <listitem>A.E.F.IP6.ARPA</listitem>
8945               <listitem>B.E.F.IP6.ARPA</listitem>
8946             </itemizedlist>
8947           </para>
8948           <para>
8949             Empty zones are settable at the view level and only apply to
8950             views of class IN.  Disabled empty zones are only inherited
8951             from options if there are no disabled empty zones specified
8952             at the view level.  To override the options list of disabled
8953             zones, you can disable the root zone at the view level, for example:
8954 <programlisting>
8955             disable-empty-zone ".";
8956 </programlisting>
8957           </para>
8958           <para>
8959             If you are using the address ranges covered here, you should
8960             already have reverse zones covering the addresses you use.
8961             In practice this appears to not be the case with many queries
8962             being made to the infrastructure servers for names in these
8963             spaces.  So many in fact that sacrificial servers were needed
8964             to be deployed to channel the query load away from the
8965             infrastructure servers.
8966           </para>
8967           <note>
8968             The real parent servers for these zones should disable all
8969             empty zone under the parent zone they serve.  For the real
8970             root servers, this is all built-in empty zones.  This will
8971             enable them to return referrals to deeper in the tree.
8972           </note>
8973           <variablelist>
8974             <varlistentry>
8975               <term><command>empty-server</command></term>
8976               <listitem>
8977                 <para>
8978                   Specify what server name will appear in the returned
8979                   SOA record for empty zones.  If none is specified, then
8980                   the zone's name will be used.
8981                 </para>
8982                </listitem>
8983             </varlistentry>
8984               
8985             <varlistentry>
8986               <term><command>empty-contact</command></term>
8987               <listitem>
8988                 <para>
8989                   Specify what contact name will appear in the returned
8990                   SOA record for empty zones.  If none is specified, then
8991                   "." will be used.
8992                 </para>
8993               </listitem>
8994             </varlistentry>
8995   
8996             <varlistentry>
8997               <term><command>empty-zones-enable</command></term>
8998               <listitem>
8999                 <para>
9000                   Enable or disable all empty zones.  By default, they
9001                   are enabled.
9002                 </para>
9003               </listitem>
9004             </varlistentry>
9005   
9006             <varlistentry>
9007             <term><command>disable-empty-zone</command></term>
9008               <listitem>
9009                 <para>
9010                   Disable individual empty zones.  By default, none are
9011                   disabled.  This option can be specified multiple times.
9012                 </para>
9013               </listitem>
9014             </varlistentry>
9015           </variablelist>
9016         </sect3>
9017
9018         <sect3 id="acache">
9019           <title>Additional Section Caching</title>
9020
9021           <para>
9022             The additional section cache, also called <command>acache</command>,
9023             is an internal cache to improve the response performance of BIND 9.
9024             When additional section caching is enabled, BIND 9 will
9025             cache an internal short-cut to the additional section content for
9026             each answer RR.
9027             Note that <command>acache</command> is an internal caching
9028             mechanism of BIND 9, and is not related to the DNS caching
9029             server function.
9030           </para>
9031
9032           <para>
9033             Additional section caching does not change the
9034             response content (except the RRsets ordering of the additional
9035             section, see below), but can improve the response performance
9036             significantly.
9037             It is particularly effective when BIND 9 acts as an authoritative
9038             server for a zone that has many delegations with many glue RRs.
9039           </para>
9040
9041           <para>
9042             In order to obtain the maximum performance improvement
9043             from additional section caching, setting
9044             <command>additional-from-cache</command>
9045             to <command>no</command> is recommended, since the current
9046             implementation of <command>acache</command>
9047             does not short-cut of additional section information from the
9048             DNS cache data.
9049           </para>
9050
9051           <para>
9052             One obvious disadvantage of <command>acache</command> is
9053             that it requires much more
9054             memory for the internal cached data.
9055             Thus, if the response performance does not matter and memory
9056             consumption is much more critical, the
9057             <command>acache</command> mechanism can be
9058             disabled by setting <command>acache-enable</command> to
9059             <command>no</command>.
9060             It is also possible to specify the upper limit of memory
9061             consumption
9062             for acache by using <command>max-acache-size</command>.
9063           </para>
9064
9065           <para>
9066             Additional section caching also has a minor effect on the
9067             RRset ordering in the additional section.
9068             Without <command>acache</command>,
9069             <command>cyclic</command> order is effective for the additional
9070             section as well as the answer and authority sections.
9071             However, additional section caching fixes the ordering when it
9072             first caches an RRset for the additional section, and the same
9073             ordering will be kept in succeeding responses, regardless of the
9074             setting of <command>rrset-order</command>.
9075             The effect of this should be minor, however, since an
9076             RRset in the additional section
9077             typically only contains a small number of RRs (and in many cases
9078             it only contains a single RR), in which case the
9079             ordering does not matter much.
9080           </para>
9081
9082           <para>
9083             The following is a summary of options related to
9084             <command>acache</command>.
9085           </para>
9086
9087           <variablelist>
9088
9089             <varlistentry>
9090               <term><command>acache-enable</command></term>
9091               <listitem>
9092                 <para>
9093                   If <command>yes</command>, additional section caching is
9094                   enabled.  The default value is <command>no</command>.
9095                 </para>
9096               </listitem>
9097             </varlistentry>
9098
9099             <varlistentry>
9100               <term><command>acache-cleaning-interval</command></term>
9101               <listitem>
9102                 <para>
9103                   The server will remove stale cache entries, based on an LRU
9104                   based
9105                   algorithm, every <command>acache-cleaning-interval</command> minutes.
9106                   The default is 60 minutes.
9107                   If set to 0, no periodic cleaning will occur.
9108                 </para>
9109               </listitem>
9110             </varlistentry>
9111
9112             <varlistentry>
9113               <term><command>max-acache-size</command></term>
9114               <listitem>
9115                 <para>
9116                   The maximum amount of memory in bytes to use for the server's acache.
9117                   When the amount of data in the acache reaches this limit,
9118                   the server
9119                   will clean more aggressively so that the limit is not
9120                   exceeded.
9121                   In a server with multiple views, the limit applies
9122                   separately to the
9123                   acache of each view.
9124                   The default is <literal>16M</literal>.
9125                 </para>
9126               </listitem>
9127             </varlistentry>
9128
9129           </variablelist>
9130
9131         </sect3>
9132
9133         <sect3>
9134           <title>Content Filtering</title>
9135           <para>
9136             <acronym>BIND</acronym> 9 provides the ability to filter
9137             out DNS responses from external DNS servers containing
9138             certain types of data in the answer section.
9139             Specifically, it can reject address (A or AAAA) records if
9140             the corresponding IPv4 or IPv6 addresses match the given
9141             <varname>address_match_list</varname> of the
9142             <command>deny-answer-addresses</command> option.
9143             It can also reject CNAME or DNAME records if the "alias"
9144             name (i.e., the CNAME alias or the substituted query name
9145             due to DNAME) matches the
9146             given <varname>namelist</varname> of the
9147             <command>deny-answer-aliases</command> option, where
9148             "match" means the alias name is a subdomain of one of
9149             the <varname>name_list</varname> elements.
9150             If the optional <varname>namelist</varname> is specified
9151             with <command>except-from</command>, records whose query name
9152             matches the list will be accepted regardless of the filter
9153             setting.
9154             Likewise, if the alias name is a subdomain of the
9155             corresponding zone, the <command>deny-answer-aliases</command>
9156             filter will not apply;
9157             for example, even if "example.com" is specified for
9158             <command>deny-answer-aliases</command>,
9159           </para>
9160 <programlisting>www.example.com. CNAME xxx.example.com.</programlisting>
9161
9162           <para>
9163             returned by an "example.com" server will be accepted.
9164           </para>
9165
9166           <para>
9167             In the <varname>address_match_list</varname> of the
9168             <command>deny-answer-addresses</command> option, only
9169             <varname>ip_addr</varname>
9170             and <varname>ip_prefix</varname>
9171             are meaningful;
9172             any <varname>key_id</varname> will be silently ignored.
9173           </para>
9174
9175           <para>
9176             If a response message is rejected due to the filtering,
9177             the entire message is discarded without being cached, and
9178             a SERVFAIL error will be returned to the client.
9179           </para>
9180
9181           <para>
9182             This filtering is intended to prevent "DNS rebinding attacks," in
9183             which an attacker, in response to a query for a domain name the
9184             attacker controls, returns an IP address within your own network or
9185             an alias name within your own domain.
9186             A naive web browser or script could then serve as an
9187             unintended proxy, allowing the attacker
9188             to get access to an internal node of your local network
9189             that couldn't be externally accessed otherwise.
9190             See the paper available at
9191             <ulink>
9192             http://portal.acm.org/citation.cfm?id=1315245.1315298
9193             </ulink>
9194             for more details about the attacks.
9195           </para>
9196
9197           <para>
9198             For example, if you own a domain named "example.net" and
9199             your internal network uses an IPv4 prefix 192.0.2.0/24,
9200             you might specify the following rules:
9201           </para>
9202
9203 <programlisting>deny-answer-addresses { 192.0.2.0/24; } except-from { "example.net"; };
9204 deny-answer-aliases { "example.net"; };
9205 </programlisting>
9206
9207           <para>
9208             If an external attacker lets a web browser in your local
9209             network look up an IPv4 address of "attacker.example.com",
9210             the attacker's DNS server would return a response like this:
9211           </para>
9212
9213 <programlisting>attacker.example.com. A 192.0.2.1</programlisting>
9214
9215           <para>
9216             in the answer section.
9217             Since the rdata of this record (the IPv4 address) matches
9218             the specified prefix 192.0.2.0/24, this response will be
9219             ignored.
9220           </para>
9221
9222           <para>
9223             On the other hand, if the browser looks up a legitimate
9224             internal web server "www.example.net" and the
9225             following response is returned to
9226             the <acronym>BIND</acronym> 9 server
9227           </para>
9228
9229 <programlisting>www.example.net. A 192.0.2.2</programlisting>
9230
9231           <para>
9232             it will be accepted since the owner name "www.example.net"
9233             matches the <command>except-from</command> element,
9234             "example.net".
9235           </para>
9236
9237           <para>
9238             Note that this is not really an attack on the DNS per se.
9239             In fact, there is nothing wrong for an "external" name to
9240             be mapped to your "internal" IP address or domain name
9241             from the DNS point of view.
9242             It might actually be provided for a legitimate purpose,
9243             such as for debugging.
9244             As long as the mapping is provided by the correct owner,
9245             it is not possible or does not make sense to detect
9246             whether the intent of the mapping is legitimate or not
9247             within the DNS.
9248             The "rebinding" attack must primarily be protected at the
9249             application that uses the DNS.
9250             For a large site, however, it may be difficult to protect
9251             all possible applications at once.
9252             This filtering feature is provided only to help such an
9253             operational environment;
9254             it is generally discouraged to turn it on unless you are
9255             very sure you have no other choice and the attack is a
9256             real threat for your applications.
9257           </para>
9258
9259           <para>
9260             Care should be particularly taken if you want to use this
9261             option for addresses within 127.0.0.0/8.
9262             These addresses are obviously "internal", but many
9263             applications conventionally rely on a DNS mapping from
9264             some name to such an address.
9265             Filtering out DNS records containing this address
9266             spuriously can break such applications.
9267           </para>
9268         </sect3>
9269
9270         <sect3>
9271           <title>Response Policy Zone (RPZ) Rewriting</title>
9272           <para>
9273             <acronym>BIND</acronym> 9 includes a limited
9274             mechanism to modify DNS responses for requests
9275             analogous to email anti-spam DNS blacklists.
9276             Responses can be changed to deny the existence of domains(NXDOMAIN),
9277             deny the existence of IP addresses for domains (NODATA),
9278             or contain other IP addresses or data.
9279           </para>
9280
9281           <para>
9282             Response policy zones are named in the
9283             <command>response-policy</command> option for the view or among the
9284             global options if there is no response-policy option for the view.
9285             RPZs are ordinary DNS zones containing RRsets
9286             that can be queried normally if allowed.
9287             It is usually best to restrict those queries with something like
9288             <command>allow-query { localhost; };</command>.
9289           </para>
9290
9291           <para>
9292             Four policy triggers are encoded in RPZ records, QNAME, IP, NSIP,
9293             and NSDNAME.
9294             QNAME RPZ records triggered by query names of requests and targets
9295             of CNAME records resolved to generate the response.
9296             The owner name of a QNAME RPZ record is the query name relativized
9297             to the RPZ.
9298           </para>
9299
9300           <para>
9301             The second kind of RPZ trigger is an IP address in an A and AAAA
9302             record in the ANSWER section of a response.
9303             IP address triggers are encoded in records that have owner names
9304             that are subdomains of <userinput>rpz-ip</userinput> relativized
9305             to the RPZ origin name and encode an IP address or address block.
9306             IPv4 trigger addresses are represented as
9307             <userinput>prefixlength.B4.B3.B2.B1.rpz-ip</userinput>.
9308             The prefix length must be between 1 and 32.
9309             All four bytes, B4, B3, B2, and B1, must be present.
9310             B4 is the decimal value of the least significant byte of the
9311             IPv4 address as in IN-ADDR.ARPA.
9312             IPv6 addresses are encoded in a format similar to the standard
9313             IPv6 text representation,
9314             <userinput>prefixlength.W8.W7.W6.W5.W4.W3.W2.W1.rpz-ip</userinput>.
9315             Each of W8,...,W1 is a one to four digit hexadecimal number
9316             representing 16 bits of the IPv6 address as in the standard text
9317             representation of IPv6 addresses, but reversed as in IN-ADDR.ARPA.
9318             All 8 words must be present except when consecutive
9319             zero words are replaced with <userinput>.zz.</userinput>
9320             analogous to double colons (::) in standard IPv6 text encodings.
9321             The prefix length must be between 1 and 128.
9322           </para>
9323
9324           <para>
9325             NSDNAME triggers match names of authoritative servers
9326             for the query name, a parent of the query name, a CNAME for
9327             query name, or a parent of a CNAME.
9328             They are encoded as subdomains of
9329             <userinput>rpz-nsdomain</userinput> relativized
9330             to the RPZ origin name.
9331           </para>
9332
9333           <para>
9334             NSIP triggers match IP addresses in A and
9335             AAAA RRsets for domains that can be checked against NSDNAME
9336             policy records.
9337             NSIP triggers are encoded like IP triggers except as subdomains of
9338             <userinput>rpz-nsip</userinput>.
9339           </para>
9340
9341           <para>
9342             The query response is checked against all RPZs, so
9343             two or more policy records can be triggered by a response.
9344             Because DNS responses can be rewritten according to at most one
9345             policy record, a single record encoding an action (other than
9346             <command>DISABLED</command> actions) must be chosen.
9347             Triggers or the records that encode them are chosen in
9348             the following order:
9349             <itemizedlist>
9350               <listitem>Choose the triggered record in the zone that appears
9351                 first in the response-policy option.
9352               </listitem>
9353               <listitem>Prefer QNAME to IP to NSDNAME to NSIP triggers
9354                 in a single zone.
9355               </listitem>
9356               <listitem>Among NSDNAME triggers, prefer the
9357                 trigger that matches the smallest name under the DNSSEC ordering.
9358               </listitem>
9359               <listitem>Among IP or NSIP triggers, prefer the trigger
9360                 with the longest prefix.
9361               </listitem>
9362               <listitem>Among triggers with the same prefex length,
9363                 prefer the IP or NSIP trigger that matches
9364                 the smallest IP address.
9365               </listitem>
9366             </itemizedlist>
9367           </para>
9368
9369           <para>
9370             When the processing of a response is restarted to resolve
9371             DNAME or CNAME records and a policy record set has
9372             not been triggered,
9373             all RPZs are again consulted for the DNAME or CNAME names
9374             and addresses.
9375           </para>
9376
9377           <para>
9378             Authority verification issues and variations in authority data
9379             can cause inconsistent results for NSIP and NSDNAME policy records.
9380             Glue NS records often differ from authoritative NS records.
9381             So they are available
9382             only when <acronym>BIND</acronym> is built with the
9383             <userinput>--enable-rpz-nsip</userinput> or
9384             <userinput>--enable-rpz-nsdname</userinput> options
9385             on the "configure" command line.
9386           </para>
9387
9388           <para>
9389             RPZ record sets are sets of any types of DNS record except
9390             DNAME or DNSSEC that encode actions or responses to queries.
9391             <itemizedlist>
9392               <listitem>The <command>NXDOMAIN</command> response is encoded
9393                 by a CNAME whose target is the root domain (.)
9394               </listitem>
9395               <listitem>A CNAME whose target is the wildcard top-level
9396                 domain (*.) specifies the <command>NODATA</command> action,
9397                 which rewrites the response to NODATA or ANCOUNT=1.
9398               </listitem>
9399               <listitem>The <command>Local Data</command> action is
9400                 represented by a set ordinary DNS records that are used
9401                 to answer queries.  Queries for record types not the
9402                 set are answered with NODATA.
9403
9404                 A special form of local data is a CNAME whose target is a
9405                 wildcard such as *.example.com.
9406                 It is used as if were an ordinary CNAME after the astrisk (*)
9407                 has been replaced with the query name.
9408                 The purpose for this special form is query logging in the
9409                 walled garden's authority DNS server.
9410               </listitem>
9411               <listitem>The <command>PASSTHRU</command> policy is specified
9412                 by a CNAME whose target is <command>rpz_passthru.</command>
9413                 It causes the response to not be rewritten
9414                 and is most often used to "poke holes" in policies for
9415                 CIDR blocks.
9416                 (A CNAME whose target is the variable part of its owner name
9417                 is an obsolete specification of the PASSTHRU policy.)
9418               </listitem>
9419             </itemizedlist>
9420           </para>
9421
9422           <para>
9423             The actions specified in an RPZ can be overridden with a
9424             <command>policy</command> clause in the
9425             <command>response-policy</command> option.
9426             An organization using an RPZ provided by another organization might
9427             use this mechanism to redirect domains to its own walled garden.
9428             <itemizedlist>
9429               <listitem><command>GIVEN</command> says "do not override but
9430                 perform the action specified in the zone."
9431               </listitem>
9432               <listitem><command>DISABLED</command> causes policy records to do
9433                 nothing but log what they might have done.
9434                 The response to the DNS query will be written according to
9435                 any triggered policy records that are not disabled.
9436                 Disabled policy zones should appear first,
9437                 because they will often not be logged
9438                 if a higher precedence trigger is found first.
9439               </listitem>
9440               <listitem><command>PASSTHRU</command> causes all policy records
9441                 to act as if they were CNAME records with targets the variable
9442                 part of their owner name.  They protect the response from
9443                 being changed.
9444               </listitem>
9445               <listitem><command>NXDOMAIN</command> causes all RPZ records
9446                 to specify NXDOMAIN policies.
9447               </listitem>
9448               <listitem><command>NODATA</command> overrides with the
9449                 NODATA policy
9450               </listitem>
9451               <listitem><command>CNAME domain</command> causes all RPZ
9452                 policy records to act as if they were "cname domain" records.
9453               </listitem>
9454             </itemizedlist>
9455           </para>
9456
9457           <para>
9458             By default, the actions encoded in an RPZ are applied
9459             only to queries that ask for recursion (RD=1).
9460             That default can be changed for a single RPZ or all RPZs in a view
9461             with a <command>recursive-only no</command> clause.
9462             This feature is useful for serving the same zone files
9463             both inside and outside an RFC 1918 cloud and using RPZ to
9464             delete answers that would otherwise contain RFC 1918 values
9465             on the externally visible name server or view.
9466           </para>
9467
9468           <para>
9469             Also by default, RPZ actions are applied only to DNS requests that
9470             either do not request DNSSEC metadata (DO=0) or when no DNSSEC
9471             records are available for request name in the original zone (not
9472             the response policy zone).
9473             This default can be changed for all RPZs in a view with a
9474             <command>break-dnssec yes</command> clause.
9475             In that case, RPZ actions are applied regardless of DNSSEC.
9476             The name of the clause option reflects the fact that results
9477             rewritten by RPZ actions cannot verify.
9478           </para>
9479
9480           <para>
9481             The TTL of a record modified by RPZ policies is set from the
9482             TTL of the relevant record in policy zone.  It is then limited
9483             to a maximum value.
9484             The <command>max-policy-ttl</command> clause changes that
9485             maximum from its default of 5.
9486           </para>
9487
9488           <para>
9489             For example, you might use this option statement
9490           </para>
9491 <programlisting>    response-policy { zone "badlist"; };</programlisting>
9492           <para>
9493             and this zone statement
9494           </para>
9495 <programlisting>    zone "badlist" {type master; file "master/badlist"; allow-query {none;}; };</programlisting>
9496           <para>
9497             with this zone file
9498           </para>
9499 <programlisting>$TTL 1H
9500 @                       SOA LOCALHOST. named-mgr.example.com (1 1h 15m 30d 2h)
9501                         NS  LOCALHOST.
9502
9503 ; QNAME policy records.  There are no periods (.) after the owner names.
9504 nxdomain.domain.com     CNAME   .               ; NXDOMAIN policy
9505 nodata.domain.com       CNAME   *.              ; NODATA policy
9506 bad.domain.com          A       10.0.0.1        ; redirect to a walled garden
9507                         AAAA    2001:2::1
9508
9509 ; do not rewrite (PASSTHRU) OK.DOMAIN.COM
9510 ok.domain.com           CNAME   rpz-passthru.
9511
9512 bzone.domain.com        CNAME   garden.example.com.
9513
9514 ; redirect x.bzone.domain.com to x.bzone.domain.com.garden.example.com
9515 *.bzone.domain.com      CNAME   *.garden.example.com.
9516
9517
9518 ; IP policy records that rewrite all answers for 127/8 except 127.0.0.1
9519 8.0.0.0.127.rpz-ip      CNAME   .
9520 32.1.0.0.127.rpz-ip     CNAME   rpz-passthru.
9521
9522 ; NSDNAME and NSIP policy records
9523 ns.domain.com.rpz-nsdname   CNAME   .
9524 48.zz.2.2001.rpz-nsip       CNAME   .
9525 </programlisting>
9526         </sect3>
9527       </sect2>
9528
9529       <sect2 id="server_statement_grammar">
9530         <title><command>server</command> Statement Grammar</title>
9531
9532 <programlisting><command>server</command> <replaceable>ip_addr[/prefixlen]</replaceable> {
9533     <optional> bogus <replaceable>yes_or_no</replaceable> ; </optional>
9534     <optional> provide-ixfr <replaceable>yes_or_no</replaceable> ; </optional>
9535     <optional> request-ixfr <replaceable>yes_or_no</replaceable> ; </optional>
9536     <optional> edns <replaceable>yes_or_no</replaceable> ; </optional>
9537     <optional> edns-udp-size <replaceable>number</replaceable> ; </optional>
9538     <optional> max-udp-size <replaceable>number</replaceable> ; </optional>
9539     <optional> transfers <replaceable>number</replaceable> ; </optional>
9540     <optional> transfer-format <replaceable>( one-answer | many-answers )</replaceable> ; ]</optional>
9541     <optional> keys <replaceable>{ string ; <optional> string ; <optional>...</optional></optional> }</replaceable> ; </optional>
9542     <optional> transfer-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
9543     <optional> transfer-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
9544     <optional> notify-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
9545     <optional> notify-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
9546     <optional> query-source <optional> address ( <replaceable>ip_addr</replaceable> | <replaceable>*</replaceable> ) </optional>
9547                   <optional> port ( <replaceable>ip_port</replaceable> | <replaceable>*</replaceable> ) </optional>; </optional>
9548     <optional> query-source-v6 <optional> address ( <replaceable>ip_addr</replaceable> | <replaceable>*</replaceable> ) </optional>
9549                      <optional> port ( <replaceable>ip_port</replaceable> | <replaceable>*</replaceable> ) </optional>; </optional>
9550     <optional> use-queryport-pool <replaceable>yes_or_no</replaceable>; </optional>
9551     <optional> queryport-pool-ports <replaceable>number</replaceable>; </optional>
9552     <optional> queryport-pool-updateinterval <replaceable>number</replaceable>; </optional>
9553 };
9554 </programlisting>
9555
9556         </sect2>
9557
9558         <sect2 id="server_statement_definition_and_usage">
9559           <title><command>server</command> Statement Definition and
9560             Usage</title>
9561
9562           <para>
9563             The <command>server</command> statement defines
9564             characteristics
9565             to be associated with a remote name server.  If a prefix length is
9566             specified, then a range of servers is covered.  Only the most
9567             specific
9568             server clause applies regardless of the order in
9569             <filename>named.conf</filename>.
9570           </para>
9571
9572           <para>
9573             The <command>server</command> statement can occur at
9574             the top level of the
9575             configuration file or inside a <command>view</command>
9576             statement.
9577             If a <command>view</command> statement contains
9578             one or more <command>server</command> statements, only
9579             those
9580             apply to the view and any top-level ones are ignored.
9581             If a view contains no <command>server</command>
9582             statements,
9583             any top-level <command>server</command> statements are
9584             used as
9585             defaults.
9586           </para>
9587
9588           <para>
9589             If you discover that a remote server is giving out bad data,
9590             marking it as bogus will prevent further queries to it. The
9591             default
9592             value of <command>bogus</command> is <command>no</command>.
9593           </para>
9594           <para>
9595             The <command>provide-ixfr</command> clause determines
9596             whether
9597             the local server, acting as master, will respond with an
9598             incremental
9599             zone transfer when the given remote server, a slave, requests it.
9600             If set to <command>yes</command>, incremental transfer
9601             will be provided
9602             whenever possible. If set to <command>no</command>,
9603             all transfers
9604             to the remote server will be non-incremental. If not set, the
9605             value
9606             of the <command>provide-ixfr</command> option in the
9607             view or
9608             global options block is used as a default.
9609           </para>
9610
9611           <para>
9612             The <command>request-ixfr</command> clause determines
9613             whether
9614             the local server, acting as a slave, will request incremental zone
9615             transfers from the given remote server, a master. If not set, the
9616             value of the <command>request-ixfr</command> option in
9617             the view or
9618             global options block is used as a default.
9619           </para>
9620
9621           <para>
9622             IXFR requests to servers that do not support IXFR will
9623             automatically
9624             fall back to AXFR.  Therefore, there is no need to manually list
9625             which servers support IXFR and which ones do not; the global
9626             default
9627             of <command>yes</command> should always work.
9628             The purpose of the <command>provide-ixfr</command> and
9629             <command>request-ixfr</command> clauses is
9630             to make it possible to disable the use of IXFR even when both
9631             master
9632             and slave claim to support it, for example if one of the servers
9633             is buggy and crashes or corrupts data when IXFR is used.
9634           </para>
9635
9636           <para>
9637             The <command>edns</command> clause determines whether
9638             the local server will attempt to use EDNS when communicating
9639             with the remote server.  The default is <command>yes</command>.
9640           </para>
9641
9642           <para>
9643             The <command>edns-udp-size</command> option sets the EDNS UDP size
9644             that is advertised by <command>named</command> when querying the remote server.
9645             Valid values are 512 to 4096 bytes (values outside this range will be
9646             silently adjusted).  This option is useful when you wish to
9647             advertises a different value to this server than the value you
9648             advertise globally, for example, when there is a firewall at the
9649             remote site that is blocking large replies.
9650           </para>
9651
9652           <para>
9653             The <command>max-udp-size</command> option sets the
9654             maximum EDNS UDP message size <command>named</command> will send.  Valid
9655             values are 512 to 4096 bytes (values outside this range will
9656             be silently adjusted).  This option is useful when you
9657             know that there is a firewall that is blocking large
9658             replies from <command>named</command>.
9659           </para>
9660
9661           <para>
9662             The server supports two zone transfer methods. The first, <command>one-answer</command>,
9663             uses one DNS message per resource record transferred. <command>many-answers</command> packs
9664             as many resource records as possible into a message. <command>many-answers</command> is
9665             more efficient, but is only known to be understood by <acronym>BIND</acronym> 9, <acronym>BIND</acronym>
9666             8.x, and patched versions of <acronym>BIND</acronym>
9667             4.9.5. You can specify which method
9668             to use for a server with the <command>transfer-format</command> option.
9669             If <command>transfer-format</command> is not
9670             specified, the <command>transfer-format</command>
9671             specified
9672             by the <command>options</command> statement will be
9673             used.
9674           </para>
9675
9676           <para><command>transfers</command>
9677             is used to limit the number of concurrent inbound zone
9678             transfers from the specified server. If no
9679             <command>transfers</command> clause is specified, the
9680             limit is set according to the
9681             <command>transfers-per-ns</command> option.
9682           </para>
9683
9684           <para>
9685             The <command>keys</command> clause identifies a
9686             <command>key_id</command> defined by the <command>key</command> statement,
9687             to be used for transaction security (TSIG, <xref linkend="tsig"/>)
9688             when talking to the remote server.
9689             When a request is sent to the remote server, a request signature
9690             will be generated using the key specified here and appended to the
9691             message. A request originating from the remote server is not
9692             required
9693             to be signed by this key.
9694           </para>
9695
9696           <para>
9697             Although the grammar of the <command>keys</command>
9698             clause
9699             allows for multiple keys, only a single key per server is
9700             currently
9701             supported.
9702           </para>
9703
9704           <para>
9705             The <command>transfer-source</command> and
9706             <command>transfer-source-v6</command> clauses specify
9707             the IPv4 and IPv6 source
9708             address to be used for zone transfer with the remote server,
9709             respectively.
9710             For an IPv4 remote server, only <command>transfer-source</command> can
9711             be specified.
9712             Similarly, for an IPv6 remote server, only
9713             <command>transfer-source-v6</command> can be
9714             specified.
9715             For more details, see the description of
9716             <command>transfer-source</command> and
9717             <command>transfer-source-v6</command> in
9718             <xref linkend="zone_transfers"/>.
9719           </para>
9720
9721           <para>
9722             The <command>notify-source</command> and
9723             <command>notify-source-v6</command> clauses specify the
9724             IPv4 and IPv6 source address to be used for notify
9725             messages sent to remote servers, respectively.  For an
9726             IPv4 remote server, only <command>notify-source</command>
9727             can be specified.  Similarly, for an IPv6 remote server,
9728             only <command>notify-source-v6</command> can be specified.
9729           </para>
9730
9731           <para>
9732             The <command>query-source</command> and
9733             <command>query-source-v6</command> clauses specify the
9734             IPv4 and IPv6 source address to be used for queries
9735             sent to remote servers, respectively.  For an IPv4
9736             remote server, only <command>query-source</command> can
9737             be specified.  Similarly, for an IPv6 remote server,
9738             only <command>query-source-v6</command> can be specified.
9739           </para>
9740
9741         </sect2>
9742
9743       <sect2 id="statschannels">
9744         <title><command>statistics-channels</command> Statement Grammar</title>
9745
9746 <programlisting><command>statistics-channels</command> {
9747    [ inet ( ip_addr | * ) [ port ip_port ]
9748    [ allow { <replaceable> address_match_list </replaceable> } ]; ]
9749    [ inet ...; ]
9750 };
9751 </programlisting>
9752       </sect2>
9753
9754       <sect2>
9755           <title><command>statistics-channels</command> Statement Definition and
9756             Usage</title>
9757
9758         <para>
9759           The <command>statistics-channels</command> statement
9760           declares communication channels to be used by system
9761           administrators to get access to statistics information of
9762           the name server.
9763         </para>
9764
9765         <para>
9766           This statement intends to be flexible to support multiple
9767           communication protocols in the future, but currently only
9768           HTTP access is supported.
9769           It requires that BIND 9 be compiled with libxml2;
9770           the <command>statistics-channels</command> statement is
9771           still accepted even if it is built without the library,
9772           but any HTTP access will fail with an error.
9773         </para>
9774
9775         <para>
9776           An <command>inet</command> control channel is a TCP socket
9777           listening at the specified <command>ip_port</command> on the
9778           specified <command>ip_addr</command>, which can be an IPv4 or IPv6
9779           address.  An <command>ip_addr</command> of <literal>*</literal> (asterisk) is
9780           interpreted as the IPv4 wildcard address; connections will be
9781           accepted on any of the system's IPv4 addresses.
9782           To listen on the IPv6 wildcard address,
9783           use an <command>ip_addr</command> of <literal>::</literal>.
9784         </para>
9785
9786         <para>
9787           If no port is specified, port 80 is used for HTTP channels.
9788           The asterisk "<literal>*</literal>" cannot be used for
9789           <command>ip_port</command>.
9790         </para>
9791
9792         <para>
9793           The attempt of opening a statistics channel is
9794           restricted by the optional <command>allow</command> clause.
9795           Connections to the statistics channel are permitted based on the
9796           <command>address_match_list</command>.
9797           If no <command>allow</command> clause is present,
9798           <command>named</command> accepts connection
9799           attempts from any address; since the statistics may
9800           contain sensitive internal information, it is highly
9801           recommended to restrict the source of connection requests
9802           appropriately.
9803         </para>
9804
9805         <para>
9806           If no <command>statistics-channels</command> statement is present,
9807           <command>named</command> will not open any communication channels.
9808         </para>
9809
9810       </sect2>
9811
9812         <sect2 id="trusted-keys">
9813           <title><command>trusted-keys</command> Statement Grammar</title>
9814
9815 <programlisting><command>trusted-keys</command> {
9816     <replaceable>string</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ;
9817     <optional> <replaceable>string</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ; <optional>...</optional></optional>
9818 };
9819 </programlisting>
9820
9821         </sect2>
9822         <sect2>
9823           <title><command>trusted-keys</command> Statement Definition
9824             and Usage</title>
9825           <para>
9826             The <command>trusted-keys</command> statement defines
9827             DNSSEC security roots. DNSSEC is described in <xref
9828             linkend="DNSSEC"/>. A security root is defined when the
9829             public key for a non-authoritative zone is known, but
9830             cannot be securely obtained through DNS, either because
9831             it is the DNS root zone or because its parent zone is
9832             unsigned.  Once a key has been configured as a trusted
9833             key, it is treated as if it had been validated and
9834             proven secure. The resolver attempts DNSSEC validation
9835             on all DNS data in subdomains of a security root.
9836           </para>
9837           <para>
9838             All keys (and corresponding zones) listed in
9839             <command>trusted-keys</command> are deemed to exist regardless
9840             of what parent zones say.  Similarly for all keys listed in
9841             <command>trusted-keys</command> only those keys are
9842             used to validate the DNSKEY RRset.  The parent's DS RRset
9843             will not be used.
9844           </para>
9845           <para>
9846             The <command>trusted-keys</command> statement can contain
9847             multiple key entries, each consisting of the key's
9848             domain name, flags, protocol, algorithm, and the Base-64
9849             representation of the key data.
9850             Spaces, tabs, newlines and carriage returns are ignored
9851             in the key data, so the configuration may be split up into
9852             multiple lines.
9853           </para>
9854           <para>
9855             <command>trusted-keys</command> may be set at the top level
9856             of <filename>named.conf</filename> or within a view.  If it is
9857             set in both places, they are additive: keys defined at the top
9858             level are inherited by all views, but keys defined in a view
9859             are only used within that view.
9860           </para>
9861         </sect2>
9862
9863         <sect2>
9864           <title><command>managed-keys</command> Statement Grammar</title>
9865
9866 <programlisting><command>managed-keys</command> {
9867     <replaceable>string</replaceable> initial-key <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ;
9868     <optional> <replaceable>string</replaceable> initial-key <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ; <optional>...</optional></optional>
9869 };
9870 </programlisting>
9871
9872         </sect2>
9873         <sect2 id="managed-keys">
9874           <title><command>managed-keys</command> Statement Definition
9875             and Usage</title>
9876           <para>
9877             The <command>managed-keys</command> statement, like 
9878             <command>trusted-keys</command>, defines DNSSEC
9879             security roots.  The difference is that
9880             <command>managed-keys</command> can be kept up to date
9881             automatically, without intervention from the resolver
9882             operator.
9883           </para>
9884           <para>
9885             Suppose, for example, that a zone's key-signing
9886             key was compromised, and the zone owner had to revoke and
9887             replace the key.  A resolver which had the old key in a
9888             <command>trusted-keys</command> statement would be
9889             unable to validate this zone any longer; it would
9890             reply with a SERVFAIL response code.  This would
9891             continue until the resolver operator had updated the
9892             <command>trusted-keys</command> statement with the new key.
9893           </para>
9894           <para>
9895             If, however, the zone were listed in a
9896             <command>managed-keys</command> statement instead, then the
9897             zone owner could add a "stand-by" key to the zone in advance.
9898             <command>named</command> would store the stand-by key, and
9899             when the original key was revoked, <command>named</command>
9900             would be able to transition smoothly to the new key.  It would
9901             also recognize that the old key had been revoked, and cease
9902             using that key to validate answers, minimizing the damage that
9903             the compromised key could do.
9904           </para>
9905           <para>
9906             A <command>managed-keys</command> statement contains a list of
9907             the keys to be managed, along with information about how the
9908             keys are to be initialized for the first time.  The only
9909             initialization method currently supported (as of
9910             <acronym>BIND</acronym> 9.7.0) is <literal>initial-key</literal>.
9911             This means the <command>managed-keys</command> statement must
9912             contain a copy of the initializing key.  (Future releases may
9913             allow keys to be initialized by other methods, eliminating this
9914             requirement.)
9915           </para>
9916           <para>
9917             Consequently, a <command>managed-keys</command> statement
9918             appears similar to a <command>trusted-keys</command>, differing
9919             in the presence of the second field, containing the keyword
9920             <literal>initial-key</literal>.  The difference is, whereas the
9921             keys listed in a <command>trusted-keys</command> continue to be
9922             trusted until they are removed from
9923             <filename>named.conf</filename>, an initializing key listed 
9924             in a <command>managed-keys</command> statement is only trusted
9925             <emphasis>once</emphasis>: for as long as it takes to load the
9926             managed key database and start the RFC 5011 key maintenance
9927             process.
9928           </para>
9929           <para>
9930             The first time <command>named</command> runs with a managed key
9931             configured in <filename>named.conf</filename>, it fetches the
9932             DNSKEY RRset directly from the zone apex, and validates it
9933             using the key specified in the <command>managed-keys</command>
9934             statement.  If the DNSKEY RRset is validly signed, then it is
9935             used as the basis for a new managed keys database.
9936           </para>
9937           <para>
9938             From that point on, whenever <command>named</command> runs, it
9939             sees the <command>managed-keys</command> statement, checks to
9940             make sure RFC 5011 key maintenance has already been initialized
9941             for the specified domain, and if so, it simply moves on.  The
9942             key specified in the <command>managed-keys</command> is not
9943             used to validate answers; it has been superseded by the key or
9944             keys stored in the managed keys database.
9945           </para>
9946           <para>
9947             The next time <command>named</command> runs after a name
9948             has been <emphasis>removed</emphasis> from the
9949             <command>managed-keys</command> statement, the corresponding
9950             zone will be removed from the managed keys database,
9951             and RFC 5011 key maintenance will no longer be used for that
9952             domain.
9953           </para>
9954           <para>
9955             <command>named</command> only maintains a single managed keys
9956             database; consequently, unlike <command>trusted-keys</command>,
9957             <command>managed-keys</command> may only be set at the top
9958             level of <filename>named.conf</filename>, not within a view.
9959           </para>
9960           <para>
9961             In the current implementation, the managed keys database is
9962             stored as a master-format zone file called
9963             <filename>managed-keys.bind</filename>.  When the key database
9964             is changed, the zone is updated.  As with any other dynamic
9965             zone, changes will be written into a journal file,
9966             <filename>managed-keys.bind.jnl</filename>.  They are committed
9967             to the master file as soon as possible afterward; in the case
9968             of the managed key database, this will usually occur within 30
9969             seconds.  So, whenever <command>named</command> is using
9970             automatic key maintenance, those two files can be expected to
9971             exist in the working directory.  (For this reason among others,
9972             the working directory should be always be writable by
9973             <command>named</command>.)
9974           </para>
9975           <para>
9976             If the <command>dnssec-lookaside</command> option is
9977             set to <userinput>auto</userinput>, <command>named</command>
9978             will automatically initialize a managed key for the
9979             zone <literal>dlv.isc.org</literal>.  The key that is
9980             used to initialize the key maintenance process is built
9981             into <command>named</command>, and can be overridden
9982             from <command>bindkeys-file</command>.
9983           </para>
9984         </sect2>
9985
9986         <sect2 id="view_statement_grammar">
9987           <title><command>view</command> Statement Grammar</title>
9988
9989 <programlisting><command>view</command> <replaceable>view_name</replaceable>
9990       <optional><replaceable>class</replaceable></optional> {
9991       match-clients { <replaceable>address_match_list</replaceable> };
9992       match-destinations { <replaceable>address_match_list</replaceable> };
9993       match-recursive-only <replaceable>yes_or_no</replaceable> ;
9994       <optional> <replaceable>view_option</replaceable>; ...</optional>
9995       <optional> <replaceable>zone_statement</replaceable>; ...</optional>
9996 };
9997 </programlisting>
9998
9999         </sect2>
10000         <sect2>
10001           <title><command>view</command> Statement Definition and Usage</title>
10002
10003           <para>
10004             The <command>view</command> statement is a powerful
10005             feature
10006             of <acronym>BIND</acronym> 9 that lets a name server
10007             answer a DNS query differently
10008             depending on who is asking. It is particularly useful for
10009             implementing
10010             split DNS setups without having to run multiple servers.
10011           </para>
10012
10013           <para>
10014             Each <command>view</command> statement defines a view
10015             of the
10016             DNS namespace that will be seen by a subset of clients.  A client
10017             matches
10018             a view if its source IP address matches the
10019             <varname>address_match_list</varname> of the view's
10020             <command>match-clients</command> clause and its
10021             destination IP address matches
10022             the <varname>address_match_list</varname> of the
10023             view's
10024             <command>match-destinations</command> clause.  If not
10025             specified, both
10026             <command>match-clients</command> and <command>match-destinations</command>
10027             default to matching all addresses.  In addition to checking IP
10028             addresses
10029             <command>match-clients</command> and <command>match-destinations</command>
10030             can also take <command>keys</command> which provide an
10031             mechanism for the
10032             client to select the view.  A view can also be specified
10033             as <command>match-recursive-only</command>, which
10034             means that only recursive
10035             requests from matching clients will match that view.
10036             The order of the <command>view</command> statements is
10037             significant &mdash;
10038             a client request will be resolved in the context of the first
10039             <command>view</command> that it matches.
10040           </para>
10041
10042           <para>
10043             Zones defined within a <command>view</command>
10044             statement will
10045             only be accessible to clients that match the <command>view</command>.
10046             By defining a zone of the same name in multiple views, different
10047             zone data can be given to different clients, for example,
10048             "internal"
10049             and "external" clients in a split DNS setup.
10050           </para>
10051
10052           <para>
10053             Many of the options given in the <command>options</command> statement
10054             can also be used within a <command>view</command>
10055             statement, and then
10056             apply only when resolving queries with that view.  When no
10057             view-specific
10058             value is given, the value in the <command>options</command> statement
10059             is used as a default.  Also, zone options can have default values
10060             specified
10061             in the <command>view</command> statement; these
10062             view-specific defaults
10063             take precedence over those in the <command>options</command> statement.
10064           </para>
10065
10066           <para>
10067             Views are class specific.  If no class is given, class IN
10068             is assumed.  Note that all non-IN views must contain a hint zone,
10069             since only the IN class has compiled-in default hints.
10070           </para>
10071
10072           <para>
10073             If there are no <command>view</command> statements in
10074             the config
10075             file, a default view that matches any client is automatically
10076             created
10077             in class IN. Any <command>zone</command> statements
10078             specified on
10079             the top level of the configuration file are considered to be part
10080             of
10081             this default view, and the <command>options</command>
10082             statement will
10083             apply to the default view. If any explicit <command>view</command>
10084             statements are present, all <command>zone</command>
10085             statements must
10086             occur inside <command>view</command> statements.
10087           </para>
10088
10089           <para>
10090             Here is an example of a typical split DNS setup implemented
10091             using <command>view</command> statements:
10092           </para>
10093
10094 <programlisting>view "internal" {
10095       // This should match our internal networks.
10096       match-clients { 10.0.0.0/8; };
10097
10098       // Provide recursive service to internal
10099       // clients only.
10100       recursion yes;
10101
10102       // Provide a complete view of the example.com
10103       // zone including addresses of internal hosts.
10104       zone "example.com" {
10105             type master;
10106             file "example-internal.db";
10107       };
10108 };
10109
10110 view "external" {
10111       // Match all clients not matched by the
10112       // previous view.
10113       match-clients { any; };
10114
10115       // Refuse recursive service to external clients.
10116       recursion no;
10117
10118       // Provide a restricted view of the example.com
10119       // zone containing only publicly accessible hosts.
10120       zone "example.com" {
10121            type master;
10122            file "example-external.db";
10123       };
10124 };
10125 </programlisting>
10126
10127         </sect2>
10128         <sect2 id="zone_statement_grammar">
10129           <title><command>zone</command>
10130             Statement Grammar</title>
10131
10132 <programlisting><command>zone</command> <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> {
10133     type master;
10134     <optional> allow-query { <replaceable>address_match_list</replaceable> }; </optional>
10135     <optional> allow-query-on { <replaceable>address_match_list</replaceable> }; </optional>
10136     <optional> allow-transfer { <replaceable>address_match_list</replaceable> }; </optional>
10137     <optional> allow-update { <replaceable>address_match_list</replaceable> }; </optional>
10138     <optional> update-policy <replaceable>local</replaceable> | { <replaceable>update_policy_rule</replaceable> <optional>...</optional> }; </optional>
10139     <optional> also-notify { <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ;
10140                   <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
10141     <optional> check-names (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional>
10142     <optional> check-mx (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional>
10143     <optional> check-wildcard <replaceable>yes_or_no</replaceable>; </optional>
10144     <optional> check-integrity <replaceable>yes_or_no</replaceable> ; </optional>
10145     <optional> dialup <replaceable>dialup_option</replaceable> ; </optional>
10146     <optional> file <replaceable>string</replaceable> ; </optional>
10147     <optional> masterfile-format (<constant>text</constant>|<constant>raw</constant>) ; </optional>
10148     <optional> journal <replaceable>string</replaceable> ; </optional>
10149     <optional> max-journal-size <replaceable>size_spec</replaceable>; </optional>
10150     <optional> forward (<constant>only</constant>|<constant>first</constant>) ; </optional>
10151     <optional> forwarders { <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
10152     <optional> ixfr-base <replaceable>string</replaceable> ; </optional>
10153     <optional> ixfr-from-differences <replaceable>yes_or_no</replaceable>; </optional>
10154     <optional> ixfr-tmp-file <replaceable>string</replaceable> ; </optional>
10155     <optional> maintain-ixfr-base <replaceable>yes_or_no</replaceable> ; </optional>
10156     <optional> max-ixfr-log-size <replaceable>number</replaceable> ; </optional>
10157     <optional> max-transfer-idle-out <replaceable>number</replaceable> ; </optional>
10158     <optional> max-transfer-time-out <replaceable>number</replaceable> ; </optional>
10159     <optional> notify <replaceable>yes_or_no</replaceable> | <replaceable>explicit</replaceable> | <replaceable>master-only</replaceable> ; </optional>
10160     <optional> notify-delay <replaceable>seconds</replaceable> ; </optional>
10161     <optional> notify-to-soa <replaceable>yes_or_no</replaceable>; </optional>
10162     <optional> pubkey <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ; </optional>
10163     <optional> notify-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10164     <optional> notify-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10165     <optional> zone-statistics <replaceable>yes_or_no</replaceable> ; </optional>
10166     <optional> sig-validity-interval <replaceable>number</replaceable> <optional><replaceable>number</replaceable></optional> ; </optional>
10167     <optional> sig-signing-nodes <replaceable>number</replaceable> ; </optional>
10168     <optional> sig-signing-signatures <replaceable>number</replaceable> ; </optional>
10169     <optional> sig-signing-type <replaceable>number</replaceable> ; </optional>
10170     <optional> database <replaceable>string</replaceable> ; </optional>
10171     <optional> min-refresh-time <replaceable>number</replaceable> ; </optional>
10172     <optional> max-refresh-time <replaceable>number</replaceable> ; </optional>
10173     <optional> min-retry-time <replaceable>number</replaceable> ; </optional>
10174     <optional> max-retry-time <replaceable>number</replaceable> ; </optional>
10175     <optional> key-directory <replaceable>path_name</replaceable>; </optional>
10176     <optional> auto-dnssec <constant>allow</constant>|<constant>maintain</constant>|<constant>off</constant>; </optional>
10177     <optional> zero-no-soa-ttl <replaceable>yes_or_no</replaceable> ; </optional>
10178 };
10179
10180 zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> {
10181     type slave;
10182     <optional> allow-notify { <replaceable>address_match_list</replaceable> }; </optional>
10183     <optional> allow-query { <replaceable>address_match_list</replaceable> }; </optional>
10184     <optional> allow-query-on { <replaceable>address_match_list</replaceable> }; </optional>
10185     <optional> allow-transfer { <replaceable>address_match_list</replaceable> }; </optional>
10186     <optional> allow-update-forwarding { <replaceable>address_match_list</replaceable> }; </optional>
10187     <optional> update-check-ksk <replaceable>yes_or_no</replaceable>; </optional>
10188     <optional> dnssec-update-mode ( <replaceable>maintain</replaceable> | <replaceable>no-resign</replaceable> ); </optional>
10189     <optional> dnssec-dnskey-kskonly <replaceable>yes_or_no</replaceable>; </optional>
10190     <optional> dnssec-secure-to-insecure <replaceable>yes_or_no</replaceable> ; </optional>
10191     <optional> try-tcp-refresh <replaceable>yes_or_no</replaceable>; </optional>
10192     <optional> also-notify { <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ;
10193                   <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
10194     <optional> check-names (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional>
10195     <optional> dialup <replaceable>dialup_option</replaceable> ; </optional>
10196     <optional> file <replaceable>string</replaceable> ; </optional>
10197     <optional> masterfile-format (<constant>text</constant>|<constant>raw</constant>) ; </optional>
10198     <optional> journal <replaceable>string</replaceable> ; </optional>
10199     <optional> max-journal-size <replaceable>size_spec</replaceable>; </optional>
10200     <optional> forward (<constant>only</constant>|<constant>first</constant>) ; </optional>
10201     <optional> forwarders { <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
10202     <optional> ixfr-base <replaceable>string</replaceable> ; </optional>
10203     <optional> ixfr-from-differences <replaceable>yes_or_no</replaceable>; </optional>
10204     <optional> ixfr-tmp-file <replaceable>string</replaceable> ; </optional>
10205     <optional> maintain-ixfr-base <replaceable>yes_or_no</replaceable> ; </optional>
10206     <optional> masters <optional>port <replaceable>ip_port</replaceable></optional> { ( <replaceable>masters_list</replaceable> | <replaceable>ip_addr</replaceable>
10207                               <optional>port <replaceable>ip_port</replaceable></optional>
10208                               <optional>key <replaceable>key</replaceable></optional> ) ; <optional>...</optional> }; </optional>
10209     <optional> max-ixfr-log-size <replaceable>number</replaceable> ; </optional>
10210     <optional> max-transfer-idle-in <replaceable>number</replaceable> ; </optional>
10211     <optional> max-transfer-idle-out <replaceable>number</replaceable> ; </optional>
10212     <optional> max-transfer-time-in <replaceable>number</replaceable> ; </optional>
10213     <optional> max-transfer-time-out <replaceable>number</replaceable> ; </optional>
10214     <optional> notify <replaceable>yes_or_no</replaceable> | <replaceable>explicit</replaceable> | <replaceable>master-only</replaceable> ; </optional>
10215     <optional> notify-delay <replaceable>seconds</replaceable> ; </optional>
10216     <optional> notify-to-soa <replaceable>yes_or_no</replaceable>; </optional>
10217     <optional> pubkey <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ; </optional>
10218     <optional> transfer-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10219     <optional> transfer-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10220     <optional> alt-transfer-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10221     <optional> alt-transfer-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>)
10222                              <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10223     <optional> use-alt-transfer-source <replaceable>yes_or_no</replaceable>; </optional>
10224     <optional> notify-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10225     <optional> notify-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10226     <optional> zone-statistics <replaceable>yes_or_no</replaceable> ; </optional>
10227     <optional> database <replaceable>string</replaceable> ; </optional>
10228     <optional> min-refresh-time <replaceable>number</replaceable> ; </optional>
10229     <optional> max-refresh-time <replaceable>number</replaceable> ; </optional>
10230     <optional> min-retry-time <replaceable>number</replaceable> ; </optional>
10231     <optional> max-retry-time <replaceable>number</replaceable> ; </optional>
10232     <optional> multi-master <replaceable>yes_or_no</replaceable> ; </optional>
10233     <optional> zero-no-soa-ttl <replaceable>yes_or_no</replaceable> ; </optional>
10234 };
10235
10236 zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> {
10237     type hint;
10238     file <replaceable>string</replaceable> ;
10239     <optional> delegation-only <replaceable>yes_or_no</replaceable> ; </optional>
10240     <optional> check-names (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional> // Not Implemented.
10241 };
10242
10243 zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> {
10244     type stub;
10245     <optional> allow-query { <replaceable>address_match_list</replaceable> }; </optional>
10246     <optional> allow-query-on { <replaceable>address_match_list</replaceable> }; </optional>
10247     <optional> check-names (<constant>warn</constant>|<constant>fail</constant>|<constant>ignore</constant>) ; </optional>
10248     <optional> dialup <replaceable>dialup_option</replaceable> ; </optional>
10249     <optional> delegation-only <replaceable>yes_or_no</replaceable> ; </optional>
10250     <optional> file <replaceable>string</replaceable> ; </optional>
10251     <optional> masterfile-format (<constant>text</constant>|<constant>raw</constant>) ; </optional>
10252     <optional> forward (<constant>only</constant>|<constant>first</constant>) ; </optional>
10253     <optional> forwarders { <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
10254     <optional> masters <optional>port <replaceable>ip_port</replaceable></optional> { ( <replaceable>masters_list</replaceable> | <replaceable>ip_addr</replaceable>
10255                               <optional>port <replaceable>ip_port</replaceable></optional>
10256                               <optional>key <replaceable>key</replaceable></optional> ) ; <optional>...</optional> }; </optional>
10257     <optional> max-transfer-idle-in <replaceable>number</replaceable> ; </optional>
10258     <optional> max-transfer-time-in <replaceable>number</replaceable> ; </optional>
10259     <optional> pubkey <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>number</replaceable> <replaceable>string</replaceable> ; </optional>
10260     <optional> transfer-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10261     <optional> transfer-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>)
10262                          <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10263     <optional> alt-transfer-source (<replaceable>ip4_addr</replaceable> | <constant>*</constant>) <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10264     <optional> alt-transfer-source-v6 (<replaceable>ip6_addr</replaceable> | <constant>*</constant>)
10265                             <optional>port <replaceable>ip_port</replaceable></optional> ; </optional>
10266     <optional> use-alt-transfer-source <replaceable>yes_or_no</replaceable>; </optional>
10267     <optional> zone-statistics <replaceable>yes_or_no</replaceable> ; </optional>
10268     <optional> database <replaceable>string</replaceable> ; </optional>
10269     <optional> min-refresh-time <replaceable>number</replaceable> ; </optional>
10270     <optional> max-refresh-time <replaceable>number</replaceable> ; </optional>
10271     <optional> min-retry-time <replaceable>number</replaceable> ; </optional>
10272     <optional> max-retry-time <replaceable>number</replaceable> ; </optional>
10273     <optional> multi-master <replaceable>yes_or_no</replaceable> ; </optional>
10274 };
10275
10276 zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> {
10277     type static-stub;
10278     <optional> allow-query { <replaceable>address_match_list</replaceable> }; </optional>
10279     <optional> server-addresses { <optional> <replaceable>ip_addr</replaceable> ; ... </optional> }; </optional>
10280     <optional> server-names { <optional> <replaceable>namelist</replaceable> </optional> }; </optional>  
10281     <optional> zone-statistics <replaceable>yes_or_no</replaceable> ; </optional>
10282 };
10283
10284 zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> {
10285     type forward;
10286     <optional> forward (<constant>only</constant>|<constant>first</constant>) ; </optional>
10287     <optional> forwarders { <optional> <replaceable>ip_addr</replaceable> <optional>port <replaceable>ip_port</replaceable></optional> ; ... </optional> }; </optional>
10288     <optional> delegation-only <replaceable>yes_or_no</replaceable> ; </optional>
10289 };
10290
10291 zone <replaceable>zone_name</replaceable> <optional><replaceable>class</replaceable></optional> {
10292     type delegation-only;
10293 };
10294
10295 </programlisting>
10296
10297         </sect2>
10298         <sect2>
10299           <title><command>zone</command> Statement Definition and Usage</title>
10300           <sect3>
10301             <title>Zone Types</title>
10302             <informaltable colsep="0" rowsep="0">
10303               <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="3Level-table">
10304                 <!--colspec colname="1" colnum="1" colsep="0" colwidth="1.108in"/-->
10305                 <!--colspec colname="2" colnum="2" colsep="0" colwidth="4.017in"/-->
10306                 <colspec colname="1" colnum="1" colsep="0"/>
10307                 <colspec colname="2" colnum="2" colsep="0" colwidth="4.017in"/>
10308                 <tbody>
10309                   <row rowsep="0">
10310                     <entry colname="1">
10311                       <para>
10312                         <varname>master</varname>
10313                       </para>
10314                     </entry>
10315                     <entry colname="2">
10316                       <para>
10317                         The server has a master copy of the data
10318                         for the zone and will be able to provide authoritative
10319                         answers for
10320                         it.
10321                       </para>
10322                     </entry>
10323                   </row>
10324                   <row rowsep="0">
10325                     <entry colname="1">
10326                       <para>
10327                         <varname>slave</varname>
10328                       </para>
10329                     </entry>
10330                     <entry colname="2">
10331                       <para>
10332                         A slave zone is a replica of a master
10333                         zone. The <command>masters</command> list
10334                         specifies one or more IP addresses
10335                         of master servers that the slave contacts to update
10336                         its copy of the zone.
10337                         Masters list elements can also be names of other
10338                         masters lists.
10339                         By default, transfers are made from port 53 on the
10340                         servers; this can
10341                         be changed for all servers by specifying a port number
10342                         before the
10343                         list of IP addresses, or on a per-server basis after
10344                         the IP address.
10345                         Authentication to the master can also be done with
10346                         per-server TSIG keys.
10347                         If a file is specified, then the
10348                         replica will be written to this file whenever the zone
10349                         is changed,
10350                         and reloaded from this file on a server restart. Use
10351                         of a file is
10352                         recommended, since it often speeds server startup and
10353                         eliminates
10354                         a needless waste of bandwidth. Note that for large
10355                         numbers (in the
10356                         tens or hundreds of thousands) of zones per server, it
10357                         is best to
10358                         use a two-level naming scheme for zone filenames. For
10359                         example,
10360                         a slave server for the zone <literal>example.com</literal> might place
10361                         the zone contents into a file called
10362                         <filename>ex/example.com</filename> where <filename>ex/</filename> is
10363                         just the first two letters of the zone name. (Most
10364                         operating systems
10365                         behave very slowly if you put 100000 files into
10366                         a single directory.)
10367                       </para>
10368                     </entry>
10369                   </row>
10370                   <row rowsep="0">
10371                     <entry colname="1">
10372                       <para>
10373                         <varname>stub</varname>
10374                       </para>
10375                     </entry>
10376                     <entry colname="2">
10377                       <para>
10378                         A stub zone is similar to a slave zone,
10379                         except that it replicates only the NS records of a
10380                         master zone instead
10381                         of the entire zone. Stub zones are not a standard part
10382                         of the DNS;
10383                         they are a feature specific to the <acronym>BIND</acronym> implementation.
10384                       </para>
10385
10386                       <para>
10387                         Stub zones can be used to eliminate the need for glue
10388                         NS record
10389                         in a parent zone at the expense of maintaining a stub
10390                         zone entry and
10391                         a set of name server addresses in <filename>named.conf</filename>.
10392                         This usage is not recommended for new configurations,
10393                         and BIND 9
10394                         supports it only in a limited way.
10395                         In <acronym>BIND</acronym> 4/8, zone
10396                         transfers of a parent zone
10397                         included the NS records from stub children of that
10398                         zone. This meant
10399                         that, in some cases, users could get away with
10400                         configuring child stubs
10401                         only in the master server for the parent zone. <acronym>BIND</acronym>
10402                         9 never mixes together zone data from different zones
10403                         in this
10404                         way. Therefore, if a <acronym>BIND</acronym> 9 master serving a parent
10405                         zone has child stub zones configured, all the slave
10406                         servers for the
10407                         parent zone also need to have the same child stub
10408                         zones
10409                         configured.
10410                       </para>
10411
10412                       <para>
10413                         Stub zones can also be used as a way of forcing the
10414                         resolution
10415                         of a given domain to use a particular set of
10416                         authoritative servers.
10417                         For example, the caching name servers on a private
10418                         network using
10419                         RFC1918 addressing may be configured with stub zones
10420                         for
10421                         <literal>10.in-addr.arpa</literal>
10422                         to use a set of internal name servers as the
10423                         authoritative
10424                         servers for that domain.
10425                       </para>
10426                     </entry>
10427                   </row>
10428                   <row rowsep="0">
10429                     <entry colname="1">
10430                       <para>
10431                         <varname>static-stub</varname>
10432                       </para>
10433                     </entry>
10434                     <entry colname="2">
10435                       <para>
10436                         A static-stub zone is similar to a stub zone
10437                         with the following exceptions:
10438                         the zone data is statically configured, rather
10439                         than transferred from a master server;
10440                         when recursion is necessary for a query that
10441                         matches a static-stub zone, the locally
10442                         configured data (nameserver names and glue addresses)
10443                         is always used even if different authoritative
10444                         information is cached.
10445                       </para>
10446                       <para>
10447                         Zone data is configured via the
10448                         <command>server-addresses</command> and
10449                         <command>server-names</command> zone options.
10450                       </para>
10451                       <para>
10452                         The zone data is maintained in the form of NS
10453                         and (if necessary) glue A or AAAA RRs
10454                         internally, which can be seen by dumping zone
10455                         databases by <command>rndc dumpdb -all</command>.
10456                         The configured RRs are considered local configuration
10457                         parameters rather than public data.
10458                         Non recursive queries (i.e., those with the RD
10459                         bit off) to a static-stub zone are therefore
10460                         prohibited and will be responded with REFUSED.
10461                       </para>
10462                       <para>
10463                         Since the data is statically configured, no
10464                         zone maintenance action takes place for a static-stub
10465                         zone.
10466                         For example, there is no periodic refresh
10467                         attempt, and an incoming notify message
10468                         will be rejected with an rcode of NOTAUTH.
10469                       </para>
10470                       <para>
10471                         Each static-stub zone is configured with
10472                         internally generated NS and (if necessary)
10473                         glue A or AAAA RRs 
10474                       </para>
10475                     </entry>
10476                   </row>
10477                   <row rowsep="0">
10478                     <entry colname="1">
10479                       <para>
10480                         <varname>forward</varname>
10481                       </para>
10482                     </entry>
10483                     <entry colname="2">
10484                       <para>
10485                         A "forward zone" is a way to configure
10486                         forwarding on a per-domain basis.  A <command>zone</command> statement
10487                         of type <command>forward</command> can
10488                         contain a <command>forward</command>
10489                         and/or <command>forwarders</command>
10490                         statement,
10491                         which will apply to queries within the domain given by
10492                         the zone
10493                         name. If no <command>forwarders</command>
10494                         statement is present or
10495                         an empty list for <command>forwarders</command> is given, then no
10496                         forwarding will be done for the domain, canceling the
10497                         effects of
10498                         any forwarders in the <command>options</command> statement. Thus
10499                         if you want to use this type of zone to change the
10500                         behavior of the
10501                         global <command>forward</command> option
10502                         (that is, "forward first"
10503                         to, then "forward only", or vice versa, but want to
10504                         use the same
10505                         servers as set globally) you need to re-specify the
10506                         global forwarders.
10507                       </para>
10508                     </entry>
10509                   </row>
10510                   <row rowsep="0">
10511                     <entry colname="1">
10512                       <para>
10513                         <varname>hint</varname>
10514                       </para>
10515                     </entry>
10516                     <entry colname="2">
10517                       <para>
10518                         The initial set of root name servers is
10519                         specified using a "hint zone". When the server starts
10520                         up, it uses
10521                         the root hints to find a root name server and get the
10522                         most recent
10523                         list of root name servers. If no hint zone is
10524                         specified for class
10525                         IN, the server uses a compiled-in default set of root
10526                         servers hints.
10527                         Classes other than IN have no built-in defaults hints.
10528                       </para>
10529                     </entry>
10530                   </row>
10531                   <row rowsep="0">
10532                     <entry colname="1">
10533                       <para>
10534                         <varname>delegation-only</varname>
10535                       </para>
10536                     </entry>
10537                     <entry colname="2">
10538                       <para>
10539                         This is used to enforce the delegation-only
10540                         status of infrastructure zones (e.g. COM,
10541                         NET, ORG).  Any answer that is received
10542                         without an explicit or implicit delegation
10543                         in the authority section will be treated
10544                         as NXDOMAIN.  This does not apply to the
10545                         zone apex.  This should not be applied to
10546                         leaf zones.
10547                       </para>
10548                       <para>
10549                         <varname>delegation-only</varname> has no
10550                         effect on answers received from forwarders.
10551                       </para>
10552                       <para>
10553                         See caveats in <xref linkend="root_delegation_only"/>.
10554                       </para>
10555                     </entry>
10556                   </row>
10557                 </tbody>
10558               </tgroup>
10559             </informaltable>
10560           </sect3>
10561
10562           <sect3>
10563             <title>Class</title>
10564             <para>
10565               The zone's name may optionally be followed by a class. If
10566               a class is not specified, class <literal>IN</literal> (for <varname>Internet</varname>),
10567               is assumed. This is correct for the vast majority of cases.
10568             </para>
10569             <para>
10570               The <literal>hesiod</literal> class is
10571               named for an information service from MIT's Project Athena. It
10572               is
10573               used to share information about various systems databases, such
10574               as users, groups, printers and so on. The keyword
10575               <literal>HS</literal> is
10576               a synonym for hesiod.
10577             </para>
10578             <para>
10579               Another MIT development is Chaosnet, a LAN protocol created
10580               in the mid-1970s. Zone data for it can be specified with the <literal>CHAOS</literal> class.
10581             </para>
10582           </sect3>
10583           <sect3>
10584
10585             <title>Zone Options</title>
10586
10587             <variablelist>
10588
10589               <varlistentry>
10590                 <term><command>allow-notify</command></term>
10591                 <listitem>
10592                   <para>
10593                     See the description of
10594                     <command>allow-notify</command> in <xref linkend="access_control"/>.
10595                   </para>
10596                 </listitem>
10597               </varlistentry>
10598
10599               <varlistentry>
10600                 <term><command>allow-query</command></term>
10601                 <listitem>
10602                   <para>
10603                     See the description of
10604                     <command>allow-query</command> in <xref linkend="access_control"/>.
10605                   </para>
10606                 </listitem>
10607               </varlistentry>
10608
10609               <varlistentry>
10610                 <term><command>allow-query-on</command></term>
10611                 <listitem>
10612                   <para>
10613                     See the description of
10614                     <command>allow-query-on</command> in <xref linkend="access_control"/>.
10615                   </para>
10616                 </listitem>
10617               </varlistentry>
10618
10619               <varlistentry>
10620                 <term><command>allow-transfer</command></term>
10621                 <listitem>
10622                   <para>
10623                     See the description of <command>allow-transfer</command>
10624                     in <xref linkend="access_control"/>.
10625                   </para>
10626                 </listitem>
10627               </varlistentry>
10628
10629               <varlistentry>
10630                 <term><command>allow-update</command></term>
10631                 <listitem>
10632                   <para>
10633                     See the description of <command>allow-update</command>
10634                     in <xref linkend="access_control"/>.
10635                   </para>
10636                 </listitem>
10637               </varlistentry>
10638
10639               <varlistentry>
10640                 <term><command>update-policy</command></term>
10641                 <listitem>
10642                   <para>
10643                     Specifies a "Simple Secure Update" policy. See
10644                     <xref linkend="dynamic_update_policies"/>.
10645                   </para>
10646                 </listitem>
10647               </varlistentry>
10648
10649               <varlistentry>
10650                 <term><command>allow-update-forwarding</command></term>
10651                 <listitem>
10652                   <para>
10653                     See the description of <command>allow-update-forwarding</command>
10654                     in <xref linkend="access_control"/>.
10655                   </para>
10656                 </listitem>
10657               </varlistentry>
10658
10659               <varlistentry>
10660                 <term><command>also-notify</command></term>
10661                 <listitem>
10662                   <para>
10663                     Only meaningful if <command>notify</command>
10664                     is
10665                     active for this zone. The set of machines that will
10666                     receive a
10667                     <literal>DNS NOTIFY</literal> message
10668                     for this zone is made up of all the listed name servers
10669                     (other than
10670                     the primary master) for the zone plus any IP addresses
10671                     specified
10672                     with <command>also-notify</command>. A port
10673                     may be specified
10674                     with each <command>also-notify</command>
10675                     address to send the notify
10676                     messages to a port other than the default of 53.
10677                     <command>also-notify</command> is not
10678                     meaningful for stub zones.
10679                     The default is the empty list.
10680                   </para>
10681                 </listitem>
10682               </varlistentry>
10683
10684               <varlistentry>
10685                 <term><command>check-names</command></term>
10686                 <listitem>
10687                   <para>
10688                     This option is used to restrict the character set and
10689                     syntax of
10690                     certain domain names in master files and/or DNS responses
10691                     received from the
10692                     network.  The default varies according to zone type.  For <command>master</command> zones the default is <command>fail</command>.  For <command>slave</command>
10693                     zones the default is <command>warn</command>.
10694                     It is not implemented for <command>hint</command> zones.
10695                   </para>
10696                 </listitem>
10697               </varlistentry>
10698
10699               <varlistentry>
10700                 <term><command>check-mx</command></term>
10701                 <listitem>
10702                   <para>
10703                     See the description of
10704                     <command>check-mx</command> in <xref linkend="boolean_options"/>.
10705                   </para>
10706                 </listitem>
10707               </varlistentry>
10708
10709               <varlistentry>
10710                 <term><command>check-wildcard</command></term>
10711                 <listitem>
10712                   <para>
10713                     See the description of
10714                     <command>check-wildcard</command> in <xref linkend="boolean_options"/>.
10715                   </para>
10716                 </listitem>
10717               </varlistentry>
10718
10719               <varlistentry>
10720                 <term><command>check-integrity</command></term>
10721                 <listitem>
10722                   <para>
10723                     See the description of
10724                     <command>check-integrity</command> in <xref linkend="boolean_options"/>.
10725                   </para>
10726                 </listitem>
10727               </varlistentry>
10728
10729               <varlistentry>
10730                 <term><command>check-sibling</command></term>
10731                 <listitem>
10732                   <para>
10733                     See the description of
10734                     <command>check-sibling</command> in <xref linkend="boolean_options"/>.
10735                   </para>
10736                 </listitem>
10737               </varlistentry>
10738
10739               <varlistentry>
10740                 <term><command>zero-no-soa-ttl</command></term>
10741                 <listitem>
10742                   <para>
10743                     See the description of
10744                     <command>zero-no-soa-ttl</command> in <xref linkend="boolean_options"/>.
10745                   </para>
10746                 </listitem>
10747               </varlistentry>
10748
10749               <varlistentry>
10750                 <term><command>update-check-ksk</command></term>
10751                 <listitem>
10752                   <para>
10753                     See the description of
10754                     <command>update-check-ksk</command> in <xref linkend="boolean_options"/>.
10755                   </para>
10756                 </listitem>
10757               </varlistentry>
10758
10759               <varlistentry>
10760                 <term><command>dnssec-dnskey-kskonly</command></term>
10761                 <listitem>
10762                   <para>
10763                     See the description of
10764                     <command>dnssec-dnskey-kskonly</command> in <xref linkend="boolean_options"/>.
10765                   </para>
10766                 </listitem>
10767               </varlistentry>
10768
10769               <varlistentry>
10770                 <term><command>try-tcp-refresh</command></term>
10771                 <listitem>
10772                   <para>
10773                     See the description of
10774                     <command>try-tcp-refresh</command> in <xref linkend="boolean_options"/>.
10775                   </para>
10776                 </listitem>
10777               </varlistentry>
10778
10779               <varlistentry>
10780                 <term><command>database</command></term>
10781                 <listitem>
10782                   <para>
10783                     Specify the type of database to be used for storing the
10784                     zone data.  The string following the <command>database</command> keyword
10785                     is interpreted as a list of whitespace-delimited words.
10786                     The first word
10787                     identifies the database type, and any subsequent words are
10788                     passed
10789                     as arguments to the database to be interpreted in a way
10790                     specific
10791                     to the database type.
10792                   </para>
10793                   <para>
10794                     The default is <userinput>"rbt"</userinput>, BIND 9's
10795                     native in-memory
10796                     red-black-tree database.  This database does not take
10797                     arguments.
10798                   </para>
10799                   <para>
10800                     Other values are possible if additional database drivers
10801                     have been linked into the server.  Some sample drivers are
10802                     included
10803                     with the distribution but none are linked in by default.
10804                   </para>
10805                 </listitem>
10806               </varlistentry>
10807
10808               <varlistentry>
10809                 <term><command>dialup</command></term>
10810                 <listitem>
10811                   <para>
10812                     See the description of
10813                     <command>dialup</command> in <xref linkend="boolean_options"/>.
10814                   </para>
10815                 </listitem>
10816               </varlistentry>
10817
10818               <varlistentry>
10819                 <term><command>delegation-only</command></term>
10820                 <listitem>
10821                   <para>
10822                     The flag only applies to hint and stub zones.  If set
10823                     to <userinput>yes</userinput>, then the zone will also be
10824                     treated as if it is also a delegation-only type zone.
10825                   </para>
10826                   <para>
10827                     See caveats in <xref linkend="root_delegation_only"/>.
10828                   </para>
10829                 </listitem>
10830               </varlistentry>
10831
10832               <varlistentry>
10833                 <term><command>forward</command></term>
10834                 <listitem>
10835                   <para>
10836                     Only meaningful if the zone has a forwarders
10837                     list. The <command>only</command> value causes
10838                     the lookup to fail
10839                     after trying the forwarders and getting no answer, while <command>first</command> would
10840                     allow a normal lookup to be tried.
10841                   </para>
10842                 </listitem>
10843               </varlistentry>
10844
10845               <varlistentry>
10846                 <term><command>forwarders</command></term>
10847                 <listitem>
10848                   <para>
10849                     Used to override the list of global forwarders.
10850                     If it is not specified in a zone of type <command>forward</command>,
10851                     no forwarding is done for the zone and the global options are
10852                     not used.
10853                   </para>
10854                 </listitem>
10855               </varlistentry>
10856
10857               <varlistentry>
10858                 <term><command>ixfr-base</command></term>
10859                 <listitem>
10860                   <para>
10861                     Was used in <acronym>BIND</acronym> 8 to
10862                     specify the name
10863                     of the transaction log (journal) file for dynamic update
10864                     and IXFR.
10865                     <acronym>BIND</acronym> 9 ignores the option
10866                     and constructs the name of the journal
10867                     file by appending "<filename>.jnl</filename>"
10868                     to the name of the
10869                     zone file.
10870                   </para>
10871                 </listitem>
10872               </varlistentry>
10873
10874               <varlistentry>
10875                 <term><command>ixfr-tmp-file</command></term>
10876                 <listitem>
10877                   <para>
10878                     Was an undocumented option in <acronym>BIND</acronym> 8.
10879                     Ignored in <acronym>BIND</acronym> 9.
10880                   </para>
10881                 </listitem>
10882               </varlistentry>
10883
10884               <varlistentry>
10885                 <term><command>journal</command></term>
10886                 <listitem>
10887                   <para>
10888                     Allow the default journal's filename to be overridden.
10889                     The default is the zone's filename with "<filename>.jnl</filename>" appended.
10890                     This is applicable to <command>master</command> and <command>slave</command> zones.
10891                   </para>
10892                 </listitem>
10893               </varlistentry>
10894
10895               <varlistentry>
10896                 <term><command>max-journal-size</command></term>
10897                 <listitem>
10898                   <para>
10899                     See the description of
10900                     <command>max-journal-size</command> in <xref linkend="server_resource_limits"/>.
10901                   </para>
10902                 </listitem>
10903               </varlistentry>
10904
10905               <varlistentry>
10906                 <term><command>max-transfer-time-in</command></term>
10907                 <listitem>
10908                   <para>
10909                     See the description of
10910                     <command>max-transfer-time-in</command> in <xref linkend="zone_transfers"/>.
10911                   </para>
10912                 </listitem>
10913               </varlistentry>
10914
10915               <varlistentry>
10916                 <term><command>max-transfer-idle-in</command></term>
10917                 <listitem>
10918                   <para>
10919                     See the description of
10920                     <command>max-transfer-idle-in</command> in <xref linkend="zone_transfers"/>.
10921                   </para>
10922                 </listitem>
10923               </varlistentry>
10924
10925               <varlistentry>
10926                 <term><command>max-transfer-time-out</command></term>
10927                 <listitem>
10928                   <para>
10929                     See the description of
10930                     <command>max-transfer-time-out</command> in <xref linkend="zone_transfers"/>.
10931                   </para>
10932                 </listitem>
10933               </varlistentry>
10934
10935               <varlistentry>
10936                 <term><command>max-transfer-idle-out</command></term>
10937                 <listitem>
10938                   <para>
10939                     See the description of
10940                     <command>max-transfer-idle-out</command> in <xref linkend="zone_transfers"/>.
10941                   </para>
10942                 </listitem>
10943               </varlistentry>
10944
10945               <varlistentry>
10946                 <term><command>notify</command></term>
10947                 <listitem>
10948                   <para>
10949                     See the description of
10950                     <command>notify</command> in <xref linkend="boolean_options"/>.
10951                   </para>
10952                 </listitem>
10953               </varlistentry>
10954
10955               <varlistentry>
10956                 <term><command>notify-delay</command></term>
10957                 <listitem>
10958                   <para>
10959                     See the description of
10960                     <command>notify-delay</command> in <xref linkend="tuning"/>.
10961                   </para>
10962                 </listitem>
10963               </varlistentry>
10964
10965               <varlistentry>
10966                 <term><command>notify-to-soa</command></term>
10967                 <listitem>
10968                   <para>
10969                     See the description of
10970                     <command>notify-to-soa</command> in
10971                     <xref linkend="boolean_options"/>.
10972                   </para>
10973                 </listitem>
10974               </varlistentry>
10975
10976               <varlistentry>
10977                 <term><command>pubkey</command></term>
10978                 <listitem>
10979                   <para>
10980                     In <acronym>BIND</acronym> 8, this option was
10981                     intended for specifying
10982                     a public zone key for verification of signatures in DNSSEC
10983                     signed
10984                     zones when they are loaded from disk. <acronym>BIND</acronym> 9 does not verify signatures
10985                     on load and ignores the option.
10986                   </para>
10987                 </listitem>
10988               </varlistentry>
10989
10990               <varlistentry>
10991                 <term><command>zone-statistics</command></term>
10992                 <listitem>
10993                   <para>
10994                     If <userinput>yes</userinput>, the server will keep
10995                     statistical
10996                     information for this zone, which can be dumped to the
10997                     <command>statistics-file</command> defined in
10998                     the server options.
10999                   </para>
11000                 </listitem>
11001               </varlistentry>
11002
11003               <varlistentry>
11004                 <term><command>server-addresses</command></term>
11005                 <listitem>
11006                   <para>
11007                     Only meaningful for static-stub zones.
11008                     This is a list of IP addresses to which queries
11009                     should be sent in recursive resolution for the
11010                     zone.
11011                     A non empty list for this option will internally
11012                     configure the apex NS RR with associated glue A or
11013                     AAAA RRs.
11014                   </para>
11015                   <para>
11016                     For example, if "example.com" is configured as a
11017                     static-stub zone with 192.0.2.1 and 2001:db8::1234
11018                     in a <command>server-addresses</command> option,
11019                     the following RRs will be internally configured.
11020                   </para>
11021 <programlisting>example.com. NS example.com.
11022 example.com. A 192.0.2.1
11023 example.com. AAAA 2001:db8::1234</programlisting>
11024                   <para>
11025                     These records are internally used to resolve
11026                     names under the static-stub zone.
11027                     For instance, if the server receives a query for
11028                     "www.example.com" with the RD bit on, the server
11029                     will initiate recursive resolution and send
11030                     queries to 192.0.2.1 and/or 2001:db8::1234.
11031                   </para>
11032                 </listitem>
11033               </varlistentry>
11034
11035               <varlistentry>
11036                 <term><command>server-names</command></term>
11037                 <listitem>
11038                   <para>
11039                     Only meaningful for static-stub zones.
11040                     This is a list of domain names of nameservers that
11041                     act as authoritative servers of the static-stub
11042                     zone.
11043                     These names will be resolved to IP addresses when
11044                     <command>named</command> needs to send queries to
11045                     these servers.
11046                     To make this supplemental resolution successful,
11047                     these names must not be a subdomain of the origin
11048                     name of static-stub zone.
11049                     That is, when "example.net" is the origin of a
11050                     static-stub zone, "ns.example" and
11051                     "master.example.com" can be specified in the
11052                     <command>server-names</command> option, but
11053                     "ns.example.net" cannot, and will be rejected by
11054                     the configuration parser.
11055                   </para>
11056                   <para>
11057                     A non empty list for this option will internally
11058                     configure the apex NS RR with the specified names.
11059                     For example, if "example.com" is configured as a
11060                     static-stub zone with "ns1.example.net" and
11061                     "ns2.example.net"
11062                     in a <command>server-names</command> option,
11063                     the following RRs will be internally configured.
11064                   </para>
11065 <programlisting>example.com. NS ns1.example.net.
11066 example.com. NS ns2.example.net.
11067 </programlisting>
11068                   <para>
11069                     These records are internally used to resolve
11070                     names under the static-stub zone.
11071                     For instance, if the server receives a query for
11072                     "www.example.com" with the RD bit on, the server
11073                     initiate recursive resolution,
11074                     resolve "ns1.example.net" and/or
11075                     "ns2.example.net" to IP addresses, and then send
11076                     queries to (one or more of) these addresses.
11077                   </para>
11078                 </listitem>
11079               </varlistentry>
11080
11081               <varlistentry>
11082                 <term><command>sig-validity-interval</command></term>
11083                 <listitem>
11084                   <para>
11085                     See the description of
11086                     <command>sig-validity-interval</command> in <xref linkend="tuning"/>.
11087                   </para>
11088                 </listitem>
11089               </varlistentry>
11090
11091               <varlistentry>
11092                 <term><command>sig-signing-nodes</command></term>
11093                 <listitem>
11094                   <para>
11095                     See the description of
11096                     <command>sig-signing-nodes</command> in <xref linkend="tuning"/>.
11097                   </para>
11098                 </listitem>
11099               </varlistentry>
11100
11101               <varlistentry>
11102                 <term><command>sig-signing-signatures</command></term>
11103                 <listitem>
11104                   <para>
11105                     See the description of
11106                     <command>sig-signing-signatures</command> in <xref linkend="tuning"/>.
11107                   </para>
11108                 </listitem>
11109               </varlistentry>
11110
11111               <varlistentry>
11112                 <term><command>sig-signing-type</command></term>
11113                 <listitem>
11114                   <para>
11115                     See the description of
11116                     <command>sig-signing-type</command> in <xref linkend="tuning"/>.
11117                   </para>
11118                 </listitem>
11119               </varlistentry>
11120
11121               <varlistentry>
11122                 <term><command>transfer-source</command></term>
11123                 <listitem>
11124                   <para>
11125                     See the description of
11126                     <command>transfer-source</command> in <xref linkend="zone_transfers"/>.
11127                   </para>
11128                 </listitem>
11129               </varlistentry>
11130
11131               <varlistentry>
11132                 <term><command>transfer-source-v6</command></term>
11133                 <listitem>
11134                   <para>
11135                     See the description of
11136                     <command>transfer-source-v6</command> in <xref linkend="zone_transfers"/>.
11137                   </para>
11138                 </listitem>
11139               </varlistentry>
11140
11141               <varlistentry>
11142                 <term><command>alt-transfer-source</command></term>
11143                 <listitem>
11144                   <para>
11145                     See the description of
11146                     <command>alt-transfer-source</command> in <xref linkend="zone_transfers"/>.
11147                   </para>
11148                 </listitem>
11149               </varlistentry>
11150
11151               <varlistentry>
11152                 <term><command>alt-transfer-source-v6</command></term>
11153                 <listitem>
11154                   <para>
11155                     See the description of
11156                     <command>alt-transfer-source-v6</command> in <xref linkend="zone_transfers"/>.
11157                   </para>
11158                 </listitem>
11159               </varlistentry>
11160
11161               <varlistentry>
11162                 <term><command>use-alt-transfer-source</command></term>
11163                 <listitem>
11164                   <para>
11165                     See the description of
11166                     <command>use-alt-transfer-source</command> in <xref linkend="zone_transfers"/>.
11167                   </para>
11168                 </listitem>
11169               </varlistentry>
11170
11171
11172               <varlistentry>
11173                 <term><command>notify-source</command></term>
11174                 <listitem>
11175                   <para>
11176                     See the description of
11177                     <command>notify-source</command> in <xref linkend="zone_transfers"/>.
11178                   </para>
11179                 </listitem>
11180               </varlistentry>
11181
11182               <varlistentry>
11183                 <term><command>notify-source-v6</command></term>
11184                 <listitem>
11185                   <para>
11186                     See the description of
11187                     <command>notify-source-v6</command> in <xref linkend="zone_transfers"/>.
11188                   </para>
11189                 </listitem>
11190               </varlistentry>
11191
11192               <varlistentry>
11193                 <term><command>min-refresh-time</command></term>
11194                 <term><command>max-refresh-time</command></term>
11195                 <term><command>min-retry-time</command></term>
11196                 <term><command>max-retry-time</command></term>
11197                 <listitem>
11198                   <para>
11199                     See the description in <xref linkend="tuning"/>.
11200                   </para>
11201                 </listitem>
11202               </varlistentry>
11203
11204               <varlistentry>
11205                 <term><command>ixfr-from-differences</command></term>
11206                 <listitem>
11207                   <para>
11208                     See the description of
11209                     <command>ixfr-from-differences</command> in <xref linkend="boolean_options"/>.
11210                     (Note that the <command>ixfr-from-differences</command>
11211                     <userinput>master</userinput> and
11212                     <userinput>slave</userinput> choices are not
11213                     available at the zone level.)
11214                   </para>
11215                 </listitem>
11216               </varlistentry>
11217
11218               <varlistentry>
11219                 <term><command>key-directory</command></term>
11220                 <listitem>
11221                   <para>
11222                     See the description of
11223                     <command>key-directory</command> in <xref linkend="options"/>.
11224                   </para>
11225                 </listitem>
11226               </varlistentry>
11227
11228               <varlistentry>
11229                 <term><command>auto-dnssec</command></term>
11230                 <listitem>
11231                   <para>
11232                     Zones configured for dynamic DNS may also use this
11233                     option to allow varying levels of automatic DNSSEC key
11234                     management. There are three possible settings:
11235                   </para>
11236                   <para>
11237                     <command>auto-dnssec allow;</command> permits
11238                     keys to be updated and the zone fully re-signed
11239                     whenever the user issues the command <command>rndc sign
11240                     <replaceable>zonename</replaceable></command>.
11241                   </para>
11242                   <para>
11243                     <command>auto-dnssec maintain;</command> includes the
11244                     above, but also automatically adjusts the zone's DNSSEC
11245                     keys on schedule, according to the keys' timing metadata
11246                     (see <xref linkend="man.dnssec-keygen"/> and
11247                     <xref linkend="man.dnssec-settime"/>).  The command
11248                     <command>rndc sign
11249                     <replaceable>zonename</replaceable></command> causes
11250                     <command>named</command> to load keys from the key
11251                     repository and sign the zone with all keys that are
11252                     active. 
11253                     <command>rndc loadkeys
11254                     <replaceable>zonename</replaceable></command> causes
11255                     <command>named</command> to load keys from the key
11256                     repository and schedule key maintenance events to occur
11257                     in the future, but it does not sign the full zone
11258                     immediately.  Note: once keys have been loaded for a
11259                     zone the first time, the repository will be searched
11260                     for changes periodically, regardless of whether
11261                     <command>rndc loadkeys</command> is used.  The recheck
11262                     interval is hard-coded to
11263                     one hour.
11264                   </para>
11265                   <para>
11266                     <command>auto-dnssec create;</command> includes the
11267                     above, but also allows <command>named</command>
11268                     to create new keys in the key repository when needed.
11269                     (NOTE: This option is not yet implemented; the syntax is
11270                     being reserved for future use.)
11271                   </para>
11272                   <para>
11273                     The default setting is <command>auto-dnssec off</command>.
11274                   </para>
11275                 </listitem>
11276               </varlistentry>
11277
11278               <varlistentry>
11279                 <term><command>multi-master</command></term>
11280                 <listitem>
11281                   <para>
11282                     See the description of <command>multi-master</command> in
11283                     <xref linkend="boolean_options"/>.
11284                   </para>
11285                 </listitem>
11286               </varlistentry>
11287         
11288               <varlistentry>
11289                 <term><command>masterfile-format</command></term>
11290                 <listitem>
11291                   <para>
11292                     See the description of <command>masterfile-format</command>
11293                     in <xref linkend="tuning"/>.
11294                   </para>
11295                 </listitem>
11296               </varlistentry>
11297
11298               <varlistentry>
11299                 <term><command>dnssec-secure-to-insecure</command></term>
11300                 <listitem>
11301                   <para>
11302                     See the description of
11303                     <command>dnssec-secure-to-insecure</command> in <xref linkend="boolean_options"/>.
11304                   </para>
11305                 </listitem>
11306               </varlistentry>
11307
11308             </variablelist>
11309
11310           </sect3>
11311           <sect3 id="dynamic_update_policies">
11312             <title>Dynamic Update Policies</title>
11313             <para><acronym>BIND</acronym> 9 supports two alternative
11314               methods of granting clients the right to perform
11315               dynamic updates to a zone, configured by the
11316               <command>allow-update</command> and
11317               <command>update-policy</command> option, respectively.
11318             </para>
11319             <para>
11320               The <command>allow-update</command> clause works the
11321               same way as in previous versions of <acronym>BIND</acronym>.
11322               It grants given clients the permission to update any
11323               record of any name in the zone.
11324             </para>
11325             <para>
11326               The <command>update-policy</command> clause
11327               allows more fine-grained control over what updates are
11328               allowed.  A set of rules is specified, where each rule
11329               either grants or denies permissions for one or more
11330               names to be updated by one or more identities.  If
11331               the dynamic update request message is signed (that is,
11332               it includes either a TSIG or SIG(0) record), the
11333               identity of the signer can be determined.
11334             </para>
11335             <para>
11336               Rules are specified in the <command>update-policy</command>
11337               zone option, and are only meaningful for master zones.
11338               When the <command>update-policy</command> statement
11339               is present, it is a configuration error for the
11340               <command>allow-update</command> statement to be
11341               present.  The <command>update-policy</command> statement
11342               only examines the signer of a message; the source
11343               address is not relevant.
11344             </para>
11345             <para>
11346               There is a pre-defined <command>update-policy</command>
11347               rule which can be switched on with the command
11348               <command>update-policy local;</command>.
11349               Switching on this rule in a zone causes
11350               <command>named</command> to generate a TSIG session
11351               key and place it in a file, and to allow that key
11352               to update the zone.  (By default, the file is
11353               <filename>/var/run/named/session.key</filename>, the key
11354               name is "local-ddns" and the key algorithm is HMAC-SHA256,
11355               but these values are configurable with the
11356               <command>session-keyfile</command>,
11357               <command>session-keyname</command> and
11358               <command>session-keyalg</command> options, respectively).
11359             </para>
11360             <para>
11361               A client running on the local system, and with appropriate
11362               permissions, may read that file and use the key to sign update
11363               requests.  The zone's update policy will be set to allow that
11364               key to change any record within the zone.  Assuming the
11365               key name is "local-ddns", this policy is equivalent to:
11366             </para>
11367
11368             <programlisting>update-policy { grant local-ddns zonesub any; };
11369             </programlisting>
11370
11371             <para>
11372               The command <command>nsupdate -l</command> sends update
11373               requests to localhost, and signs them using the session key.
11374             </para>
11375
11376             <para>
11377               Other rule definitions look like this:
11378             </para>
11379
11380 <programlisting>
11381 ( <command>grant</command> | <command>deny</command> ) <replaceable>identity</replaceable> <replaceable>nametype</replaceable> <optional> <replaceable>name</replaceable> </optional> <optional> <replaceable>types</replaceable> </optional>
11382 </programlisting>
11383
11384             <para>
11385               Each rule grants or denies privileges.  Once a message has
11386               successfully matched a rule, the operation is immediately
11387               granted or denied and no further rules are examined.  A rule
11388               is matched when the signer matches the identity field, the
11389               name matches the name field in accordance with the nametype
11390               field, and the type matches the types specified in the type
11391               field.
11392             </para>
11393             <para>
11394               No signer is required for <replaceable>tcp-self</replaceable>
11395               or <replaceable>6to4-self</replaceable> however the standard
11396               reverse mapping / prefix conversion must match the identity
11397               field.
11398             </para>
11399             <para>
11400               The identity field specifies a name or a wildcard
11401               name.  Normally, this is the name of the TSIG or
11402               SIG(0) key used to sign the update request.  When a
11403               TKEY exchange has been used to create a shared secret,
11404               the identity of the shared secret is the same as the
11405               identity of the key used to authenticate the TKEY
11406               exchange.  TKEY is also the negotiation method used
11407               by GSS-TSIG, which establishes an identity that is
11408               the Kerberos principal of the client, such as
11409               <userinput>"user@host.domain"</userinput>.  When the
11410               <replaceable>identity</replaceable> field specifies
11411               a wildcard name, it is subject to DNS wildcard
11412               expansion, so the rule will apply to multiple identities.
11413               The <replaceable>identity</replaceable> field must
11414               contain a fully-qualified domain name.
11415             </para>
11416             <para>
11417               For nametypes <varname>krb5-self</varname>,
11418               <varname>ms-self</varname>, <varname>krb5-subdomain</varname>,
11419               and <varname>ms-subdomain</varname> the
11420               <replaceable>identity</replaceable> field specifies
11421               the Windows or Kerberos realm of the machine belongs to.
11422             </para>
11423             <para>
11424               The <replaceable>nametype</replaceable> field has 13
11425               values:
11426               <varname>name</varname>, <varname>subdomain</varname>,
11427               <varname>wildcard</varname>, <varname>self</varname>,
11428               <varname>selfsub</varname>, <varname>selfwild</varname>,
11429               <varname>krb5-self</varname>, <varname>ms-self</varname>,
11430               <varname>krb5-subdomain</varname>,
11431               <varname>ms-subdomain</varname>,
11432               <varname>tcp-self</varname>, <varname>6to4-self</varname>,
11433               <varname>zonesub</varname>, and <varname>external</varname>.
11434             </para>
11435             <informaltable>
11436               <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
11437                 <colspec colname="1" colnum="1" colsep="0" colwidth="0.819in"/>
11438                 <colspec colname="2" colnum="2" colsep="0" colwidth="3.681in"/>
11439                 <tbody>
11440                   <row rowsep="0">
11441                     <entry colname="1">
11442                       <para>
11443                         <varname>name</varname>
11444                       </para>
11445                     </entry> <entry colname="2">
11446                       <para>
11447                         Exact-match semantics.  This rule matches
11448                         when the name being updated is identical
11449                         to the contents of the
11450                         <replaceable>name</replaceable> field.
11451                       </para>
11452                     </entry>
11453                   </row>
11454                   <row rowsep="0">
11455                     <entry colname="1">
11456                       <para>
11457                         <varname>subdomain</varname>
11458                       </para>
11459                     </entry> <entry colname="2">
11460                       <para>
11461                         This rule matches when the name being updated
11462                         is a subdomain of, or identical to, the
11463                         contents of the <replaceable>name</replaceable>
11464                         field.
11465                       </para>
11466                     </entry>
11467                   </row>
11468                   <row rowsep="0">
11469                     <entry colname="1">
11470                       <para>
11471                         <varname>zonesub</varname>
11472                       </para>
11473                     </entry> <entry colname="2">
11474                       <para>
11475                         This rule is similar to subdomain, except that
11476                         it matches when the name being updated is a
11477                         subdomain of the zone in which the
11478                         <command>update-policy</command> statement
11479                         appears.  This obviates the need to type the zone
11480                         name twice, and enables the use of a standard
11481                         <command>update-policy</command> statement in
11482                         multiple zones without modification.
11483                       </para>
11484                       <para>
11485                         When this rule is used, the
11486                         <replaceable>name</replaceable> field is omitted.
11487                       </para>
11488                     </entry>
11489                   </row>
11490                   <row rowsep="0">
11491                     <entry colname="1">
11492                       <para>
11493                         <varname>wildcard</varname>
11494                       </para>
11495                     </entry> <entry colname="2">
11496                       <para>
11497                         The <replaceable>name</replaceable> field
11498                         is subject to DNS wildcard expansion, and
11499                         this rule matches when the name being updated
11500                         name is a valid expansion of the wildcard.
11501                       </para>
11502                     </entry>
11503                   </row>
11504                   <row rowsep="0">
11505                     <entry colname="1">
11506                       <para>
11507                         <varname>self</varname>
11508                       </para>
11509                     </entry>
11510                     <entry colname="2">
11511                       <para>
11512                         This rule matches when the name being updated
11513                         matches the contents of the
11514                         <replaceable>identity</replaceable> field.
11515                         The <replaceable>name</replaceable> field
11516                         is ignored, but should be the same as the
11517                         <replaceable>identity</replaceable> field.
11518                         The <varname>self</varname> nametype is
11519                         most useful when allowing using one key per
11520                         name to update, where the key has the same
11521                         name as the name to be updated.  The
11522                         <replaceable>identity</replaceable> would
11523                         be specified as <constant>*</constant> (an asterisk) in
11524                         this case.
11525                       </para>
11526                     </entry>
11527                   </row>
11528                   <row rowsep="0">
11529                     <entry colname="1">
11530                       <para>
11531                         <varname>selfsub</varname>
11532                       </para>
11533                     </entry> <entry colname="2">
11534                       <para>
11535                         This rule is similar to <varname>self</varname>
11536                         except that subdomains of <varname>self</varname>
11537                         can also be updated.
11538                       </para>
11539                     </entry>
11540                   </row>
11541                   <row rowsep="0">
11542                     <entry colname="1">
11543                       <para>
11544                         <varname>selfwild</varname>
11545                       </para>
11546                     </entry> <entry colname="2">
11547                       <para>
11548                         This rule is similar to <varname>self</varname>
11549                         except that only subdomains of
11550                         <varname>self</varname> can be updated.
11551                       </para>
11552                     </entry>
11553                   </row>
11554                   <row rowsep="0">
11555                     <entry colname="1">
11556                       <para>
11557                         <varname>ms-self</varname>
11558                       </para>
11559                     </entry> <entry colname="2">
11560                       <para>
11561                         This rule takes a Windows machine principal
11562                         (machine$@REALM) for machine in REALM and
11563                         and converts it machine.realm allowing the machine 
11564                         to update machine.realm.  The REALM to be matched
11565                         is specified in the <replaceable>identity</replaceable>
11566                         field.
11567                       </para>
11568                     </entry>
11569                   </row>
11570                   <row rowsep="0">
11571                     <entry colname="1">
11572                       <para>
11573                         <varname>ms-subdomain</varname>
11574                       </para>
11575                     </entry> <entry colname="2">
11576                       <para>
11577                         This rule takes a Windows machine principal 
11578                         (machine$@REALM) for machine in REALM and
11579                         converts it to machine.realm allowing the machine
11580                         to update subdomains of machine.realm.  The REALM
11581                         to be matched is specified in the
11582                         <replaceable>identity</replaceable> field.
11583                       </para>
11584                     </entry>
11585                   </row>
11586                   <row rowsep="0">
11587                     <entry colname="1">
11588                       <para>
11589                         <varname>krb5-self</varname>
11590                       </para>
11591                     </entry> <entry colname="2">
11592                       <para>
11593                         This rule takes a Kerberos machine principal
11594                         (host/machine@REALM) for machine in REALM and
11595                         and converts it machine.realm allowing the machine 
11596                         to update machine.realm.  The REALM to be matched
11597                         is specified in the <replaceable>identity</replaceable>
11598                         field.
11599                       </para>
11600                     </entry>
11601                   </row>
11602                   <row rowsep="0">
11603                     <entry colname="1">
11604                       <para>
11605                         <varname>krb5-subdomain</varname>
11606                       </para>
11607                     </entry> <entry colname="2">
11608                       <para>
11609                         This rule takes a Kerberos machine principal 
11610                         (host/machine@REALM) for machine in REALM and
11611                         converts it to machine.realm allowing the machine
11612                         to update subdomains of machine.realm.  The REALM
11613                         to be matched is specified in the
11614                         <replaceable>identity</replaceable> field.
11615                       </para>
11616                     </entry>
11617                   </row>
11618                   <row rowsep="0">
11619                     <entry colname="1">
11620                       <para>
11621                         <varname>tcp-self</varname>
11622                       </para>
11623                     </entry> <entry colname="2">
11624                       <para>
11625                         Allow updates that have been sent via TCP and
11626                         for which the standard mapping from the initiating
11627                         IP address into the IN-ADDR.ARPA and IP6.ARPA
11628                         namespaces match the name to be updated.
11629                       </para>
11630                       <note>
11631                         It is theoretically possible to spoof these TCP
11632                         sessions.
11633                       </note>
11634                     </entry>
11635                   </row>
11636                   <row rowsep="0">
11637                     <entry colname="1">
11638                       <para>
11639                         <varname>6to4-self</varname>
11640                       </para>
11641                     </entry> <entry colname="2">
11642                       <para>
11643                         Allow the 6to4 prefix to be update by any TCP
11644                         connection from the 6to4 network or from the
11645                         corresponding IPv4 address.  This is intended
11646                         to allow NS or DNAME RRsets to be added to the
11647                         reverse tree.
11648                       </para>
11649                       <note>
11650                         It is theoretically possible to spoof these TCP
11651                         sessions.
11652                       </note>
11653                     </entry>
11654                   </row>
11655                   <row rowsep="0">
11656                     <entry colname="1">
11657                       <para>
11658                         <varname>external</varname>
11659                       </para>
11660                     </entry> <entry colname="2">
11661                       <para>
11662                         This rule allows <command>named</command>
11663                         to defer the decision of whether to allow a
11664                         given update to an external daemon.
11665                       </para>
11666                       <para>
11667                         The method of communicating with the daemon is
11668                         specified in the <replaceable>identity</replaceable>
11669                         field, the format of which is
11670                         "<constant>local:</constant><replaceable>path</replaceable>",
11671                         where <replaceable>path</replaceable> is the location
11672                         of a UNIX-domain socket.  (Currently, "local" is the
11673                         only supported mechanism.)
11674                       </para>
11675                       <para>
11676                         Requests to the external daemon are sent over the
11677                         UNIX-domain socket as datagrams with the following
11678                         format:
11679                       </para>
11680                       <programlisting>
11681    Protocol version number (4 bytes, network byte order, currently 1)
11682    Request length (4 bytes, network byte order)
11683    Signer (null-terminated string)
11684    Name (null-terminated string)
11685    TCP source address (null-terminated string)
11686    Rdata type (null-terminated string)
11687    Key (null-terminated string)
11688    TKEY token length (4 bytes, network byte order)
11689    TKEY token (remainder of packet)</programlisting>
11690                       <para>
11691                         The daemon replies with a four-byte value in
11692                         network byte order, containing either 0 or 1; 0
11693                         indicates that the specified update is not
11694                         permitted, and 1 indicates that it is.
11695                       </para>
11696                     </entry>
11697                   </row>
11698                 </tbody>
11699               </tgroup>
11700             </informaltable>
11701
11702             <para>
11703               In all cases, the <replaceable>name</replaceable>
11704               field must specify a fully-qualified domain name.
11705             </para>
11706
11707             <para>
11708               If no types are explicitly specified, this rule matches
11709               all types except RRSIG, NS, SOA, NSEC and NSEC3. Types
11710               may be specified by name, including "ANY" (ANY matches
11711               all types except NSEC and NSEC3, which can never be
11712               updated).  Note that when an attempt is made to delete
11713               all records associated with a name, the rules are
11714               checked for each existing record type.
11715             </para>
11716           </sect3>
11717         </sect2>
11718       </sect1>
11719       <sect1>
11720         <title>Zone File</title>
11721         <sect2 id="types_of_resource_records_and_when_to_use_them">
11722           <title>Types of Resource Records and When to Use Them</title>
11723           <para>
11724             This section, largely borrowed from RFC 1034, describes the
11725             concept of a Resource Record (RR) and explains when each is used.
11726             Since the publication of RFC 1034, several new RRs have been
11727             identified
11728             and implemented in the DNS. These are also included.
11729           </para>
11730           <sect3>
11731             <title>Resource Records</title>
11732
11733             <para>
11734               A domain name identifies a node.  Each node has a set of
11735               resource information, which may be empty.  The set of resource
11736               information associated with a particular name is composed of
11737               separate RRs. The order of RRs in a set is not significant and
11738               need not be preserved by name servers, resolvers, or other
11739               parts of the DNS. However, sorting of multiple RRs is
11740               permitted for optimization purposes, for example, to specify
11741               that a particular nearby server be tried first. See <xref linkend="the_sortlist_statement"/> and <xref linkend="rrset_ordering"/>.
11742             </para>
11743
11744             <para>
11745               The components of a Resource Record are:
11746             </para>
11747             <informaltable colsep="0" rowsep="0">
11748               <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
11749                 <colspec colname="1" colnum="1" colsep="0" colwidth="1.000in"/>
11750                 <colspec colname="2" colnum="2" colsep="0" colwidth="3.500in"/>
11751                 <tbody>
11752                   <row rowsep="0">
11753                     <entry colname="1">
11754                       <para>
11755                         owner name
11756                       </para>
11757                     </entry>
11758                     <entry colname="2">
11759                       <para>
11760                         The domain name where the RR is found.
11761                       </para>
11762                     </entry>
11763                   </row>
11764                   <row rowsep="0">
11765                     <entry colname="1">
11766                       <para>
11767                         type
11768                       </para>
11769                     </entry>
11770                     <entry colname="2">
11771                       <para>
11772                         An encoded 16-bit value that specifies
11773                         the type of the resource record.
11774                       </para>
11775                     </entry>
11776                   </row>
11777                   <row rowsep="0">
11778                     <entry colname="1">
11779                       <para>
11780                         TTL
11781                       </para>
11782                     </entry>
11783                     <entry colname="2">
11784                       <para>
11785                         The time-to-live of the RR. This field
11786                         is a 32-bit integer in units of seconds, and is
11787                         primarily used by
11788                         resolvers when they cache RRs. The TTL describes how
11789                         long a RR can
11790                         be cached before it should be discarded.
11791                       </para>
11792                     </entry>
11793                   </row>
11794                   <row rowsep="0">
11795                     <entry colname="1">
11796                       <para>
11797                         class
11798                       </para>
11799                     </entry>
11800                     <entry colname="2">
11801                       <para>
11802                         An encoded 16-bit value that identifies
11803                         a protocol family or instance of a protocol.
11804                       </para>
11805                     </entry>
11806                   </row>
11807                   <row rowsep="0">
11808                     <entry colname="1">
11809                       <para>
11810                         RDATA
11811                       </para>
11812                     </entry>
11813                     <entry colname="2">
11814                       <para>
11815                         The resource data.  The format of the
11816                         data is type (and sometimes class) specific.
11817                       </para>
11818                     </entry>
11819                   </row>
11820                 </tbody>
11821               </tgroup>
11822             </informaltable>
11823             <para>
11824               The following are <emphasis>types</emphasis> of valid RRs:
11825             </para>
11826             <informaltable colsep="0" rowsep="0">
11827               <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
11828                 <colspec colname="1" colnum="1" colsep="0" colwidth="0.875in"/>
11829                 <colspec colname="2" colnum="2" colsep="0" colwidth="3.625in"/>
11830                 <tbody>
11831                   <row rowsep="0">
11832                     <entry colname="1">
11833                       <para>
11834                         A
11835                       </para>
11836                     </entry>
11837                     <entry colname="2">
11838                       <para>
11839                         A host address.  In the IN class, this is a
11840                         32-bit IP address.  Described in RFC 1035.
11841                       </para>
11842                     </entry>
11843                   </row>
11844                   <row rowsep="0">
11845                     <entry colname="1">
11846                       <para>
11847                         AAAA
11848                       </para>
11849                     </entry>
11850                     <entry colname="2">
11851                       <para>
11852                         IPv6 address.  Described in RFC 1886.
11853                       </para>
11854                     </entry>
11855                   </row>
11856                   <row rowsep="0">
11857                     <entry colname="1">
11858                       <para>
11859                         A6
11860                       </para>
11861                     </entry>
11862                     <entry colname="2">
11863                       <para>
11864                         IPv6 address.  This can be a partial
11865                         address (a suffix) and an indirection to the name
11866                         where the rest of the
11867                         address (the prefix) can be found.  Experimental.
11868                         Described in RFC 2874.
11869                       </para>
11870                     </entry>
11871                   </row>
11872                   <row rowsep="0">
11873                     <entry colname="1">
11874                       <para>
11875                         AFSDB
11876                       </para>
11877                     </entry>
11878                     <entry colname="2">
11879                       <para>
11880                         Location of AFS database servers.
11881                         Experimental.  Described in RFC 1183.
11882                       </para>
11883                     </entry>
11884                   </row>
11885                   <row rowsep="0">
11886                     <entry colname="1">
11887                       <para>
11888                         APL
11889                       </para>
11890                     </entry>
11891                     <entry colname="2">
11892                       <para>
11893                         Address prefix list.  Experimental.
11894                         Described in RFC 3123.
11895                       </para>
11896                     </entry>
11897                   </row>
11898                   <row rowsep="0">
11899                     <entry colname="1">
11900                       <para>
11901                         CERT
11902                       </para>
11903                     </entry>
11904                     <entry colname="2">
11905                       <para>
11906                         Holds a digital certificate.
11907                         Described in RFC 2538.
11908                       </para>
11909                     </entry>
11910                   </row>
11911                   <row rowsep="0">
11912                     <entry colname="1">
11913                       <para>
11914                         CNAME
11915                       </para>
11916                     </entry>
11917                     <entry colname="2">
11918                       <para>
11919                         Identifies the canonical name of an alias.
11920                         Described in RFC 1035.
11921                       </para>
11922                     </entry>
11923                   </row>
11924                   <row rowsep="0">
11925                     <entry colname="1">
11926                       <para>
11927                         DHCID
11928                       </para>
11929                     </entry>
11930                     <entry colname="2">
11931                       <para>
11932                         Is used for identifying which DHCP client is
11933                         associated with this name.  Described in RFC 4701.
11934                       </para>
11935                     </entry>
11936                   </row>
11937                   <row rowsep="0">
11938                     <entry colname="1">
11939                       <para>
11940                         DNAME
11941                       </para>
11942                     </entry>
11943                     <entry colname="2">
11944                       <para>
11945                         Replaces the domain name specified with
11946                         another name to be looked up, effectively aliasing an
11947                         entire
11948                         subtree of the domain name space rather than a single
11949                         record
11950                         as in the case of the CNAME RR.
11951                         Described in RFC 2672.
11952                       </para>
11953                     </entry>
11954                   </row>
11955                   <row rowsep="0">
11956                     <entry colname="1">
11957                       <para>
11958                         DNSKEY
11959                       </para>
11960                     </entry>
11961                     <entry colname="2">
11962                       <para>
11963                         Stores a public key associated with a signed
11964                         DNS zone.  Described in RFC 4034.
11965                       </para>
11966                     </entry>
11967                   </row>
11968                   <row rowsep="0">
11969                     <entry colname="1">
11970                       <para>
11971                         DS
11972                       </para>
11973                     </entry>
11974                     <entry colname="2">
11975                       <para>
11976                         Stores the hash of a public key associated with a
11977                         signed DNS zone.  Described in RFC 4034.
11978                       </para>
11979                     </entry>
11980                   </row>
11981                   <row rowsep="0">
11982                     <entry colname="1">
11983                       <para>
11984                         GPOS
11985                       </para>
11986                     </entry>
11987                     <entry colname="2">
11988                       <para>
11989                         Specifies the global position.  Superseded by LOC.
11990                       </para>
11991                     </entry>
11992                   </row>
11993                   <row rowsep="0">
11994                     <entry colname="1">
11995                       <para>
11996                         HINFO
11997                       </para>
11998                     </entry>
11999                     <entry colname="2">
12000                       <para>
12001                         Identifies the CPU and OS used by a host.
12002                         Described in RFC 1035.
12003                       </para>
12004                     </entry>
12005                   </row>
12006                   <row rowsep="0">
12007                     <entry colname="1">
12008                       <para>
12009                         IPSECKEY
12010                       </para>
12011                     </entry>
12012                     <entry colname="2">
12013                       <para>
12014                         Provides a method for storing IPsec keying material in
12015                         DNS.  Described in RFC 4025.
12016                       </para>
12017                     </entry>
12018                   </row>
12019                   <row rowsep="0">
12020                     <entry colname="1">
12021                       <para>
12022                         ISDN
12023                       </para>
12024                     </entry>
12025                     <entry colname="2">
12026                       <para>
12027                         Representation of ISDN addresses.
12028                         Experimental.  Described in RFC 1183.
12029                       </para>
12030                     </entry>
12031                   </row>
12032                   <row rowsep="0">
12033                     <entry colname="1">
12034                       <para>
12035                         KEY
12036                       </para>
12037                     </entry>
12038                     <entry colname="2">
12039                       <para>
12040                         Stores a public key associated with a
12041                         DNS name.  Used in original DNSSEC; replaced
12042                         by DNSKEY in DNSSECbis, but still used with
12043                         SIG(0).  Described in RFCs 2535 and 2931.
12044                       </para>
12045                     </entry>
12046                   </row>
12047                   <row rowsep="0">
12048                     <entry colname="1">
12049                       <para>
12050                         KX
12051                       </para>
12052                     </entry>
12053                     <entry colname="2">
12054                       <para>
12055                         Identifies a key exchanger for this
12056                         DNS name.  Described in RFC 2230.
12057                       </para>
12058                     </entry>
12059                   </row>
12060                   <row rowsep="0">
12061                     <entry colname="1">
12062                       <para>
12063                         LOC
12064                       </para>
12065                     </entry>
12066                     <entry colname="2">
12067                       <para>
12068                         For storing GPS info.  Described in RFC 1876.
12069                         Experimental.
12070                       </para>
12071                     </entry>
12072                   </row>
12073                   <row rowsep="0">
12074                     <entry colname="1">
12075                       <para>
12076                         MX
12077                       </para>
12078                     </entry>
12079                     <entry colname="2">
12080                       <para>
12081                         Identifies a mail exchange for the domain with
12082                         a 16-bit preference value (lower is better)
12083                         followed by the host name of the mail exchange.
12084                         Described in RFC 974, RFC 1035.
12085                       </para>
12086                     </entry>
12087                   </row>
12088                   <row rowsep="0">
12089                     <entry colname="1">
12090                       <para>
12091                         NAPTR
12092                       </para>
12093                     </entry>
12094                     <entry colname="2">
12095                       <para>
12096                         Name authority pointer.  Described in RFC 2915.
12097                       </para>
12098                     </entry>
12099                   </row>
12100                   <row rowsep="0">
12101                     <entry colname="1">
12102                       <para>
12103                         NSAP
12104                       </para>
12105                     </entry>
12106                     <entry colname="2">
12107                       <para>
12108                         A network service access point.
12109                         Described in RFC 1706.
12110                       </para>
12111                     </entry>
12112                   </row>
12113                   <row rowsep="0">
12114                     <entry colname="1">
12115                       <para>
12116                         NS
12117                       </para>
12118                     </entry>
12119                     <entry colname="2">
12120                       <para>
12121                         The authoritative name server for the
12122                         domain.  Described in RFC 1035.
12123                       </para>
12124                     </entry>
12125                   </row>
12126                   <row rowsep="0">
12127                     <entry colname="1">
12128                       <para>
12129                         NSEC
12130                       </para>
12131                     </entry>
12132                     <entry colname="2">
12133                       <para>
12134                         Used in DNSSECbis to securely indicate that
12135                         RRs with an owner name in a certain name interval do
12136                         not exist in
12137                         a zone and indicate what RR types are present for an
12138                         existing name.
12139                         Described in RFC 4034.
12140                       </para>
12141                     </entry>
12142                   </row>
12143                   <row rowsep="0">
12144                     <entry colname="1">
12145                       <para>
12146                         NSEC3
12147                       </para>
12148                     </entry>
12149                     <entry colname="2">
12150                       <para>
12151                         Used in DNSSECbis to securely indicate that
12152                         RRs with an owner name in a certain name
12153                         interval do not exist in a zone and indicate
12154                         what RR types are present for an existing
12155                         name.  NSEC3 differs from NSEC in that it
12156                         prevents zone enumeration but is more
12157                         computationally expensive on both the server
12158                         and the client than NSEC.  Described in RFC
12159                         5155.
12160                       </para>
12161                     </entry>
12162                   </row>
12163                   <row rowsep="0">
12164                     <entry colname="1">
12165                       <para>
12166                         NSEC3PARAM
12167                       </para>
12168                     </entry>
12169                     <entry colname="2">
12170                       <para>
12171                         Used in DNSSECbis to tell the authoritative
12172                         server which NSEC3 chains are available to use.
12173                         Described in RFC 5155.
12174                       </para>
12175                     </entry>
12176                   </row>
12177                   <row rowsep="0">
12178                     <entry colname="1">
12179                       <para>
12180                         NXT
12181                       </para>
12182                     </entry>
12183                     <entry colname="2">
12184                       <para>
12185                         Used in DNSSEC to securely indicate that
12186                         RRs with an owner name in a certain name interval do
12187                         not exist in
12188                         a zone and indicate what RR types are present for an
12189                         existing name.
12190                         Used in original DNSSEC; replaced by NSEC in
12191                         DNSSECbis.
12192                         Described in RFC 2535.
12193                       </para>
12194                     </entry>
12195                   </row>
12196                   <row rowsep="0">
12197                     <entry colname="1">
12198                       <para>
12199                         PTR
12200                       </para>
12201                     </entry>
12202                     <entry colname="2">
12203                       <para>
12204                         A pointer to another part of the domain
12205                         name space.  Described in RFC 1035.
12206                       </para>
12207                     </entry>
12208                   </row>
12209                   <row rowsep="0">
12210                     <entry colname="1">
12211                       <para>
12212                         PX
12213                       </para>
12214                     </entry>
12215                     <entry colname="2">
12216                       <para>
12217                         Provides mappings between RFC 822 and X.400
12218                         addresses.  Described in RFC 2163.
12219                       </para>
12220                     </entry>
12221                   </row>
12222                   <row rowsep="0">
12223                     <entry colname="1">
12224                       <para>
12225                         RP
12226                       </para>
12227                     </entry>
12228                     <entry colname="2">
12229                       <para>
12230                         Information on persons responsible
12231                         for the domain.  Experimental.  Described in RFC 1183.
12232                       </para>
12233                     </entry>
12234                   </row>
12235                   <row rowsep="0">
12236                     <entry colname="1">
12237                       <para>
12238                         RRSIG
12239                       </para>
12240                     </entry>
12241                     <entry colname="2">
12242                       <para>
12243                         Contains DNSSECbis signature data.  Described
12244                         in RFC 4034.
12245                       </para>
12246                     </entry>
12247                   </row>
12248                   <row rowsep="0">
12249                     <entry colname="1">
12250                       <para>
12251                         RT
12252                       </para>
12253                     </entry>
12254                     <entry colname="2">
12255                       <para>
12256                         Route-through binding for hosts that
12257                         do not have their own direct wide area network
12258                         addresses.
12259                         Experimental.  Described in RFC 1183.
12260                       </para>
12261                     </entry>
12262                   </row>
12263                   <row rowsep="0">
12264                     <entry colname="1">
12265                       <para>
12266                         SIG
12267                       </para>
12268                     </entry>
12269                     <entry colname="2">
12270                       <para>
12271                         Contains DNSSEC signature data.  Used in
12272                         original DNSSEC; replaced by RRSIG in
12273                         DNSSECbis, but still used for SIG(0).
12274                         Described in RFCs 2535 and 2931.
12275                       </para>
12276                     </entry>
12277                   </row>
12278                   <row rowsep="0">
12279                     <entry colname="1">
12280                       <para>
12281                         SOA
12282                       </para>
12283                     </entry>
12284                     <entry colname="2">
12285                       <para>
12286                         Identifies the start of a zone of authority.
12287                         Described in RFC 1035.
12288                       </para>
12289                     </entry>
12290                   </row>
12291                   <row rowsep="0">
12292                     <entry colname="1">
12293                       <para>
12294                         SPF
12295                       </para>
12296                     </entry>
12297                     <entry colname="2">
12298                       <para>
12299                         Contains the Sender Policy Framework information
12300                         for a given email domain.  Described in RFC 4408.
12301                       </para>
12302                     </entry>
12303                   </row>
12304                   <row rowsep="0">
12305                     <entry colname="1">
12306                       <para>
12307                         SRV
12308                       </para>
12309                     </entry>
12310                     <entry colname="2">
12311                       <para>
12312                         Information about well known network
12313                         services (replaces WKS).  Described in RFC 2782.
12314                       </para>
12315                     </entry>
12316                   </row>
12317                   <row rowsep="0">
12318                     <entry colname="1">
12319                       <para>
12320                         SSHFP
12321                       </para>
12322                     </entry>
12323                     <entry colname="2">
12324                       <para>
12325                         Provides a way to securely publish a secure shell key's
12326                         fingerprint.  Described in RFC 4255.
12327                       </para>
12328                     </entry>
12329                   </row>
12330                   <row rowsep="0">
12331                     <entry colname="1">
12332                       <para>
12333                         TXT
12334                       </para>
12335                     </entry>
12336                     <entry colname="2">
12337                       <para>
12338                         Text records.  Described in RFC 1035.
12339                       </para>
12340                     </entry>
12341                   </row>
12342                   <row rowsep="0">
12343                     <entry colname="1">
12344                       <para>
12345                         WKS
12346                       </para>
12347                     </entry>
12348                     <entry colname="2">
12349                       <para>
12350                         Information about which well known
12351                         network services, such as SMTP, that a domain
12352                         supports. Historical.
12353                       </para>
12354                     </entry>
12355                   </row>
12356                   <row rowsep="0">
12357                     <entry colname="1">
12358                       <para>
12359                         X25
12360                       </para>
12361                     </entry>
12362                     <entry colname="2">
12363                       <para>
12364                         Representation of X.25 network addresses.
12365                         Experimental.  Described in RFC 1183.
12366                       </para>
12367                     </entry>
12368                   </row>
12369                 </tbody>
12370               </tgroup>
12371             </informaltable>
12372             <para>
12373               The following <emphasis>classes</emphasis> of resource records
12374               are currently valid in the DNS:
12375             </para>
12376             <informaltable colsep="0" rowsep="0"><tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
12377                 <colspec colname="1" colnum="1" colsep="0" colwidth="0.875in"/>
12378                 <colspec colname="2" colnum="2" colsep="0" colwidth="3.625in"/>
12379                 <tbody>
12380
12381                   <row rowsep="0">
12382                     <entry colname="1">
12383                       <para>
12384                         IN
12385                       </para>
12386                     </entry>
12387                     <entry colname="2">
12388                       <para>
12389                         The Internet.
12390                       </para>
12391                     </entry>
12392                   </row>
12393
12394                   <row rowsep="0">
12395                     <entry colname="1">
12396                       <para>
12397                         CH
12398                       </para>
12399                     </entry>
12400                     <entry colname="2">
12401                       <para>
12402                         Chaosnet, a LAN protocol created at MIT in the
12403                         mid-1970s.
12404                         Rarely used for its historical purpose, but reused for
12405                         BIND's
12406                         built-in server information zones, e.g.,
12407                         <literal>version.bind</literal>.
12408                       </para>
12409                     </entry>
12410                   </row>
12411
12412                   <row rowsep="0">
12413                     <entry colname="1">
12414                       <para>
12415                         HS
12416                       </para>
12417                     </entry>
12418                     <entry colname="2">
12419                       <para>
12420                         Hesiod, an information service
12421                         developed by MIT's Project Athena. It is used to share
12422                         information
12423                         about various systems databases, such as users,
12424                         groups, printers
12425                         and so on.
12426                       </para>
12427                     </entry>
12428                   </row>
12429
12430                 </tbody>
12431               </tgroup>
12432             </informaltable>
12433
12434             <para>
12435               The owner name is often implicit, rather than forming an
12436               integral
12437               part of the RR.  For example, many name servers internally form
12438               tree
12439               or hash structures for the name space, and chain RRs off nodes.
12440               The remaining RR parts are the fixed header (type, class, TTL)
12441               which is consistent for all RRs, and a variable part (RDATA)
12442               that
12443               fits the needs of the resource being described.
12444             </para>
12445             <para>
12446               The meaning of the TTL field is a time limit on how long an
12447               RR can be kept in a cache.  This limit does not apply to
12448               authoritative
12449               data in zones; it is also timed out, but by the refreshing
12450               policies
12451               for the zone.  The TTL is assigned by the administrator for the
12452               zone where the data originates.  While short TTLs can be used to
12453               minimize caching, and a zero TTL prohibits caching, the
12454               realities
12455               of Internet performance suggest that these times should be on
12456               the
12457               order of days for the typical host.  If a change can be
12458               anticipated,
12459               the TTL can be reduced prior to the change to minimize
12460               inconsistency
12461               during the change, and then increased back to its former value
12462               following
12463               the change.
12464             </para>
12465             <para>
12466               The data in the RDATA section of RRs is carried as a combination
12467               of binary strings and domain names.  The domain names are
12468               frequently
12469               used as "pointers" to other data in the DNS.
12470             </para>
12471           </sect3>
12472           <sect3>
12473             <title>Textual expression of RRs</title>
12474             <para>
12475               RRs are represented in binary form in the packets of the DNS
12476               protocol, and are usually represented in highly encoded form
12477               when
12478               stored in a name server or resolver.  In the examples provided
12479               in
12480               RFC 1034, a style similar to that used in master files was
12481               employed
12482               in order to show the contents of RRs.  In this format, most RRs
12483               are shown on a single line, although continuation lines are
12484               possible
12485               using parentheses.
12486             </para>
12487             <para>
12488               The start of the line gives the owner of the RR.  If a line
12489               begins with a blank, then the owner is assumed to be the same as
12490               that of the previous RR.  Blank lines are often included for
12491               readability.
12492             </para>
12493             <para>
12494               Following the owner, we list the TTL, type, and class of the
12495               RR.  Class and type use the mnemonics defined above, and TTL is
12496               an integer before the type field.  In order to avoid ambiguity
12497               in
12498               parsing, type and class mnemonics are disjoint, TTLs are
12499               integers,
12500               and the type mnemonic is always last. The IN class and TTL
12501               values
12502               are often omitted from examples in the interests of clarity.
12503             </para>
12504             <para>
12505               The resource data or RDATA section of the RR are given using
12506               knowledge of the typical representation for the data.
12507             </para>
12508             <para>
12509               For example, we might show the RRs carried in a message as:
12510             </para>
12511             <informaltable colsep="0" rowsep="0"><tgroup cols="3" colsep="0" rowsep="0" tgroupstyle="4Level-table">
12512                 <colspec colname="1" colnum="1" colsep="0" colwidth="1.381in"/>
12513                 <colspec colname="2" colnum="2" colsep="0" colwidth="1.020in"/>
12514                 <colspec colname="3" colnum="3" colsep="0" colwidth="2.099in"/>
12515                 <tbody>
12516                   <row rowsep="0">
12517                     <entry colname="1">
12518                       <para>
12519                         <literal>ISI.EDU.</literal>
12520                       </para>
12521                     </entry>
12522                     <entry colname="2">
12523                       <para>
12524                         <literal>MX</literal>
12525                       </para>
12526                     </entry>
12527                     <entry colname="3">
12528                       <para>
12529                         <literal>10 VENERA.ISI.EDU.</literal>
12530                       </para>
12531                     </entry>
12532                   </row>
12533                   <row rowsep="0">
12534                     <entry colname="1">
12535                       <para/>
12536                     </entry>
12537                     <entry colname="2">
12538                       <para>
12539                         <literal>MX</literal>
12540                       </para>
12541                     </entry>
12542                     <entry colname="3">
12543                       <para>
12544                         <literal>10 VAXA.ISI.EDU</literal>
12545                       </para>
12546                     </entry>
12547                   </row>
12548                   <row rowsep="0">
12549                     <entry colname="1">
12550                       <para>
12551                         <literal>VENERA.ISI.EDU</literal>
12552                       </para>
12553                     </entry>
12554                     <entry colname="2">
12555                       <para>
12556                         <literal>A</literal>
12557                       </para>
12558                     </entry>
12559                     <entry colname="3">
12560                       <para>
12561                         <literal>128.9.0.32</literal>
12562                       </para>
12563                     </entry>
12564                   </row>
12565                   <row rowsep="0">
12566                     <entry colname="1">
12567                       <para/>
12568                     </entry>
12569                     <entry colname="2">
12570                       <para>
12571                         <literal>A</literal>
12572                       </para>
12573                     </entry>
12574                     <entry colname="3">
12575                       <para>
12576                         <literal>10.1.0.52</literal>
12577                       </para>
12578                     </entry>
12579                   </row>
12580                   <row rowsep="0">
12581                     <entry colname="1">
12582                       <para>
12583                         <literal>VAXA.ISI.EDU</literal>
12584                       </para>
12585                     </entry>
12586                     <entry colname="2">
12587                       <para>
12588                         <literal>A</literal>
12589                       </para>
12590                     </entry>
12591                     <entry colname="3">
12592                       <para>
12593                         <literal>10.2.0.27</literal>
12594                       </para>
12595                     </entry>
12596                   </row>
12597                   <row rowsep="0">
12598                     <entry colname="1">
12599                       <para/>
12600                     </entry>
12601                     <entry colname="2">
12602                       <para>
12603                         <literal>A</literal>
12604                       </para>
12605                     </entry>
12606                     <entry colname="3">
12607                       <para>
12608                         <literal>128.9.0.33</literal>
12609                       </para>
12610                     </entry>
12611                   </row>
12612                 </tbody>
12613               </tgroup>
12614             </informaltable>
12615             <para>
12616               The MX RRs have an RDATA section which consists of a 16-bit
12617               number followed by a domain name.  The address RRs use a
12618               standard
12619               IP address format to contain a 32-bit internet address.
12620             </para>
12621             <para>
12622               The above example shows six RRs, with two RRs at each of three
12623               domain names.
12624             </para>
12625             <para>
12626               Similarly we might see:
12627             </para>
12628             <informaltable colsep="0" rowsep="0"><tgroup cols="3" colsep="0" rowsep="0" tgroupstyle="4Level-table">
12629                 <colspec colname="1" colnum="1" colsep="0" colwidth="1.491in"/>
12630                 <colspec colname="2" colnum="2" colsep="0" colwidth="1.067in"/>
12631                 <colspec colname="3" colnum="3" colsep="0" colwidth="2.067in"/>
12632                 <tbody>
12633                   <row rowsep="0">
12634                     <entry colname="1">
12635                       <para>
12636                         <literal>XX.LCS.MIT.EDU.</literal>
12637                       </para>
12638                     </entry>
12639                     <entry colname="2">
12640                       <para>
12641                         <literal>IN A</literal>
12642                       </para>
12643                     </entry>
12644                     <entry colname="3">
12645                       <para>
12646                         <literal>10.0.0.44</literal>
12647                       </para>
12648                     </entry>
12649                   </row>
12650                   <row rowsep="0">
12651                     <entry colname="1"/>
12652                     <entry colname="2">
12653                       <para>
12654                         <literal>CH A</literal>
12655                       </para>
12656                     </entry>
12657                     <entry colname="3">
12658                       <para>
12659                         <literal>MIT.EDU. 2420</literal>
12660                       </para>
12661                     </entry>
12662                   </row>
12663                 </tbody>
12664               </tgroup>
12665             </informaltable>
12666             <para>
12667               This example shows two addresses for
12668               <literal>XX.LCS.MIT.EDU</literal>, each of a different class.
12669             </para>
12670           </sect3>
12671         </sect2>
12672
12673         <sect2>
12674           <title>Discussion of MX Records</title>
12675
12676           <para>
12677             As described above, domain servers store information as a
12678             series of resource records, each of which contains a particular
12679             piece of information about a given domain name (which is usually,
12680             but not always, a host). The simplest way to think of a RR is as
12681             a typed pair of data, a domain name matched with a relevant datum,
12682             and stored with some additional type information to help systems
12683             determine when the RR is relevant.
12684           </para>
12685
12686           <para>
12687             MX records are used to control delivery of email. The data
12688             specified in the record is a priority and a domain name. The
12689             priority
12690             controls the order in which email delivery is attempted, with the
12691             lowest number first. If two priorities are the same, a server is
12692             chosen randomly. If no servers at a given priority are responding,
12693             the mail transport agent will fall back to the next largest
12694             priority.
12695             Priority numbers do not have any absolute meaning &mdash; they are
12696             relevant
12697             only respective to other MX records for that domain name. The
12698             domain
12699             name given is the machine to which the mail will be delivered.
12700             It <emphasis>must</emphasis> have an associated address record
12701             (A or AAAA) &mdash; CNAME is not sufficient.
12702           </para>
12703           <para>
12704             For a given domain, if there is both a CNAME record and an
12705             MX record, the MX record is in error, and will be ignored.
12706             Instead,
12707             the mail will be delivered to the server specified in the MX
12708             record
12709             pointed to by the CNAME.
12710             For example:
12711           </para>
12712           <informaltable colsep="0" rowsep="0">
12713             <tgroup cols="5" colsep="0" rowsep="0" tgroupstyle="3Level-table">
12714               <colspec colname="1" colnum="1" colsep="0" colwidth="1.708in"/>
12715               <colspec colname="2" colnum="2" colsep="0" colwidth="0.444in"/>
12716               <colspec colname="3" colnum="3" colsep="0" colwidth="0.444in"/>
12717               <colspec colname="4" colnum="4" colsep="0" colwidth="0.976in"/>
12718               <colspec colname="5" colnum="5" colsep="0" colwidth="1.553in"/>
12719               <tbody>
12720                 <row rowsep="0">
12721                   <entry colname="1">
12722                     <para>
12723                       <literal>example.com.</literal>
12724                     </para>
12725                   </entry>
12726                   <entry colname="2">
12727                     <para>
12728                       <literal>IN</literal>
12729                     </para>
12730                   </entry>
12731                   <entry colname="3">
12732                     <para>
12733                       <literal>MX</literal>
12734                     </para>
12735                   </entry>
12736                   <entry colname="4">
12737                     <para>
12738                       <literal>10</literal>
12739                     </para>
12740                   </entry>
12741                   <entry colname="5">
12742                     <para>
12743                       <literal>mail.example.com.</literal>
12744                     </para>
12745                   </entry>
12746                 </row>
12747                 <row rowsep="0">
12748                   <entry colname="1">
12749                     <para/>
12750                   </entry>
12751                   <entry colname="2">
12752                     <para>
12753                       <literal>IN</literal>
12754                     </para>
12755                   </entry>
12756                   <entry colname="3">
12757                     <para>
12758                       <literal>MX</literal>
12759                     </para>
12760                   </entry>
12761                   <entry colname="4">
12762                     <para>
12763                       <literal>10</literal>
12764                     </para>
12765                   </entry>
12766                   <entry colname="5">
12767                     <para>
12768                       <literal>mail2.example.com.</literal>
12769                     </para>
12770                   </entry>
12771                 </row>
12772                 <row rowsep="0">
12773                   <entry colname="1">
12774                     <para/>
12775                   </entry>
12776                   <entry colname="2">
12777                     <para>
12778                       <literal>IN</literal>
12779                     </para>
12780                   </entry>
12781                   <entry colname="3">
12782                     <para>
12783                       <literal>MX</literal>
12784                     </para>
12785                   </entry>
12786                   <entry colname="4">
12787                     <para>
12788                       <literal>20</literal>
12789                     </para>
12790                   </entry>
12791                   <entry colname="5">
12792                     <para>
12793                       <literal>mail.backup.org.</literal>
12794                     </para>
12795                   </entry>
12796                 </row>
12797                 <row rowsep="0">
12798                   <entry colname="1">
12799                     <para>
12800                       <literal>mail.example.com.</literal>
12801                     </para>
12802                   </entry>
12803                   <entry colname="2">
12804                     <para>
12805                       <literal>IN</literal>
12806                     </para>
12807                   </entry>
12808                   <entry colname="3">
12809                     <para>
12810                       <literal>A</literal>
12811                     </para>
12812                   </entry>
12813                   <entry colname="4">
12814                     <para>
12815                       <literal>10.0.0.1</literal>
12816                     </para>
12817                   </entry>
12818                   <entry colname="5">
12819                     <para/>
12820                   </entry>
12821                 </row>
12822                 <row rowsep="0">
12823                   <entry colname="1">
12824                     <para>
12825                       <literal>mail2.example.com.</literal>
12826                     </para>
12827                   </entry>
12828                   <entry colname="2">
12829                     <para>
12830                       <literal>IN</literal>
12831                     </para>
12832                   </entry>
12833                   <entry colname="3">
12834                     <para>
12835                       <literal>A</literal>
12836                     </para>
12837                   </entry>
12838                   <entry colname="4">
12839                     <para>
12840                       <literal>10.0.0.2</literal>
12841                     </para>
12842                   </entry>
12843                   <entry colname="5">
12844                     <para/>
12845                   </entry>
12846                 </row>
12847               </tbody>
12848             </tgroup>
12849             </informaltable><para>
12850             Mail delivery will be attempted to <literal>mail.example.com</literal> and
12851             <literal>mail2.example.com</literal> (in
12852             any order), and if neither of those succeed, delivery to <literal>mail.backup.org</literal> will
12853             be attempted.
12854           </para>
12855         </sect2>
12856         <sect2 id="Setting_TTLs">
12857           <title>Setting TTLs</title>
12858           <para>
12859             The time-to-live of the RR field is a 32-bit integer represented
12860             in units of seconds, and is primarily used by resolvers when they
12861             cache RRs. The TTL describes how long a RR can be cached before it
12862             should be discarded. The following three types of TTL are
12863             currently
12864             used in a zone file.
12865           </para>
12866           <informaltable colsep="0" rowsep="0">
12867             <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="3Level-table">
12868               <colspec colname="1" colnum="1" colsep="0" colwidth="0.750in"/>
12869               <colspec colname="2" colnum="2" colsep="0" colwidth="4.375in"/>
12870               <tbody>
12871                 <row rowsep="0">
12872                   <entry colname="1">
12873                     <para>
12874                       SOA
12875                     </para>
12876                   </entry>
12877                   <entry colname="2">
12878                     <para>
12879                       The last field in the SOA is the negative
12880                       caching TTL. This controls how long other servers will
12881                       cache no-such-domain
12882                       (NXDOMAIN) responses from you.
12883                     </para>
12884                     <para>
12885                       The maximum time for
12886                       negative caching is 3 hours (3h).
12887                     </para>
12888                   </entry>
12889                 </row>
12890                 <row rowsep="0">
12891                   <entry colname="1">
12892                     <para>
12893                       $TTL
12894                     </para>
12895                   </entry>
12896                   <entry colname="2">
12897                     <para>
12898                       The $TTL directive at the top of the
12899                       zone file (before the SOA) gives a default TTL for every
12900                       RR without
12901                       a specific TTL set.
12902                     </para>
12903                   </entry>
12904                 </row>
12905                 <row rowsep="0">
12906                   <entry colname="1">
12907                     <para>
12908                       RR TTLs
12909                     </para>
12910                   </entry>
12911                   <entry colname="2">
12912                     <para>
12913                       Each RR can have a TTL as the second
12914                       field in the RR, which will control how long other
12915                       servers can cache
12916                       the it.
12917                     </para>
12918                   </entry>
12919                 </row>
12920               </tbody>
12921             </tgroup>
12922           </informaltable>
12923           <para>
12924             All of these TTLs default to units of seconds, though units
12925             can be explicitly specified, for example, <literal>1h30m</literal>.
12926           </para>
12927         </sect2>
12928         <sect2>
12929           <title>Inverse Mapping in IPv4</title>
12930           <para>
12931             Reverse name resolution (that is, translation from IP address
12932             to name) is achieved by means of the <emphasis>in-addr.arpa</emphasis> domain
12933             and PTR records. Entries in the in-addr.arpa domain are made in
12934             least-to-most significant order, read left to right. This is the
12935             opposite order to the way IP addresses are usually written. Thus,
12936             a machine with an IP address of 10.1.2.3 would have a
12937             corresponding
12938             in-addr.arpa name of
12939             3.2.1.10.in-addr.arpa. This name should have a PTR resource record
12940             whose data field is the name of the machine or, optionally,
12941             multiple
12942             PTR records if the machine has more than one name. For example,
12943             in the <optional>example.com</optional> domain:
12944           </para>
12945           <informaltable colsep="0" rowsep="0">
12946             <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="3Level-table">
12947               <colspec colname="1" colnum="1" colsep="0" colwidth="1.125in"/>
12948               <colspec colname="2" colnum="2" colsep="0" colwidth="4.000in"/>
12949               <tbody>
12950                 <row rowsep="0">
12951                   <entry colname="1">
12952                     <para>
12953                       <literal>$ORIGIN</literal>
12954                     </para>
12955                   </entry>
12956                   <entry colname="2">
12957                     <para>
12958                       <literal>2.1.10.in-addr.arpa</literal>
12959                     </para>
12960                   </entry>
12961                 </row>
12962                 <row rowsep="0">
12963                   <entry colname="1">
12964                     <para>
12965                       <literal>3</literal>
12966                     </para>
12967                   </entry>
12968                   <entry colname="2">
12969                     <para>
12970                       <literal>IN PTR foo.example.com.</literal>
12971                     </para>
12972                   </entry>
12973                 </row>
12974               </tbody>
12975             </tgroup>
12976           </informaltable>
12977           <note>
12978             <para>
12979               The <command>$ORIGIN</command> lines in the examples
12980               are for providing context to the examples only &mdash; they do not
12981               necessarily
12982               appear in the actual usage. They are only used here to indicate
12983               that the example is relative to the listed origin.
12984             </para>
12985           </note>
12986         </sect2>
12987         <sect2>
12988           <title>Other Zone File Directives</title>
12989           <para>
12990             The Master File Format was initially defined in RFC 1035 and
12991             has subsequently been extended. While the Master File Format
12992             itself
12993             is class independent all records in a Master File must be of the
12994             same
12995             class.
12996           </para>
12997           <para>
12998             Master File Directives include <command>$ORIGIN</command>, <command>$INCLUDE</command>,
12999             and <command>$TTL.</command>
13000           </para>
13001           <sect3>
13002             <title>The <command>@</command> (at-sign)</title>
13003             <para>
13004               When used in the label (or name) field, the asperand or
13005               at-sign (@) symbol represents the current origin.
13006               At the start of the zone file, it is the 
13007               &lt;<varname>zone_name</varname>&gt; (followed by
13008               trailing dot).
13009             </para>
13010           </sect3>
13011           <sect3>
13012             <title>The <command>$ORIGIN</command> Directive</title>
13013             <para>
13014               Syntax: <command>$ORIGIN</command>
13015               <replaceable>domain-name</replaceable>
13016               <optional><replaceable>comment</replaceable></optional>
13017             </para>
13018             <para><command>$ORIGIN</command>
13019               sets the domain name that will be appended to any
13020               unqualified records. When a zone is first read in there
13021               is an implicit <command>$ORIGIN</command>
13022               &lt;<varname>zone_name</varname>&gt;<command>.</command>
13023               (followed by trailing dot).
13024               The current <command>$ORIGIN</command> is appended to
13025               the domain specified in the <command>$ORIGIN</command>
13026               argument if it is not absolute.
13027             </para>
13028
13029 <programlisting>
13030 $ORIGIN example.com.
13031 WWW     CNAME   MAIN-SERVER
13032 </programlisting>
13033
13034             <para>
13035               is equivalent to
13036             </para>
13037
13038 <programlisting>
13039 WWW.EXAMPLE.COM. CNAME MAIN-SERVER.EXAMPLE.COM.
13040 </programlisting>
13041
13042           </sect3>
13043           <sect3>
13044             <title>The <command>$INCLUDE</command> Directive</title>
13045             <para>
13046               Syntax: <command>$INCLUDE</command>
13047               <replaceable>filename</replaceable>
13048               <optional>
13049 <replaceable>origin</replaceable> </optional>
13050               <optional> <replaceable>comment</replaceable> </optional>
13051             </para>
13052             <para>
13053               Read and process the file <filename>filename</filename> as
13054               if it were included into the file at this point.  If <command>origin</command> is
13055               specified the file is processed with <command>$ORIGIN</command> set
13056               to that value, otherwise the current <command>$ORIGIN</command> is
13057               used.
13058             </para>
13059             <para>
13060               The origin and the current domain name
13061               revert to the values they had prior to the <command>$INCLUDE</command> once
13062               the file has been read.
13063             </para>
13064             <note>
13065               <para>
13066                 RFC 1035 specifies that the current origin should be restored
13067                 after
13068                 an <command>$INCLUDE</command>, but it is silent
13069                 on whether the current
13070                 domain name should also be restored.  BIND 9 restores both of
13071                 them.
13072                 This could be construed as a deviation from RFC 1035, a
13073                 feature, or both.
13074               </para>
13075             </note>
13076           </sect3>
13077           <sect3>
13078             <title>The <command>$TTL</command> Directive</title>
13079             <para>
13080               Syntax: <command>$TTL</command>
13081               <replaceable>default-ttl</replaceable>
13082               <optional>
13083 <replaceable>comment</replaceable> </optional>
13084             </para>
13085             <para>
13086               Set the default Time To Live (TTL) for subsequent records
13087               with undefined TTLs. Valid TTLs are of the range 0-2147483647
13088               seconds.
13089             </para>
13090             <para><command>$TTL</command>
13091                is defined in RFC 2308.
13092             </para>
13093           </sect3>
13094         </sect2>
13095         <sect2>
13096           <title><acronym>BIND</acronym> Master File Extension: the  <command>$GENERATE</command> Directive</title>
13097           <para>
13098             Syntax: <command>$GENERATE</command>
13099             <replaceable>range</replaceable>
13100             <replaceable>lhs</replaceable>
13101             <optional><replaceable>ttl</replaceable></optional>
13102             <optional><replaceable>class</replaceable></optional>
13103             <replaceable>type</replaceable>
13104             <replaceable>rhs</replaceable>
13105             <optional><replaceable>comment</replaceable></optional>
13106           </para>
13107           <para><command>$GENERATE</command>
13108             is used to create a series of resource records that only
13109             differ from each other by an
13110             iterator. <command>$GENERATE</command> can be used to
13111             easily generate the sets of records required to support
13112             sub /24 reverse delegations described in RFC 2317:
13113             Classless IN-ADDR.ARPA delegation.
13114           </para>
13115
13116 <programlisting>$ORIGIN 0.0.192.IN-ADDR.ARPA.
13117 $GENERATE 1-2 @ NS SERVER$.EXAMPLE.
13118 $GENERATE 1-127 $ CNAME $.0</programlisting>
13119
13120           <para>
13121             is equivalent to
13122           </para>
13123
13124 <programlisting>0.0.0.192.IN-ADDR.ARPA. NS SERVER1.EXAMPLE.
13125 0.0.0.192.IN-ADDR.ARPA. NS SERVER2.EXAMPLE.
13126 1.0.0.192.IN-ADDR.ARPA. CNAME 1.0.0.0.192.IN-ADDR.ARPA.
13127 2.0.0.192.IN-ADDR.ARPA. CNAME 2.0.0.0.192.IN-ADDR.ARPA.
13128 ...
13129 127.0.0.192.IN-ADDR.ARPA. CNAME 127.0.0.0.192.IN-ADDR.ARPA.
13130 </programlisting>
13131
13132            <para>
13133             Generate a set of A and MX records.  Note the MX's right hand
13134             side is a quoted string.  The quotes will be stripped when the
13135             right hand side is processed.
13136            </para>
13137
13138 <programlisting>
13139 $ORIGIN EXAMPLE.
13140 $GENERATE 1-127 HOST-$ A 1.2.3.$
13141 $GENERATE 1-127 HOST-$ MX "0 ."</programlisting>
13142
13143           <para>
13144             is equivalent to
13145           </para>
13146
13147 <programlisting>HOST-1.EXAMPLE.   A  1.2.3.1
13148 HOST-1.EXAMPLE.   MX 0 .
13149 HOST-2.EXAMPLE.   A  1.2.3.2
13150 HOST-2.EXAMPLE.   MX 0 .
13151 HOST-3.EXAMPLE.   A  1.2.3.3
13152 HOST-3.EXAMPLE.   MX 0 .
13153 ...
13154 HOST-127.EXAMPLE. A  1.2.3.127
13155 HOST-127.EXAMPLE. MX 0 .
13156 </programlisting>
13157
13158           <informaltable colsep="0" rowsep="0">
13159             <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="3Level-table">
13160                         <colspec colname="1" colnum="1" colsep="0" colwidth="0.875in"/>
13161               <colspec colname="2" colnum="2" colsep="0" colwidth="4.250in"/>
13162               <tbody>
13163                 <row rowsep="0">
13164                   <entry colname="1">
13165                     <para><command>range</command></para>
13166                   </entry>
13167                   <entry colname="2">
13168                     <para>
13169                       This can be one of two forms: start-stop
13170                       or start-stop/step. If the first form is used, then step
13171                       is set to
13172                       1. All of start, stop and step must be positive.
13173                     </para>
13174                   </entry>
13175                 </row>
13176                 <row rowsep="0">
13177                   <entry colname="1">
13178                     <para><command>lhs</command></para>
13179                   </entry>
13180                   <entry colname="2">
13181                     <para>This
13182                       describes the owner name of the resource records
13183                       to be created.  Any single <command>$</command>
13184                       (dollar sign)
13185                       symbols within the <command>lhs</command> string
13186                       are replaced by the iterator value.
13187
13188                       To get a $ in the output, you need to escape the
13189                       <command>$</command> using a backslash
13190                       <command>\</command>,
13191                       e.g. <command>\$</command>. The
13192                       <command>$</command> may optionally be followed
13193                       by modifiers which change the offset from the
13194                       iterator, field width and base.
13195
13196                       Modifiers are introduced by a
13197                       <command>{</command> (left brace) immediately following the
13198                       <command>$</command> as
13199                       <command>${offset[,width[,base]]}</command>.
13200                       For example, <command>${-20,3,d}</command>
13201                       subtracts 20 from the current value, prints the
13202                       result as a decimal in a zero-padded field of
13203                       width 3.
13204
13205                       Available output forms are decimal
13206                       (<command>d</command>), octal
13207                       (<command>o</command>), hexadecimal
13208                       (<command>x</command> or <command>X</command>
13209                       for uppercase) and nibble
13210                       (<command>n</command> or <command>N</command>\
13211                       for uppercase).  The default modifier is
13212                       <command>${0,0,d}</command>.  If the
13213                       <command>lhs</command> is not absolute, the
13214                       current <command>$ORIGIN</command> is appended
13215                       to the name.
13216                     </para>
13217                     <para>
13218                       In nibble mode the value will be treated as
13219                       if it was a reversed hexadecimal string
13220                       with each hexadecimal digit as a separate
13221                       label.  The width field includes the label
13222                       separator.
13223                     </para>
13224                     <para>
13225                       For compatibility with earlier versions,
13226                       <command>$$</command> is still recognized as
13227                       indicating a literal $ in the output.
13228                     </para>
13229                   </entry>
13230                 </row>
13231                 <row rowsep="0">
13232                   <entry colname="1">
13233                     <para><command>ttl</command></para>
13234                   </entry>
13235                   <entry colname="2">
13236                     <para>
13237                       Specifies the time-to-live of the generated records. If
13238                       not specified this will be inherited using the
13239                       normal TTL inheritance rules.
13240                     </para>
13241                     <para><command>class</command>
13242                       and <command>ttl</command> can be
13243                       entered in either order.
13244                     </para>
13245                   </entry>
13246                 </row>
13247                 <row rowsep="0">
13248                   <entry colname="1">
13249                     <para><command>class</command></para>
13250                   </entry>
13251                   <entry colname="2">
13252                     <para>
13253                       Specifies the class of the generated records.
13254                       This must match the zone class if it is
13255                       specified.
13256                     </para>
13257                     <para><command>class</command>
13258                       and <command>ttl</command> can be
13259                       entered in either order.
13260                     </para>
13261                   </entry>
13262                 </row>
13263                 <row rowsep="0">
13264                   <entry colname="1">
13265                     <para><command>type</command></para>
13266                   </entry>
13267                   <entry colname="2">
13268                     <para>
13269                       Any valid type.
13270                     </para>
13271                   </entry>
13272                 </row>
13273                 <row rowsep="0">
13274                   <entry colname="1">
13275                     <para><command>rhs</command></para>
13276                   </entry>
13277                   <entry colname="2">
13278                     <para>
13279                       <command>rhs</command>, optionally, quoted string.
13280                     </para>
13281                   </entry>
13282                 </row>
13283               </tbody>
13284             </tgroup>
13285           </informaltable>
13286           <para>
13287             The <command>$GENERATE</command> directive is a <acronym>BIND</acronym> extension
13288             and not part of the standard zone file format.
13289           </para>
13290           <para>
13291             BIND 8 does not support the optional TTL and CLASS fields.
13292           </para>
13293         </sect2>
13294
13295         <sect2 id="zonefile_format">
13296           <title>Additional File Formats</title>
13297           <para>
13298             In addition to the standard textual format, BIND 9
13299             supports the ability to read or dump to zone files in
13300             other formats.  The <constant>raw</constant> format is
13301             currently available as an additional format.  It is a
13302             binary format representing BIND 9's internal data
13303             structure directly, thereby remarkably improving the
13304             loading time.
13305           </para>
13306           <para>
13307             For a primary server, a zone file in the
13308             <constant>raw</constant> format is expected to be
13309             generated from a textual zone file by the
13310             <command>named-compilezone</command> command.  For a
13311             secondary server or for a dynamic zone, it is automatically
13312             generated (if this format is specified by the
13313             <command>masterfile-format</command> option) when
13314             <command>named</command> dumps the zone contents after
13315             zone transfer or when applying prior updates.
13316           </para>
13317           <para>
13318             If a zone file in a binary format needs manual modification,
13319             it first must be converted to a textual form by the
13320             <command>named-compilezone</command> command.  All
13321             necessary modification should go to the text file, which
13322             should then be converted to the binary form by the
13323             <command>named-compilezone</command> command again.
13324           </para>
13325           <para>
13326              Although the <constant>raw</constant> format uses the
13327              network byte order and avoids architecture-dependent
13328              data alignment so that it is as much portable as
13329              possible, it is primarily expected to be used inside
13330              the same single system.  In order to export a zone
13331              file in the <constant>raw</constant> format or make a
13332              portable backup of the file, it is recommended to
13333              convert the file to the standard textual representation.
13334           </para>
13335         </sect2>
13336       </sect1>
13337
13338       <sect1 id="statistics">
13339         <title>BIND9 Statistics</title>
13340         <para>
13341           <acronym>BIND</acronym> 9 maintains lots of statistics
13342           information and provides several interfaces for users to
13343           get access to the statistics.
13344           The available statistics include all statistics counters
13345           that were available in <acronym>BIND</acronym> 8 and
13346           are meaningful in <acronym>BIND</acronym> 9,
13347           and other information that is considered useful.
13348         </para>
13349
13350         <para>
13351           The statistics information is categorized into the following
13352           sections.
13353         </para>
13354
13355         <informaltable frame="all">
13356           <tgroup cols="2">
13357             <colspec colname="1" colnum="1" colsep="0" colwidth="3.300in"/>
13358             <colspec colname="2" colnum="2" colsep="0" colwidth="2.625in"/>
13359             <tbody>
13360
13361               <row rowsep="0">
13362                 <entry colname="1">
13363                   <para>Incoming Requests</para>
13364                 </entry>
13365                 <entry colname="2">
13366                   <para>
13367                     The number of incoming DNS requests for each OPCODE.
13368                   </para>
13369                 </entry>
13370               </row>
13371
13372               <row rowsep="0">
13373                 <entry colname="1">
13374                   <para>Incoming Queries</para>
13375                 </entry>
13376                 <entry colname="2">
13377                   <para>
13378                     The number of incoming queries for each RR type.
13379                   </para>
13380                 </entry>
13381               </row>
13382
13383               <row rowsep="0">
13384                 <entry colname="1">
13385                   <para>Outgoing Queries</para>
13386                 </entry>
13387                 <entry colname="2">
13388                   <para>
13389                     The number of outgoing queries for each RR
13390                     type sent from the internal resolver.
13391                     Maintained per view.
13392                   </para>
13393                 </entry>
13394               </row>
13395
13396               <row rowsep="0">
13397                 <entry colname="1">
13398                   <para>Name Server Statistics</para>
13399                 </entry>
13400                 <entry colname="2">
13401                   <para>
13402                     Statistics counters about incoming request processing.
13403                   </para>
13404                 </entry>
13405               </row>
13406
13407               <row rowsep="0">
13408                 <entry colname="1">
13409                   <para>Zone Maintenance Statistics</para>
13410                 </entry>
13411                 <entry colname="2">
13412                   <para>
13413                     Statistics counters regarding zone maintenance
13414                     operations such as zone transfers.
13415                   </para>
13416                 </entry>
13417               </row>
13418
13419               <row rowsep="0">
13420                 <entry colname="1">
13421                   <para>Resolver Statistics</para>
13422                 </entry>
13423                 <entry colname="2">
13424                   <para>
13425                     Statistics counters about name resolution
13426                     performed in the internal resolver.
13427                     Maintained per view.
13428                   </para>
13429                 </entry>
13430               </row>
13431
13432               <row rowsep="0">
13433                 <entry colname="1">
13434                   <para>Cache DB RRsets</para>
13435                 </entry>
13436                 <entry colname="2">
13437                   <para>
13438                     The number of RRsets per RR type and nonexistent
13439                     names stored in the cache database.
13440                     If the exclamation mark (!) is printed for a RR
13441                     type, it means that particular type of RRset is
13442                     known to be nonexistent (this is also known as
13443                     "NXRRSET").
13444                     Maintained per view.
13445                   </para>
13446                 </entry>
13447               </row>
13448
13449               <row rowsep="0">
13450                 <entry colname="1">
13451                   <para>Socket I/O Statistics</para>
13452                 </entry>
13453                 <entry colname="2">
13454                   <para>
13455                     Statistics counters about network related events.
13456                   </para>
13457                 </entry>
13458               </row>
13459
13460             </tbody>
13461           </tgroup>
13462         </informaltable>
13463
13464         <para>
13465           A subset of Name Server Statistics is collected and shown
13466           per zone for which the server has the authority when
13467           <command>zone-statistics</command> is set to
13468           <userinput>yes</userinput>.
13469           These statistics counters are shown with their zone and view
13470           names.
13471           In some cases the view names are omitted for the default view.
13472         </para>
13473
13474         <para>
13475           There are currently two user interfaces to get access to the
13476           statistics.
13477           One is in the plain text format dumped to the file specified
13478           by the <command>statistics-file</command> configuration option.
13479           The other is remotely accessible via a statistics channel
13480           when the <command>statistics-channels</command> statement
13481           is specified in the configuration file
13482           (see <xref linkend="statschannels"/>.)
13483         </para>
13484
13485         <sect3 id="statsfile">
13486           <title>The Statistics File</title>
13487           <para>
13488             The text format statistics dump begins with a line, like:
13489           </para>
13490           <para>
13491             <command>+++ Statistics Dump +++ (973798949)</command>
13492           </para>
13493           <para>
13494             The number in parentheses is a standard
13495             Unix-style timestamp, measured as seconds since January 1, 1970.
13496
13497             Following
13498             that line is a set of statistics information, which is categorized
13499             as described above.
13500             Each section begins with a line, like:
13501           </para>
13502
13503           <para>
13504             <command>++ Name Server Statistics ++</command>
13505           </para>
13506
13507           <para>
13508             Each section consists of lines, each containing the statistics
13509             counter value followed by its textual description.
13510             See below for available counters.
13511             For brevity, counters that have a value of 0 are not shown
13512             in the statistics file.
13513           </para>
13514
13515           <para>
13516             The statistics dump ends with the line where the
13517             number is identical to the number in the beginning line; for example:
13518           </para>
13519           <para>
13520             <command>--- Statistics Dump --- (973798949)</command>
13521           </para>
13522         </sect3>
13523
13524         <sect2 id="statistics_counters">
13525           <title>Statistics Counters</title>
13526           <para>
13527             The following tables summarize statistics counters that
13528             <acronym>BIND</acronym> 9 provides.
13529             For each row of the tables, the leftmost column is the
13530             abbreviated symbol name of that counter.
13531             These symbols are shown in the statistics information
13532             accessed via an HTTP statistics channel.
13533             The rightmost column gives the description of the counter,
13534             which is also shown in the statistics file
13535             (but, in this document, possibly with slight modification
13536             for better readability).
13537             Additional notes may also be provided in this column.
13538             When a middle column exists between these two columns,
13539             it gives the corresponding counter name of the
13540             <acronym>BIND</acronym> 8 statistics, if applicable.
13541           </para>
13542
13543           <sect3>
13544             <title>Name Server Statistics Counters</title>
13545
13546             <informaltable colsep="0" rowsep="0">
13547               <tgroup cols="3" colsep="0" rowsep="0" tgroupstyle="4Level-table">
13548                 <colspec colname="1" colnum="1" colsep="0" colwidth="1.150in"/>
13549                 <colspec colname="2" colnum="2" colsep="0" colwidth="1.150in"/>
13550                 <colspec colname="3" colnum="3" colsep="0" colwidth="3.350in"/>
13551                 <tbody>
13552                   <row>
13553                     <entry colname="1">
13554                       <para>
13555                         <emphasis>Symbol</emphasis>
13556                       </para>
13557                     </entry>
13558                     <entry colname="2">
13559                       <para>
13560                         <emphasis>BIND8 Symbol</emphasis>
13561                       </para>
13562                     </entry>
13563                     <entry colname="3">
13564                       <para>
13565                         <emphasis>Description</emphasis>
13566                       </para>
13567                     </entry>
13568                   </row>
13569
13570                   <row rowsep="0">
13571                     <entry colname="1">
13572                       <para><command>Requestv4</command></para>
13573                     </entry>
13574                     <entry colname="2">
13575                       <para><command>RQ</command></para>
13576                     </entry>
13577                     <entry colname="3">
13578                       <para>
13579                         IPv4 requests received.
13580                         Note: this also counts non query requests.
13581                       </para>
13582                     </entry>
13583                   </row>
13584                   <row rowsep="0">
13585                     <entry colname="1">
13586                       <para><command>Requestv6</command></para>
13587                     </entry>
13588                     <entry colname="2">
13589                       <para><command>RQ</command></para>
13590                     </entry>
13591                     <entry colname="3">
13592                       <para>
13593                         IPv6 requests received.
13594                         Note: this also counts non query requests.
13595                       </para>
13596                     </entry>
13597                   </row>
13598                   <row rowsep="0">
13599                     <entry colname="1">
13600                       <para><command>ReqEdns0</command></para>
13601                     </entry>
13602                     <entry colname="2">
13603                       <para><command></command></para>
13604                     </entry>
13605                     <entry colname="3">
13606                       <para>
13607                         Requests with EDNS(0) received.
13608                       </para>
13609                     </entry>
13610                   </row>
13611                   <row rowsep="0">
13612                     <entry colname="1">
13613                       <para><command>ReqBadEDNSVer</command></para>
13614                     </entry>
13615                     <entry colname="2">
13616                       <para><command></command></para>
13617                     </entry>
13618                     <entry colname="3">
13619                       <para>
13620                         Requests with unsupported EDNS version received.
13621                       </para>
13622                     </entry>
13623                   </row>
13624                   <row rowsep="0">
13625                     <entry colname="1">
13626                       <para><command>ReqTSIG</command></para>
13627                     </entry>
13628                     <entry colname="2">
13629                       <para><command></command></para>
13630                     </entry>
13631                     <entry colname="3">
13632                       <para>
13633                         Requests with TSIG received.
13634                       </para>
13635                     </entry>
13636                   </row>
13637                   <row rowsep="0">
13638                     <entry colname="1">
13639                       <para><command>ReqSIG0</command></para>
13640                     </entry>
13641                     <entry colname="2">
13642                       <para><command></command></para>
13643                     </entry>
13644                     <entry colname="3">
13645                       <para>
13646                         Requests with SIG(0) received.
13647                       </para>
13648                     </entry>
13649                   </row>
13650                   <row rowsep="0">
13651                     <entry colname="1">
13652                       <para><command>ReqBadSIG</command></para>
13653                     </entry>
13654                     <entry colname="2">
13655                       <para><command></command></para>
13656                     </entry>
13657                     <entry colname="3">
13658                       <para>
13659                         Requests with invalid (TSIG or SIG(0)) signature.
13660                       </para>
13661                     </entry>
13662                   </row>
13663                   <row rowsep="0">
13664                     <entry colname="1">
13665                       <para><command>ReqTCP</command></para>
13666                     </entry>
13667                     <entry colname="2">
13668                       <para><command>RTCP</command></para>
13669                     </entry>
13670                     <entry colname="3">
13671                       <para>
13672                         TCP requests received.
13673                       </para>
13674                     </entry>
13675                   </row>
13676                   <row rowsep="0">
13677                     <entry colname="1">
13678                       <para><command>AuthQryRej</command></para>
13679                     </entry>
13680                     <entry colname="2">
13681                       <para><command>RUQ</command></para>
13682                     </entry>
13683                     <entry colname="3">
13684                       <para>
13685                         Authoritative (non recursive) queries rejected.
13686                       </para>
13687                     </entry>
13688                   </row>
13689                   <row rowsep="0">
13690                     <entry colname="1">
13691                       <para><command>RecQryRej</command></para>
13692                     </entry>
13693                     <entry colname="2">
13694                       <para><command>RURQ</command></para>
13695                     </entry>
13696                     <entry colname="3">
13697                       <para>
13698                         Recursive queries rejected.
13699                       </para>
13700                     </entry>
13701                   </row>
13702                   <row rowsep="0">
13703                     <entry colname="1">
13704                       <para><command>XfrRej</command></para>
13705                     </entry>
13706                     <entry colname="2">
13707                       <para><command>RUXFR</command></para>
13708                     </entry>
13709                     <entry colname="3">
13710                       <para>
13711                         Zone transfer requests rejected.
13712                       </para>
13713                     </entry>
13714                   </row>
13715                   <row rowsep="0">
13716                     <entry colname="1">
13717                       <para><command>UpdateRej</command></para>
13718                     </entry>
13719                     <entry colname="2">
13720                       <para><command>RUUpd</command></para>
13721                     </entry>
13722                     <entry colname="3">
13723                       <para>
13724                         Dynamic update requests rejected.
13725                       </para>
13726                     </entry>
13727                   </row>
13728                   <row rowsep="0">
13729                     <entry colname="1">
13730                       <para><command>Response</command></para>
13731                     </entry>
13732                     <entry colname="2">
13733                       <para><command>SAns</command></para>
13734                     </entry>
13735                     <entry colname="3">
13736                       <para>
13737                         Responses sent.
13738                       </para>
13739                     </entry>
13740                   </row>
13741                   <row rowsep="0">
13742                     <entry colname="1">
13743                       <para><command>RespTruncated</command></para>
13744                     </entry>
13745                     <entry colname="2">
13746                       <para><command></command></para>
13747                     </entry>
13748                     <entry colname="3">
13749                       <para>
13750                         Truncated responses sent.
13751                       </para>
13752                     </entry>
13753                   </row>
13754                   <row rowsep="0">
13755                     <entry colname="1">
13756                       <para><command>RespEDNS0</command></para>
13757                     </entry>
13758                     <entry colname="2">
13759                       <para><command></command></para>
13760                     </entry>
13761                     <entry colname="3">
13762                       <para>
13763                         Responses with EDNS(0) sent.
13764                       </para>
13765                     </entry>
13766                   </row>
13767                   <row rowsep="0">
13768                     <entry colname="1">
13769                       <para><command>RespTSIG</command></para>
13770                     </entry>
13771                     <entry colname="2">
13772                       <para><command></command></para>
13773                     </entry>
13774                     <entry colname="3">
13775                       <para>
13776                         Responses with TSIG sent.
13777                       </para>
13778                     </entry>
13779                   </row>
13780                   <row rowsep="0">
13781                     <entry colname="1">
13782                       <para><command>RespSIG0</command></para>
13783                     </entry>
13784                     <entry colname="2">
13785                       <para><command></command></para>
13786                     </entry>
13787                     <entry colname="3">
13788                       <para>
13789                         Responses with SIG(0) sent.
13790                       </para>
13791                     </entry>
13792                   </row>
13793                   <row rowsep="0">
13794                     <entry colname="1">
13795                       <para><command>QrySuccess</command></para>
13796                     </entry>
13797                     <entry colname="2">
13798                       <para><command></command></para>
13799                     </entry>
13800                     <entry colname="3">
13801                       <para>
13802                         Queries resulted in a successful answer.
13803                         This means the query which returns a NOERROR response
13804                         with at least one answer RR.
13805                         This corresponds to the
13806                         <command>success</command> counter
13807                         of previous versions of
13808                         <acronym>BIND</acronym> 9.
13809                       </para>
13810                     </entry>
13811                   </row>
13812                   <row rowsep="0">
13813                     <entry colname="1">
13814                       <para><command>QryAuthAns</command></para>
13815                     </entry>
13816                     <entry colname="2">
13817                       <para><command></command></para>
13818                     </entry>
13819                     <entry colname="3">
13820                       <para>
13821                         Queries resulted in authoritative answer.
13822                       </para>
13823                     </entry>
13824                   </row>
13825                   <row rowsep="0">
13826                     <entry colname="1">
13827                       <para><command>QryNoauthAns</command></para>
13828                     </entry>
13829                     <entry colname="2">
13830                       <para><command>SNaAns</command></para>
13831                     </entry>
13832                     <entry colname="3">
13833                       <para>
13834                         Queries resulted in non authoritative answer.
13835                       </para>
13836                     </entry>
13837                   </row>
13838                   <row rowsep="0">
13839                     <entry colname="1">
13840                       <para><command>QryReferral</command></para>
13841                     </entry>
13842                     <entry colname="2">
13843                       <para><command></command></para>
13844                     </entry>
13845                     <entry colname="3">
13846                       <para>
13847                         Queries resulted in referral answer.
13848                         This corresponds to the
13849                         <command>referral</command> counter
13850                         of previous versions of
13851                         <acronym>BIND</acronym> 9.
13852                       </para>
13853                     </entry>
13854                   </row>
13855                   <row rowsep="0">
13856                     <entry colname="1">
13857                       <para><command>QryNxrrset</command></para>
13858                     </entry>
13859                     <entry colname="2">
13860                       <para><command></command></para>
13861                     </entry>
13862                     <entry colname="3">
13863                       <para>
13864                         Queries resulted in NOERROR responses with no data.
13865                         This corresponds to the
13866                         <command>nxrrset</command> counter
13867                         of previous versions of
13868                         <acronym>BIND</acronym> 9.
13869                       </para>
13870                     </entry>
13871                   </row>
13872                   <row rowsep="0">
13873                     <entry colname="1">
13874                       <para><command>QrySERVFAIL</command></para>
13875                     </entry>
13876                     <entry colname="2">
13877                       <para><command>SFail</command></para>
13878                     </entry>
13879                     <entry colname="3">
13880                       <para>
13881                         Queries resulted in SERVFAIL.
13882                       </para>
13883                     </entry>
13884                   </row>
13885                   <row rowsep="0">
13886                     <entry colname="1">
13887                       <para><command>QryFORMERR</command></para>
13888                     </entry>
13889                     <entry colname="2">
13890                       <para><command>SFErr</command></para>
13891                     </entry>
13892                     <entry colname="3">
13893                       <para>
13894                         Queries resulted in FORMERR.
13895                       </para>
13896                     </entry>
13897                   </row>
13898                   <row rowsep="0">
13899                     <entry colname="1">
13900                       <para><command>QryNXDOMAIN</command></para>
13901                     </entry>
13902                     <entry colname="2">
13903                       <para><command>SNXD</command></para>
13904                     </entry>
13905                     <entry colname="3">
13906                       <para>
13907                         Queries resulted in NXDOMAIN.
13908                         This corresponds to the
13909                         <command>nxdomain</command> counter
13910                         of previous versions of
13911                         <acronym>BIND</acronym> 9.
13912                       </para>
13913                     </entry>
13914                   </row>
13915                   <row rowsep="0">
13916                     <entry colname="1">
13917                       <para><command>QryRecursion</command></para>
13918                     </entry>
13919                     <entry colname="2">
13920                       <para><command>RFwdQ</command></para>
13921                     </entry>
13922                     <entry colname="3">
13923                       <para>
13924                         Queries which caused the server
13925                         to perform recursion in order to find the final answer.
13926                         This corresponds to the
13927                         <command>recursion</command> counter
13928                         of previous versions of
13929                         <acronym>BIND</acronym> 9.
13930                       </para>
13931                     </entry>
13932                   </row>
13933                   <row rowsep="0">
13934                     <entry colname="1">
13935                       <para><command>QryDuplicate</command></para>
13936                     </entry>
13937                     <entry colname="2">
13938                       <para><command>RDupQ</command></para>
13939                     </entry>
13940                     <entry colname="3">
13941                       <para>
13942                         Queries which the server attempted to
13943                         recurse but discovered an existing query with the same
13944                         IP address, port, query ID, name, type and class
13945                         already being processed.
13946                         This corresponds to the
13947                         <command>duplicate</command> counter
13948                         of previous versions of
13949                         <acronym>BIND</acronym> 9.
13950                       </para>
13951                     </entry>
13952                   </row>
13953                   <row rowsep="0">
13954                     <entry colname="1">
13955                       <para><command>QryDropped</command></para>
13956                     </entry>
13957                     <entry colname="2">
13958                       <para><command></command></para>
13959                     </entry>
13960                     <entry colname="3">
13961                       <para>
13962                         Recursive queries for which the server
13963                         discovered an excessive number of existing
13964                         recursive queries for the same name, type and
13965                         class and were subsequently dropped.
13966                         This is the number of dropped queries due to
13967                         the reason explained with the
13968                         <command>clients-per-query</command>
13969                         and
13970                         <command>max-clients-per-query</command>
13971                         options
13972                         (see the description about
13973                         <xref linkend="clients-per-query"/>.)
13974                         This corresponds to the
13975                         <command>dropped</command> counter
13976                         of previous versions of
13977                         <acronym>BIND</acronym> 9.
13978                       </para>
13979                     </entry>
13980                   </row>
13981                   <row rowsep="0">
13982                     <entry colname="1">
13983                       <para><command>QryFailure</command></para>
13984                     </entry>
13985                     <entry colname="2">
13986                       <para><command></command></para>
13987                     </entry>
13988                     <entry colname="3">
13989                       <para>
13990                         Other query failures.
13991                         This corresponds to the
13992                         <command>failure</command> counter
13993                         of previous versions of
13994                         <acronym>BIND</acronym> 9.
13995                         Note: this counter is provided mainly for
13996                         backward compatibility with the previous versions.
13997                         Normally a more fine-grained counters such as
13998                         <command>AuthQryRej</command> and
13999                         <command>RecQryRej</command>
14000                         that would also fall into this counter are provided,
14001                         and so this counter would not be of much
14002                         interest in practice.
14003                       </para>
14004                     </entry>
14005                   </row>
14006                   <row rowsep="0">
14007                     <entry colname="1">
14008                       <para><command>XfrReqDone</command></para>
14009                     </entry>
14010                     <entry colname="2">
14011                       <para><command></command></para>
14012                     </entry>
14013                     <entry colname="3">
14014                       <para>
14015                         Requested zone transfers completed.
14016                       </para>
14017                     </entry>
14018                   </row>
14019                   <row rowsep="0">
14020                     <entry colname="1">
14021                       <para><command>UpdateReqFwd</command></para>
14022                     </entry>
14023                     <entry colname="2">
14024                       <para><command></command></para>
14025                     </entry>
14026                     <entry colname="3">
14027                       <para>
14028                         Update requests forwarded.
14029                       </para>
14030                     </entry>
14031                   </row>
14032                   <row rowsep="0">
14033                     <entry colname="1">
14034                       <para><command>UpdateRespFwd</command></para>
14035                     </entry>
14036                     <entry colname="2">
14037                       <para><command></command></para>
14038                     </entry>
14039                     <entry colname="3">
14040                       <para>
14041                         Update responses forwarded.
14042                       </para>
14043                     </entry>
14044                   </row>
14045                   <row rowsep="0">
14046                     <entry colname="1">
14047                       <para><command>UpdateFwdFail</command></para>
14048                     </entry>
14049                     <entry colname="2">
14050                       <para><command></command></para>
14051                     </entry>
14052                     <entry colname="3">
14053                       <para>
14054                         Dynamic update forward failed.
14055                       </para>
14056                     </entry>
14057                   </row>
14058                   <row rowsep="0">
14059                     <entry colname="1">
14060                       <para><command>UpdateDone</command></para>
14061                     </entry>
14062                     <entry colname="2">
14063                       <para><command></command></para>
14064                     </entry>
14065                     <entry colname="3">
14066                       <para>
14067                         Dynamic updates completed.
14068                       </para>
14069                     </entry>
14070                   </row>
14071                   <row rowsep="0">
14072                     <entry colname="1">
14073                       <para><command>UpdateFail</command></para>
14074                     </entry>
14075                     <entry colname="2">
14076                       <para><command></command></para>
14077                     </entry>
14078                     <entry colname="3">
14079                       <para>
14080                         Dynamic updates failed.
14081                       </para>
14082                     </entry>
14083                   </row>
14084                   <row rowsep="0">
14085                     <entry colname="1">
14086                       <para><command>UpdateBadPrereq</command></para>
14087                     </entry>
14088                     <entry colname="2">
14089                       <para><command></command></para>
14090                     </entry>
14091                     <entry colname="3">
14092                       <para>
14093                         Dynamic updates rejected due to prerequisite failure.
14094                       </para>
14095                     </entry>
14096                   </row>
14097                 </tbody>
14098               </tgroup>
14099             </informaltable>
14100           </sect3>
14101
14102           <sect3>
14103             <title>Zone Maintenance Statistics Counters</title>
14104
14105             <informaltable colsep="0" rowsep="0">
14106               <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
14107                 <colspec colname="1" colnum="1" colsep="0" colwidth="1.150in"/>
14108                 <colspec colname="2" colnum="2" colsep="0" colwidth="3.350in"/>
14109                 <tbody>
14110                   <row>
14111                     <entry colname="1">
14112                       <para>
14113                         <emphasis>Symbol</emphasis>
14114                       </para>
14115                     </entry>
14116                     <entry colname="2">
14117                       <para>
14118                         <emphasis>Description</emphasis>
14119                       </para>
14120                     </entry>
14121                   </row>
14122
14123                   <row rowsep="0">
14124                     <entry colname="1">
14125                       <para><command>NotifyOutv4</command></para>
14126                     </entry>
14127                     <entry colname="2">
14128                       <para>
14129                         IPv4 notifies sent.
14130                       </para>
14131                     </entry>
14132                   </row>
14133                   <row rowsep="0">
14134                     <entry colname="1">
14135                       <para><command>NotifyOutv6</command></para>
14136                     </entry>
14137                     <entry colname="2">
14138                       <para>
14139                         IPv6 notifies sent.
14140                       </para>
14141                     </entry>
14142                   </row>
14143                   <row rowsep="0">
14144                     <entry colname="1">
14145                       <para><command>NotifyInv4</command></para>
14146                     </entry>
14147                     <entry colname="2">
14148                       <para>
14149                         IPv4 notifies received.
14150                       </para>
14151                     </entry>
14152                   </row>
14153                   <row rowsep="0">
14154                     <entry colname="1">
14155                       <para><command>NotifyInv6</command></para>
14156                     </entry>
14157                     <entry colname="2">
14158                       <para>
14159                         IPv6 notifies received.
14160                       </para>
14161                     </entry>
14162                   </row>
14163                   <row rowsep="0">
14164                     <entry colname="1">
14165                       <para><command>NotifyRej</command></para>
14166                     </entry>
14167                     <entry colname="2">
14168                       <para>
14169                         Incoming notifies rejected.
14170                       </para>
14171                     </entry>
14172                   </row>
14173                   <row rowsep="0">
14174                     <entry colname="1">
14175                       <para><command>SOAOutv4</command></para>
14176                     </entry>
14177                     <entry colname="2">
14178                       <para>
14179                         IPv4 SOA queries sent.
14180                       </para>
14181                     </entry>
14182                   </row>
14183                   <row rowsep="0">
14184                     <entry colname="1">
14185                       <para><command>SOAOutv6</command></para>
14186                     </entry>
14187                     <entry colname="2">
14188                       <para>
14189                         IPv6 SOA queries sent.
14190                       </para>
14191                     </entry>
14192                   </row>
14193                   <row rowsep="0">
14194                     <entry colname="1">
14195                       <para><command>AXFRReqv4</command></para>
14196                     </entry>
14197                     <entry colname="2">
14198                       <para>
14199                         IPv4 AXFR requested.
14200                       </para>
14201                     </entry>
14202                   </row>
14203                   <row rowsep="0">
14204                     <entry colname="1">
14205                       <para><command>AXFRReqv6</command></para>
14206                     </entry>
14207                     <entry colname="2">
14208                       <para>
14209                         IPv6 AXFR requested.
14210                       </para>
14211                     </entry>
14212                   </row>
14213                   <row rowsep="0">
14214                     <entry colname="1">
14215                       <para><command>IXFRReqv4</command></para>
14216                     </entry>
14217                     <entry colname="2">
14218                       <para>
14219                         IPv4 IXFR requested.
14220                       </para>
14221                     </entry>
14222                   </row>
14223                   <row rowsep="0">
14224                     <entry colname="1">
14225                       <para><command>IXFRReqv6</command></para>
14226                     </entry>
14227                     <entry colname="2">
14228                       <para>
14229                         IPv6 IXFR requested.
14230                       </para>
14231                     </entry>
14232                   </row>
14233                   <row rowsep="0">
14234                     <entry colname="1">
14235                       <para><command>XfrSuccess</command></para>
14236                     </entry>
14237                     <entry colname="2">
14238                       <para>
14239                         Zone transfer requests succeeded.
14240                       </para>
14241                     </entry>
14242                   </row>
14243                   <row rowsep="0">
14244                     <entry colname="1">
14245                       <para><command>XfrFail</command></para>
14246                     </entry>
14247                     <entry colname="2">
14248                       <para>
14249                         Zone transfer requests failed.
14250                       </para>
14251                     </entry>
14252                   </row>
14253                 </tbody>
14254               </tgroup>
14255             </informaltable>
14256           </sect3>
14257
14258           <sect3>
14259             <title>Resolver Statistics Counters</title>
14260
14261             <informaltable colsep="0" rowsep="0">
14262               <tgroup cols="3" colsep="0" rowsep="0" tgroupstyle="4Level-table">
14263                 <colspec colname="1" colnum="1" colsep="0" colwidth="1.150in"/>
14264                 <colspec colname="2" colnum="2" colsep="0" colwidth="1.150in"/>
14265                 <colspec colname="3" colnum="3" colsep="0" colwidth="3.350in"/>
14266                 <tbody>
14267                   <row>
14268                     <entry colname="1">
14269                       <para>
14270                         <emphasis>Symbol</emphasis>
14271                       </para>
14272                     </entry>
14273                     <entry colname="2">
14274                       <para>
14275                         <emphasis>BIND8 Symbol</emphasis>
14276                       </para>
14277                     </entry>
14278                     <entry colname="3">
14279                       <para>
14280                         <emphasis>Description</emphasis>
14281                       </para>
14282                     </entry>
14283                   </row>
14284
14285                   <row rowsep="0">
14286                     <entry colname="1">
14287                       <para><command>Queryv4</command></para>
14288                     </entry>
14289                     <entry colname="2">
14290                       <para><command>SFwdQ</command></para>
14291                     </entry>
14292                     <entry colname="3">
14293                       <para>
14294                         IPv4 queries sent.
14295                       </para>
14296                     </entry>
14297                   </row>
14298                   <row rowsep="0">
14299                     <entry colname="1">
14300                       <para><command>Queryv6</command></para>
14301                     </entry>
14302                     <entry colname="2">
14303                       <para><command>SFwdQ</command></para>
14304                     </entry>
14305                     <entry colname="3">
14306                       <para>
14307                         IPv6 queries sent.
14308                       </para>
14309                     </entry>
14310                   </row>
14311                   <row rowsep="0">
14312                     <entry colname="1">
14313                       <para><command>Responsev4</command></para>
14314                     </entry>
14315                     <entry colname="2">
14316                       <para><command>RR</command></para>
14317                     </entry>
14318                     <entry colname="3">
14319                       <para>
14320                         IPv4 responses received.
14321                       </para>
14322                     </entry>
14323                   </row>
14324                   <row rowsep="0">
14325                     <entry colname="1">
14326                       <para><command>Responsev6</command></para>
14327                     </entry>
14328                     <entry colname="2">
14329                       <para><command>RR</command></para>
14330                     </entry>
14331                     <entry colname="3">
14332                       <para>
14333                         IPv6 responses received.
14334                       </para>
14335                     </entry>
14336                   </row>
14337                   <row rowsep="0">
14338                     <entry colname="1">
14339                       <para><command>NXDOMAIN</command></para>
14340                     </entry>
14341                     <entry colname="2">
14342                       <para><command>RNXD</command></para>
14343                     </entry>
14344                     <entry colname="3">
14345                       <para>
14346                         NXDOMAIN received.
14347                       </para>
14348                     </entry>
14349                   </row>
14350                   <row rowsep="0">
14351                     <entry colname="1">
14352                       <para><command>SERVFAIL</command></para>
14353                     </entry>
14354                     <entry colname="2">
14355                       <para><command>RFail</command></para>
14356                     </entry>
14357                     <entry colname="3">
14358                       <para>
14359                         SERVFAIL received.
14360                       </para>
14361                     </entry>
14362                   </row>
14363                   <row rowsep="0">
14364                     <entry colname="1">
14365                       <para><command>FORMERR</command></para>
14366                     </entry>
14367                     <entry colname="2">
14368                       <para><command>RFErr</command></para>
14369                     </entry>
14370                     <entry colname="3">
14371                       <para>
14372                         FORMERR received.
14373                       </para>
14374                     </entry>
14375                   </row>
14376                   <row rowsep="0">
14377                     <entry colname="1">
14378                       <para><command>OtherError</command></para>
14379                     </entry>
14380                     <entry colname="2">
14381                       <para><command>RErr</command></para>
14382                     </entry>
14383                     <entry colname="3">
14384                       <para>
14385                         Other errors received.
14386                       </para>
14387                     </entry>
14388                   </row>
14389                   <row rowsep="0">
14390                     <entry colname="1">
14391                       <para><command>EDNS0Fail</command></para>
14392                                                  </entry>
14393                     <entry colname="2">
14394                       <para><command></command></para>
14395                     </entry>
14396                     <entry colname="3">
14397                       <para>
14398                         EDNS(0) query failures.
14399                       </para>
14400                     </entry>
14401                   </row>
14402                   <row rowsep="0">
14403                     <entry colname="1">
14404                       <para><command>Mismatch</command></para>
14405                     </entry>
14406                     <entry colname="2">
14407                       <para><command>RDupR</command></para>
14408                     </entry>
14409                     <entry colname="3">
14410                       <para>
14411                         Mismatch responses received.
14412                         The DNS ID, response's source address,
14413                         and/or the response's source port does not
14414                         match what was expected.
14415                         (The port must be 53 or as defined by
14416                         the <command>port</command> option.)
14417                         This may be an indication of a cache
14418                         poisoning attempt.
14419                       </para>
14420                     </entry>
14421                   </row>
14422                   <row rowsep="0">
14423                     <entry colname="1">
14424                       <para><command>Truncated</command></para>
14425                     </entry>
14426                     <entry colname="2">
14427                       <para><command></command></para>
14428                     </entry>
14429                     <entry colname="3">
14430                       <para>
14431                         Truncated responses received.
14432                       </para>
14433                     </entry>
14434                   </row>
14435                   <row rowsep="0">
14436                     <entry colname="1">
14437                       <para><command>Lame</command></para>
14438                     </entry>
14439                     <entry colname="2">
14440                       <para><command>RLame</command></para>
14441                     </entry>
14442                     <entry colname="3">
14443                       <para>
14444                         Lame delegations received.
14445                       </para>
14446                     </entry>
14447                   </row>
14448                   <row rowsep="0">
14449                     <entry colname="1">
14450                       <para><command>Retry</command></para>
14451                     </entry>
14452                     <entry colname="2">
14453                       <para><command>SDupQ</command></para>
14454                     </entry>
14455                     <entry colname="3">
14456                       <para>
14457                         Query retries performed.
14458                       </para>
14459                     </entry>
14460                   </row>
14461                   <row rowsep="0">
14462                     <entry colname="1">
14463                       <para><command>QueryAbort</command></para>
14464                     </entry>
14465                     <entry colname="2">
14466                       <para><command></command></para>
14467                     </entry>
14468                     <entry colname="3">
14469                       <para>
14470                         Queries aborted due to quota control.
14471                       </para>
14472                     </entry>
14473                   </row>
14474                   <row rowsep="0">
14475                     <entry colname="1">
14476                       <para><command>QuerySockFail</command></para>
14477                     </entry>
14478                     <entry colname="2">
14479                       <para><command></command></para>
14480                     </entry>
14481                     <entry colname="3">
14482                       <para>
14483                         Failures in opening query sockets.
14484                         One common reason for such failures is a
14485                         failure of opening a new socket due to a
14486                         limitation on file descriptors.
14487                       </para>
14488                     </entry>
14489                   </row>
14490                   <row rowsep="0">
14491                     <entry colname="1">
14492                       <para><command>QueryTimeout</command></para>
14493                     </entry>
14494                     <entry colname="2">
14495                       <para><command></command></para>
14496                     </entry>
14497                     <entry colname="3">
14498                       <para>
14499                         Query timeouts.
14500                       </para>
14501                     </entry>
14502                   </row>
14503                   <row rowsep="0">
14504                     <entry colname="1">
14505                       <para><command>GlueFetchv4</command></para>
14506                     </entry>
14507                     <entry colname="2">
14508                       <para><command>SSysQ</command></para>
14509                     </entry>
14510                     <entry colname="3">
14511                       <para>
14512                         IPv4 NS address fetches invoked.
14513                       </para>
14514                     </entry>
14515                   </row>
14516                   <row rowsep="0">
14517                     <entry colname="1">
14518                       <para><command>GlueFetchv6</command></para>
14519                     </entry>
14520                     <entry colname="2">
14521                       <para><command>SSysQ</command></para>
14522                     </entry>
14523                     <entry colname="3">
14524                       <para>
14525                         IPv6 NS address fetches invoked.
14526                       </para>
14527                     </entry>
14528                   </row>
14529                   <row rowsep="0">
14530                     <entry colname="1">
14531                       <para><command>GlueFetchv4Fail</command></para>
14532                     </entry>
14533                     <entry colname="2">
14534                       <para><command></command></para>
14535                     </entry>
14536                     <entry colname="3">
14537                       <para>
14538                         IPv4 NS address fetch failed.
14539                       </para>
14540                     </entry>
14541                   </row>
14542                   <row rowsep="0">
14543                     <entry colname="1">
14544                       <para><command>GlueFetchv6Fail</command></para>
14545                     </entry>
14546                     <entry colname="2">
14547                       <para><command></command></para>
14548                     </entry>
14549                     <entry colname="3">
14550                       <para>
14551                         IPv6 NS address fetch failed.
14552                       </para>
14553                     </entry>
14554                   </row>
14555                   <row rowsep="0">
14556                     <entry colname="1">
14557                       <para><command>ValAttempt</command></para>
14558                     </entry>
14559                     <entry colname="2">
14560                       <para><command></command></para>
14561                     </entry>
14562                     <entry colname="3">
14563                       <para>
14564                         DNSSEC validation attempted.
14565                       </para>
14566                     </entry>
14567                   </row>
14568                   <row rowsep="0">
14569                     <entry colname="1">
14570                       <para><command>ValOk</command></para>
14571                     </entry>
14572                     <entry colname="2">
14573                       <para><command></command></para>
14574                     </entry>
14575                     <entry colname="3">
14576                       <para>
14577                         DNSSEC validation succeeded.
14578                       </para>
14579                     </entry>
14580                   </row>
14581                   <row rowsep="0">
14582                     <entry colname="1">
14583                       <para><command>ValNegOk</command></para>
14584                     </entry>
14585                     <entry colname="2">
14586                       <para><command></command></para>
14587                     </entry>
14588                     <entry colname="3">
14589                       <para>
14590                         DNSSEC validation on negative information succeeded.
14591                       </para>
14592                     </entry>
14593                   </row>
14594                   <row rowsep="0">
14595                     <entry colname="1">
14596                       <para><command>ValFail</command></para>
14597                     </entry>
14598                     <entry colname="2">
14599                       <para><command></command></para>
14600                     </entry>
14601                     <entry colname="3">
14602                       <para>
14603                         DNSSEC validation failed.
14604                       </para>
14605                     </entry>
14606                   </row>
14607                   <row rowsep="0">
14608                     <entry colname="1">
14609                       <para><command>QryRTTnn</command></para>
14610                     </entry>
14611                     <entry colname="2">
14612                       <para><command></command></para>
14613                     </entry>
14614                     <entry colname="3">
14615                       <para>
14616                         Frequency table on round trip times (RTTs) of
14617                         queries.
14618                         Each <command>nn</command> specifies the corresponding
14619                         frequency.
14620                         In the sequence of
14621                         <command>nn_1</command>,
14622                         <command>nn_2</command>,
14623                         ...,
14624                         <command>nn_m</command>,
14625                         the value of <command>nn_i</command> is the
14626                         number of queries whose RTTs are between
14627                         <command>nn_(i-1)</command> (inclusive) and
14628                         <command>nn_i</command> (exclusive) milliseconds.
14629                         For the sake of convenience we define
14630                         <command>nn_0</command> to be 0.
14631                         The last entry should be represented as
14632                         <command>nn_m+</command>, which means the
14633                         number of queries whose RTTs are equal to or over
14634                         <command>nn_m</command> milliseconds.
14635                       </para>
14636                     </entry>
14637                   </row>
14638                 </tbody>
14639               </tgroup>
14640             </informaltable>
14641
14642           </sect3>
14643
14644           <sect3>
14645             <title>Socket I/O Statistics Counters</title>
14646
14647             <para>
14648               Socket I/O statistics counters are defined per socket
14649               types, which are
14650               <command>UDP4</command> (UDP/IPv4),
14651               <command>UDP6</command> (UDP/IPv6),
14652               <command>TCP4</command> (TCP/IPv4),
14653               <command>TCP6</command> (TCP/IPv6),
14654               <command>Unix</command> (Unix Domain), and
14655               <command>FDwatch</command> (sockets opened outside the
14656               socket module).
14657               In the following table <command>&lt;TYPE&gt;</command>
14658               represents a socket type.
14659               Not all counters are available for all socket types;
14660               exceptions are noted in the description field.
14661             </para>
14662
14663             <informaltable colsep="0" rowsep="0">
14664               <tgroup cols="2" colsep="0" rowsep="0" tgroupstyle="4Level-table">
14665                 <colspec colname="1" colnum="1" colsep="0" colwidth="1.150in"/>
14666                 <colspec colname="2" colnum="2" colsep="0" colwidth="3.350in"/>
14667                 <tbody>
14668                   <row>
14669                     <entry colname="1">
14670                       <para>
14671                         <emphasis>Symbol</emphasis>
14672                       </para>
14673                     </entry>
14674                     <entry colname="2">
14675                       <para>
14676                         <emphasis>Description</emphasis>
14677                       </para>
14678                     </entry>
14679                   </row>
14680
14681                   <row rowsep="0">
14682                     <entry colname="1">
14683                       <para><command>&lt;TYPE&gt;Open</command></para>
14684                     </entry>
14685                     <entry colname="2">
14686                       <para>
14687                         Sockets opened successfully.
14688                         This counter is not applicable to the
14689                         <command>FDwatch</command> type.
14690                       </para>
14691                     </entry>
14692                   </row>
14693                   <row rowsep="0">
14694                     <entry colname="1">
14695                       <para><command>&lt;TYPE&gt;OpenFail</command></para>
14696                     </entry>
14697                     <entry colname="2">
14698                       <para>
14699                         Failures of opening sockets.
14700                         This counter is not applicable to the
14701                         <command>FDwatch</command> type.
14702                       </para>
14703                     </entry>
14704                   </row>
14705                   <row rowsep="0">
14706                     <entry colname="1">
14707                       <para><command>&lt;TYPE&gt;Close</command></para>
14708                     </entry>
14709                     <entry colname="2">
14710                       <para>
14711                         Sockets closed.
14712                       </para>
14713                     </entry>
14714                   </row>
14715                   <row rowsep="0">
14716                     <entry colname="1">
14717                       <para><command>&lt;TYPE&gt;BindFail</command></para>
14718                     </entry>
14719                     <entry colname="2">
14720                       <para>
14721                         Failures of binding sockets.
14722                       </para>
14723                     </entry>
14724                   </row>
14725                   <row rowsep="0">
14726                     <entry colname="1">
14727                       <para><command>&lt;TYPE&gt;ConnFail</command></para>
14728                     </entry>
14729                     <entry colname="2">
14730                       <para>
14731                         Failures of connecting sockets.
14732                       </para>
14733                     </entry>
14734                   </row>
14735                   <row rowsep="0">
14736                     <entry colname="1">
14737                       <para><command>&lt;TYPE&gt;Conn</command></para>
14738                     </entry>
14739                     <entry colname="2">
14740                       <para>
14741                         Connections established successfully.
14742                       </para>
14743                     </entry>
14744                   </row>
14745                   <row rowsep="0">
14746                     <entry colname="1">
14747                       <para><command>&lt;TYPE&gt;AcceptFail</command></para>
14748                     </entry>
14749                     <entry colname="2">
14750                       <para>
14751                         Failures of accepting incoming connection requests.
14752                         This counter is not applicable to the
14753                         <command>UDP</command> and
14754                         <command>FDwatch</command> types.
14755                       </para>
14756                     </entry>
14757                   </row>
14758                   <row rowsep="0">
14759                     <entry colname="1">
14760                       <para><command>&lt;TYPE&gt;Accept</command></para>
14761                     </entry>
14762                     <entry colname="2">
14763                       <para>
14764                         Incoming connections successfully accepted.
14765                         This counter is not applicable to the
14766                         <command>UDP</command> and
14767                         <command>FDwatch</command> types.
14768                       </para>
14769                     </entry>
14770                   </row>
14771                   <row rowsep="0">
14772                     <entry colname="1">
14773                       <para><command>&lt;TYPE&gt;SendErr</command></para>
14774                     </entry>
14775                     <entry colname="2">
14776                       <para>
14777                         Errors in socket send operations.
14778                         This counter corresponds
14779                         to <command>SErr</command> counter of
14780                         <command>BIND</command> 8.
14781                       </para>
14782                     </entry>
14783                   </row>
14784                   <row rowsep="0">
14785                     <entry colname="1">
14786                       <para><command>&lt;TYPE&gt;RecvErr</command></para>
14787                     </entry>
14788                     <entry colname="2">
14789                       <para>
14790                         Errors in socket receive operations.
14791                         This includes errors of send operations on a
14792                         connected UDP socket notified by an ICMP error
14793                         message.
14794                       </para>
14795                     </entry>
14796                   </row>
14797                 </tbody>
14798               </tgroup>
14799             </informaltable>
14800           </sect3>
14801           <sect3>
14802             <title>Compatibility with <emphasis>BIND</emphasis> 8 Counters</title>
14803             <para>
14804               Most statistics counters that were available
14805               in <command>BIND</command> 8 are also supported in
14806               <command>BIND</command> 9 as shown in the above tables.
14807               Here are notes about other counters that do not appear
14808               in these tables.
14809             </para>
14810
14811             <variablelist>
14812               <varlistentry>
14813                 <term><command>RFwdR,SFwdR</command></term>
14814                 <listitem>
14815                   <para>
14816                     These counters are not supported
14817                     because <command>BIND</command> 9 does not adopt
14818                     the notion of <emphasis>forwarding</emphasis>
14819                     as <command>BIND</command> 8 did.
14820                   </para>
14821                 </listitem>
14822               </varlistentry>
14823
14824               <varlistentry>
14825                 <term><command>RAXFR</command></term>
14826                 <listitem>
14827                   <para>
14828                     This counter is accessible in the Incoming Queries section.
14829                   </para>
14830                 </listitem>
14831               </varlistentry>
14832
14833               <varlistentry>
14834                 <term><command>RIQ</command></term>
14835                 <listitem>
14836                   <para>
14837                     This counter is accessible in the Incoming Requests section.
14838                   </para>
14839                 </listitem>
14840               </varlistentry>
14841
14842               <varlistentry>
14843                 <term><command>ROpts</command></term>
14844                 <listitem>
14845                   <para>
14846                     This counter is not supported
14847                     because <command>BIND</command> 9 does not care
14848                     about IP options in the first place.
14849                   </para>
14850                 </listitem>
14851               </varlistentry>
14852             </variablelist>
14853           </sect3>
14854         </sect2>
14855       </sect1>
14856
14857     </chapter>
14858     <chapter id="Bv9ARM.ch07">
14859       <title><acronym>BIND</acronym> 9 Security Considerations</title>
14860       <sect1 id="Access_Control_Lists">
14861         <title>Access Control Lists</title>
14862         <para>
14863           Access Control Lists (ACLs) are address match lists that
14864           you can set up and nickname for future use in <command>allow-notify</command>,
14865           <command>allow-query</command>, <command>allow-query-on</command>,
14866           <command>allow-recursion</command>, <command>allow-recursion-on</command>,
14867           <command>blackhole</command>, <command>allow-transfer</command>,
14868           etc.
14869         </para>
14870         <para>
14871           Using ACLs allows you to have finer control over who can access
14872           your name server, without cluttering up your config files with huge
14873           lists of IP addresses.
14874         </para>
14875         <para>
14876           It is a <emphasis>good idea</emphasis> to use ACLs, and to
14877           control access to your server. Limiting access to your server by
14878           outside parties can help prevent spoofing and denial of service (DoS) attacks against
14879           your server.
14880         </para>
14881         <para>
14882           Here is an example of how to properly apply ACLs:
14883         </para>
14884
14885 <programlisting>
14886 // Set up an ACL named "bogusnets" that will block
14887 // RFC1918 space and some reserved space, which is
14888 // commonly used in spoofing attacks.
14889 acl bogusnets {
14890         0.0.0.0/8;  192.0.2.0/24; 224.0.0.0/3;
14891         10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16;
14892 };
14893
14894 // Set up an ACL called our-nets. Replace this with the
14895 // real IP numbers.
14896 acl our-nets { x.x.x.x/24; x.x.x.x/21; };
14897 options {
14898   ...
14899   ...
14900   allow-query { our-nets; };
14901   allow-recursion { our-nets; };
14902   ...
14903   blackhole { bogusnets; };
14904   ...
14905 };
14906
14907 zone "example.com" {
14908   type master;
14909   file "m/example.com";
14910   allow-query { any; };
14911 };
14912 </programlisting>
14913
14914         <para>
14915           This allows recursive queries of the server from the outside
14916           unless recursion has been previously disabled.
14917         </para>
14918         <para>
14919           For more information on how to use ACLs to protect your server,
14920           see the <emphasis>AUSCERT</emphasis> advisory at:
14921         </para>
14922         <para>
14923           <ulink url="ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos"
14924                      >ftp://ftp.auscert.org.au/pub/auscert/advisory/AL-1999.004.dns_dos</ulink>
14925         </para>
14926       </sect1>
14927       <sect1>
14928         <title><command>Chroot</command> and <command>Setuid</command></title>
14929         <para>
14930           On UNIX servers, it is possible to run <acronym>BIND</acronym>
14931           in a <emphasis>chrooted</emphasis> environment (using
14932           the <command>chroot()</command> function) by specifying
14933           the "<option>-t</option>" option for <command>named</command>.
14934           This can help improve system security by placing
14935           <acronym>BIND</acronym> in a "sandbox", which will limit
14936           the damage done if a server is compromised.
14937         </para>
14938         <para>
14939           Another useful feature in the UNIX version of <acronym>BIND</acronym> is the
14940           ability to run the daemon as an unprivileged user ( <option>-u</option> <replaceable>user</replaceable> ).
14941           We suggest running as an unprivileged user when using the <command>chroot</command> feature.
14942         </para>
14943         <para>
14944           Here is an example command line to load <acronym>BIND</acronym> in a <command>chroot</command> sandbox,
14945           <command>/var/named</command>, and to run <command>named</command> <command>setuid</command> to
14946           user 202:
14947         </para>
14948         <para>
14949           <userinput>/usr/local/sbin/named -u 202 -t /var/named</userinput>
14950         </para>
14951
14952         <sect2>
14953           <title>The <command>chroot</command> Environment</title>
14954
14955           <para>
14956             In order for a <command>chroot</command> environment
14957             to
14958             work properly in a particular directory
14959             (for example, <filename>/var/named</filename>),
14960             you will need to set up an environment that includes everything
14961             <acronym>BIND</acronym> needs to run.
14962             From <acronym>BIND</acronym>'s point of view, <filename>/var/named</filename> is
14963             the root of the filesystem.  You will need to adjust the values of
14964             options like
14965             like <command>directory</command> and <command>pid-file</command> to account
14966             for this.
14967           </para>
14968           <para>
14969             Unlike with earlier versions of BIND, you typically will
14970             <emphasis>not</emphasis> need to compile <command>named</command>
14971             statically nor install shared libraries under the new root.
14972             However, depending on your operating system, you may need
14973             to set up things like
14974             <filename>/dev/zero</filename>,
14975             <filename>/dev/random</filename>,
14976             <filename>/dev/log</filename>, and
14977             <filename>/etc/localtime</filename>.
14978           </para>
14979         </sect2>
14980
14981         <sect2>
14982           <title>Using the <command>setuid</command> Function</title>
14983
14984           <para>
14985             Prior to running the <command>named</command> daemon,
14986             use
14987             the <command>touch</command> utility (to change file
14988             access and
14989             modification times) or the <command>chown</command>
14990             utility (to
14991             set the user id and/or group id) on files
14992             to which you want <acronym>BIND</acronym>
14993             to write.
14994           </para>
14995           <note>
14996             Note that if the <command>named</command> daemon is running as an
14997             unprivileged user, it will not be able to bind to new restricted
14998             ports if the server is reloaded.
14999           </note>
15000         </sect2>
15001       </sect1>
15002
15003       <sect1 id="dynamic_update_security">
15004         <title>Dynamic Update Security</title>
15005
15006         <para>
15007           Access to the dynamic
15008           update facility should be strictly limited.  In earlier versions of
15009           <acronym>BIND</acronym>, the only way to do this was
15010           based on the IP
15011           address of the host requesting the update, by listing an IP address
15012           or
15013           network prefix in the <command>allow-update</command>
15014           zone option.
15015           This method is insecure since the source address of the update UDP
15016           packet
15017           is easily forged.  Also note that if the IP addresses allowed by the
15018           <command>allow-update</command> option include the
15019           address of a slave
15020           server which performs forwarding of dynamic updates, the master can
15021           be
15022           trivially attacked by sending the update to the slave, which will
15023           forward it to the master with its own source IP address causing the
15024           master to approve it without question.
15025         </para>
15026
15027         <para>
15028           For these reasons, we strongly recommend that updates be
15029           cryptographically authenticated by means of transaction signatures
15030           (TSIG).  That is, the <command>allow-update</command>
15031           option should
15032           list only TSIG key names, not IP addresses or network
15033           prefixes. Alternatively, the new <command>update-policy</command>
15034           option can be used.
15035         </para>
15036
15037         <para>
15038           Some sites choose to keep all dynamically-updated DNS data
15039           in a subdomain and delegate that subdomain to a separate zone. This
15040           way, the top-level zone containing critical data such as the IP
15041           addresses
15042           of public web and mail servers need not allow dynamic update at
15043           all.
15044         </para>
15045
15046       </sect1>
15047     </chapter>
15048
15049     <chapter id="Bv9ARM.ch08">
15050       <title>Troubleshooting</title>
15051       <sect1>
15052         <title>Common Problems</title>
15053         <sect2>
15054           <title>It's not working; how can I figure out what's wrong?</title>
15055
15056           <para>
15057             The best solution to solving installation and
15058             configuration issues is to take preventative measures by setting
15059             up logging files beforehand. The log files provide a
15060             source of hints and information that can be used to figure out
15061             what went wrong and how to fix the problem.
15062           </para>
15063
15064         </sect2>
15065       </sect1>
15066       <sect1>
15067         <title>Incrementing and Changing the Serial Number</title>
15068
15069         <para>
15070           Zone serial numbers are just numbers &mdash; they aren't
15071           date related.  A lot of people set them to a number that
15072           represents a date, usually of the form YYYYMMDDRR.
15073           Occasionally they will make a mistake and set them to a
15074           "date in the future" then try to correct them by setting
15075           them to the "current date".  This causes problems because
15076           serial numbers are used to indicate that a zone has been
15077           updated.  If the serial number on the slave server is
15078           lower than the serial number on the master, the slave
15079           server will attempt to update its copy of the zone.
15080         </para>
15081
15082         <para>
15083           Setting the serial number to a lower number on the master
15084           server than the slave server means that the slave will not perform
15085           updates to its copy of the zone.
15086         </para>
15087
15088         <para>
15089           The solution to this is to add 2147483647 (2^31-1) to the
15090           number, reload the zone and make sure all slaves have updated to
15091           the new zone serial number, then reset the number to what you want
15092           it to be, and reload the zone again.
15093         </para>
15094
15095       </sect1>
15096       <sect1>
15097         <title>Where Can I Get Help?</title>
15098
15099         <para>
15100           The Internet Systems Consortium
15101           (<acronym>ISC</acronym>) offers a wide range
15102           of support and service agreements for <acronym>BIND</acronym> and <acronym>DHCP</acronym> servers. Four
15103           levels of premium support are available and each level includes
15104           support for all <acronym>ISC</acronym> programs,
15105           significant discounts on products
15106           and training, and a recognized priority on bug fixes and
15107           non-funded feature requests. In addition, <acronym>ISC</acronym> offers a standard
15108           support agreement package which includes services ranging from bug
15109           fix announcements to remote support. It also includes training in
15110           <acronym>BIND</acronym> and <acronym>DHCP</acronym>.
15111         </para>
15112
15113         <para>
15114           To discuss arrangements for support, contact
15115           <ulink url="mailto:info@isc.org">info@isc.org</ulink> or visit the
15116           <acronym>ISC</acronym> web page at
15117           <ulink url="http://www.isc.org/services/support/"
15118                      >http://www.isc.org/services/support/</ulink>
15119           to read more.
15120         </para>
15121       </sect1>
15122     </chapter>
15123     <appendix id="Bv9ARM.ch09">
15124       <title>Appendices</title>
15125       <sect1>
15126         <title>Acknowledgments</title>
15127         <sect2 id="historical_dns_information">
15128           <title>A Brief History of the <acronym>DNS</acronym> and <acronym>BIND</acronym></title>
15129
15130           <para>
15131             Although the "official" beginning of the Domain Name
15132             System occurred in 1984 with the publication of RFC 920, the
15133             core of the new system was described in 1983 in RFCs 882 and
15134             883. From 1984 to 1987, the ARPAnet (the precursor to today's
15135             Internet) became a testbed of experimentation for developing the
15136             new naming/addressing scheme in a rapidly expanding,
15137             operational network environment.  New RFCs were written and
15138             published in 1987 that modified the original documents to
15139             incorporate improvements based on the working model. RFC 1034,
15140             "Domain Names-Concepts and Facilities", and RFC 1035, "Domain
15141             Names-Implementation and Specification" were published and
15142             became the standards upon which all <acronym>DNS</acronym> implementations are
15143             built.
15144           </para>
15145
15146           <para>
15147             The first working domain name server, called "Jeeves", was
15148             written in 1983-84 by Paul Mockapetris for operation on DEC
15149             Tops-20
15150             machines located at the University of Southern California's
15151             Information
15152             Sciences Institute (USC-ISI) and SRI International's Network
15153             Information
15154             Center (SRI-NIC). A <acronym>DNS</acronym> server for
15155             Unix machines, the Berkeley Internet
15156             Name Domain (<acronym>BIND</acronym>) package, was
15157             written soon after by a group of
15158             graduate students at the University of California at Berkeley
15159             under
15160             a grant from the US Defense Advanced Research Projects
15161             Administration
15162             (DARPA).
15163           </para>
15164           <para>
15165             Versions of <acronym>BIND</acronym> through
15166             4.8.3 were maintained by the Computer
15167             Systems Research Group (CSRG) at UC Berkeley. Douglas Terry, Mark
15168             Painter, David Riggle and Songnian Zhou made up the initial <acronym>BIND</acronym>
15169             project team. After that, additional work on the software package
15170             was done by Ralph Campbell. Kevin Dunlap, a Digital Equipment
15171             Corporation
15172             employee on loan to the CSRG, worked on <acronym>BIND</acronym> for 2 years, from 1985
15173             to 1987. Many other people also contributed to <acronym>BIND</acronym> development
15174             during that time: Doug Kingston, Craig Partridge, Smoot
15175             Carl-Mitchell,
15176             Mike Muuss, Jim Bloom and Mike Schwartz. <acronym>BIND</acronym> maintenance was subsequently
15177             handled by Mike Karels and &#216;ivind Kure.
15178           </para>
15179           <para>
15180             <acronym>BIND</acronym> versions 4.9 and 4.9.1 were
15181             released by Digital Equipment
15182             Corporation (now Compaq Computer Corporation). Paul Vixie, then
15183             a DEC employee, became <acronym>BIND</acronym>'s
15184             primary caretaker. He was assisted
15185             by Phil Almquist, Robert Elz, Alan Barrett, Paul Albitz, Bryan
15186             Beecher, Andrew
15187             Partan, Andy Cherenson, Tom Limoncelli, Berthold Paffrath, Fuat
15188             Baran, Anant Kumar, Art Harkin, Win Treese, Don Lewis, Christophe
15189             Wolfhugel, and others.
15190           </para>
15191           <para>
15192             In 1994, <acronym>BIND</acronym> version 4.9.2 was sponsored by
15193             Vixie Enterprises. Paul
15194             Vixie became <acronym>BIND</acronym>'s principal
15195             architect/programmer.
15196           </para>
15197           <para>
15198             <acronym>BIND</acronym> versions from 4.9.3 onward
15199             have been developed and maintained
15200             by the Internet Systems Consortium and its predecessor,
15201             the Internet Software Consortium,  with support being provided
15202             by ISC's sponsors.
15203           </para>
15204           <para>
15205             As co-architects/programmers, Bob Halley and
15206             Paul Vixie released the first production-ready version of
15207             <acronym>BIND</acronym> version 8 in May 1997.
15208           </para>
15209           <para>
15210             BIND version 9 was released in September 2000 and is a
15211             major rewrite of nearly all aspects of the underlying
15212             BIND architecture.
15213           </para>
15214           <para>
15215             BIND versions 4 and 8 are officially deprecated.
15216             No additional development is done
15217             on BIND version 4 or BIND version 8.
15218           </para>
15219           <para>
15220             <acronym>BIND</acronym> development work is made
15221             possible today by the sponsorship
15222             of several corporations, and by the tireless work efforts of
15223             numerous individuals.
15224           </para>
15225         </sect2>
15226       </sect1>
15227       <sect1>
15228         <title>General <acronym>DNS</acronym> Reference Information</title>
15229         <sect2 id="ipv6addresses">
15230           <title>IPv6 addresses (AAAA)</title>
15231           <para>
15232             IPv6 addresses are 128-bit identifiers for interfaces and
15233             sets of interfaces which were introduced in the <acronym>DNS</acronym> to facilitate
15234             scalable Internet routing. There are three types of addresses: <emphasis>Unicast</emphasis>,
15235             an identifier for a single interface;
15236             <emphasis>Anycast</emphasis>,
15237             an identifier for a set of interfaces; and <emphasis>Multicast</emphasis>,
15238             an identifier for a set of interfaces. Here we describe the global
15239             Unicast address scheme. For more information, see RFC 3587,
15240             "Global Unicast Address Format."
15241           </para>
15242           <para>
15243             IPv6 unicast addresses consist of a
15244             <emphasis>global routing prefix</emphasis>, a
15245             <emphasis>subnet identifier</emphasis>, and an
15246             <emphasis>interface identifier</emphasis>.
15247           </para>
15248           <para>
15249             The global routing prefix is provided by the
15250             upstream provider or ISP, and (roughly) corresponds to the
15251             IPv4 <emphasis>network</emphasis> section
15252             of the address range.
15253
15254             The subnet identifier is for local subnetting, much the
15255             same as subnetting an
15256             IPv4 /16 network into /24 subnets.
15257
15258             The interface identifier is the address of an individual
15259             interface on a given network; in IPv6, addresses belong to
15260             interfaces rather than to machines.
15261           </para>
15262           <para>
15263             The subnetting capability of IPv6 is much more flexible than
15264             that of IPv4: subnetting can be carried out on bit boundaries,
15265             in much the same way as Classless InterDomain Routing
15266             (CIDR), and the DNS PTR representation ("nibble" format)
15267             makes setting up reverse zones easier.
15268           </para>
15269           <para>
15270             The Interface Identifier must be unique on the local link,
15271             and is usually generated automatically by the IPv6
15272             implementation, although it is usually possible to
15273             override the default setting if necessary.  A typical IPv6
15274             address might look like:
15275             <command>2001:db8:201:9:a00:20ff:fe81:2b32</command>
15276           </para>
15277           <para>
15278             IPv6 address specifications often contain long strings
15279             of zeros, so the architects have included a shorthand for
15280             specifying
15281             them. The double colon (`::') indicates the longest possible
15282             string
15283             of zeros that can fit, and can be used only once in an address.
15284           </para>
15285         </sect2>
15286       </sect1>
15287       <sect1 id="bibliography">
15288         <title>Bibliography (and Suggested Reading)</title>
15289         <sect2 id="rfcs">
15290           <title>Request for Comments (RFCs)</title>
15291           <para>
15292             Specification documents for the Internet protocol suite, including
15293             the <acronym>DNS</acronym>, are published as part of
15294             the Request for Comments (RFCs)
15295             series of technical notes. The standards themselves are defined
15296             by the Internet Engineering Task Force (IETF) and the Internet
15297             Engineering Steering Group (IESG). RFCs can be obtained online via FTP at:
15298           </para>
15299           <para>
15300             <ulink url="ftp://www.isi.edu/in-notes/">
15301               ftp://www.isi.edu/in-notes/RFC<replaceable>xxxx</replaceable>.txt
15302             </ulink>
15303           </para>
15304           <para>
15305             (where <replaceable>xxxx</replaceable> is
15306             the number of the RFC). RFCs are also available via the Web at:
15307           </para>
15308           <para>
15309             <ulink url="http://www.ietf.org/rfc/"
15310                        >http://www.ietf.org/rfc/</ulink>.
15311           </para>
15312           <bibliography>
15313             <bibliodiv>
15314               <!-- one of (BIBLIOENTRY BIBLIOMIXED) -->
15315               <title>Standards</title>
15316               <biblioentry>
15317                 <abbrev>RFC974</abbrev>
15318                 <author>
15319                   <surname>Partridge</surname>
15320                   <firstname>C.</firstname>
15321                 </author>
15322                 <title>Mail Routing and the Domain System</title>
15323                 <pubdate>January 1986</pubdate>
15324               </biblioentry>
15325               <biblioentry>
15326                 <abbrev>RFC1034</abbrev>
15327                 <author>
15328                   <surname>Mockapetris</surname>
15329                   <firstname>P.V.</firstname>
15330                 </author>
15331                 <title>Domain Names &mdash; Concepts and Facilities</title>
15332                 <pubdate>November 1987</pubdate>
15333               </biblioentry>
15334               <biblioentry>
15335                 <abbrev>RFC1035</abbrev>
15336                 <author>
15337                   <surname>Mockapetris</surname>
15338                   <firstname>P. V.</firstname>
15339                   </author> <title>Domain Names &mdash; Implementation and
15340                   Specification</title>
15341                 <pubdate>November 1987</pubdate>
15342               </biblioentry>
15343             </bibliodiv>
15344             <bibliodiv id="proposed_standards" xreflabel="Proposed Standards">
15345
15346               <title>Proposed Standards</title>
15347               <!-- one of (BIBLIOENTRY BIBLIOMIXED) -->
15348               <biblioentry>
15349                 <abbrev>RFC2181</abbrev>
15350                 <author>
15351                   <surname>Elz</surname>
15352                   <firstname>R., R. Bush</firstname>
15353                 </author>
15354                 <title>Clarifications to the <acronym>DNS</acronym>
15355                   Specification</title>
15356                 <pubdate>July 1997</pubdate>
15357               </biblioentry>
15358               <biblioentry>
15359                 <abbrev>RFC2308</abbrev>
15360                 <author>
15361                   <surname>Andrews</surname>
15362                   <firstname>M.</firstname>
15363                 </author>
15364                 <title>Negative Caching of <acronym>DNS</acronym>
15365                   Queries</title>
15366                 <pubdate>March 1998</pubdate>
15367               </biblioentry>
15368               <biblioentry>
15369                 <abbrev>RFC1995</abbrev>
15370                 <author>
15371                   <surname>Ohta</surname>
15372                   <firstname>M.</firstname>
15373                 </author>
15374                 <title>Incremental Zone Transfer in <acronym>DNS</acronym></title>
15375                 <pubdate>August 1996</pubdate>
15376               </biblioentry>
15377               <biblioentry>
15378                 <abbrev>RFC1996</abbrev>
15379                 <author>
15380                   <surname>Vixie</surname>
15381                   <firstname>P.</firstname>
15382                 </author>
15383                 <title>A Mechanism for Prompt Notification of Zone Changes</title>
15384                 <pubdate>August 1996</pubdate>
15385               </biblioentry>
15386               <biblioentry>
15387                 <abbrev>RFC2136</abbrev>
15388                 <authorgroup>
15389                   <author>
15390                     <surname>Vixie</surname>
15391                     <firstname>P.</firstname>
15392                   </author>
15393                   <author>
15394                     <firstname>S.</firstname>
15395                     <surname>Thomson</surname>
15396                   </author>
15397                   <author>
15398                     <firstname>Y.</firstname>
15399                     <surname>Rekhter</surname>
15400                   </author>
15401                   <author>
15402                     <firstname>J.</firstname>
15403                     <surname>Bound</surname>
15404                   </author>
15405                 </authorgroup>
15406                 <title>Dynamic Updates in the Domain Name System</title>
15407                 <pubdate>April 1997</pubdate>
15408               </biblioentry>
15409               <biblioentry>
15410                 <abbrev>RFC2671</abbrev>
15411                 <authorgroup>
15412                   <author>
15413                     <firstname>P.</firstname>
15414                     <surname>Vixie</surname>
15415                   </author>
15416                 </authorgroup>
15417                 <title>Extension Mechanisms for DNS (EDNS0)</title>
15418                 <pubdate>August 1997</pubdate>
15419               </biblioentry>
15420               <biblioentry>
15421                 <abbrev>RFC2672</abbrev>
15422                 <authorgroup>
15423                   <author>
15424                     <firstname>M.</firstname>
15425                     <surname>Crawford</surname>
15426                   </author>
15427                 </authorgroup>
15428                 <title>Non-Terminal DNS Name Redirection</title>
15429                 <pubdate>August 1999</pubdate>
15430               </biblioentry>
15431               <biblioentry>
15432                 <abbrev>RFC2845</abbrev>
15433                 <authorgroup>
15434                   <author>
15435                     <surname>Vixie</surname>
15436                     <firstname>P.</firstname>
15437                   </author>
15438                   <author>
15439                     <firstname>O.</firstname>
15440                     <surname>Gudmundsson</surname>
15441                   </author>
15442                   <author>
15443                     <firstname>D.</firstname>
15444                     <surname>Eastlake</surname>
15445                     <lineage>3rd</lineage>
15446                   </author>
15447                   <author>
15448                     <firstname>B.</firstname>
15449                     <surname>Wellington</surname>
15450                   </author>
15451                 </authorgroup>
15452                 <title>Secret Key Transaction Authentication for <acronym>DNS</acronym> (TSIG)</title>
15453                 <pubdate>May 2000</pubdate>
15454               </biblioentry>
15455               <biblioentry>
15456                 <abbrev>RFC2930</abbrev>
15457                 <authorgroup>
15458                   <author>
15459                     <firstname>D.</firstname>
15460                     <surname>Eastlake</surname>
15461                     <lineage>3rd</lineage>
15462                   </author>
15463                 </authorgroup>
15464                 <title>Secret Key Establishment for DNS (TKEY RR)</title>
15465                 <pubdate>September 2000</pubdate>
15466               </biblioentry>
15467               <biblioentry>
15468                 <abbrev>RFC2931</abbrev>
15469                 <authorgroup>
15470                   <author>
15471                     <firstname>D.</firstname>
15472                     <surname>Eastlake</surname>
15473                     <lineage>3rd</lineage>
15474                   </author>
15475                 </authorgroup>
15476                 <title>DNS Request and Transaction Signatures (SIG(0)s)</title>
15477                 <pubdate>September 2000</pubdate>
15478               </biblioentry>
15479               <biblioentry>
15480                 <abbrev>RFC3007</abbrev>
15481                 <authorgroup>
15482                   <author>
15483                     <firstname>B.</firstname>
15484                     <surname>Wellington</surname>
15485                   </author>
15486                 </authorgroup>
15487                 <title>Secure Domain Name System (DNS) Dynamic Update</title>
15488                 <pubdate>November 2000</pubdate>
15489               </biblioentry>
15490               <biblioentry>
15491                 <abbrev>RFC3645</abbrev>
15492                 <authorgroup>
15493                   <author>
15494                     <firstname>S.</firstname>
15495                     <surname>Kwan</surname>
15496                   </author>
15497                   <author>
15498                     <firstname>P.</firstname>
15499                     <surname>Garg</surname>
15500                   </author>
15501                   <author>
15502                     <firstname>J.</firstname>
15503                     <surname>Gilroy</surname>
15504                   </author>
15505                   <author>
15506                     <firstname>L.</firstname>
15507                     <surname>Esibov</surname>
15508                   </author>
15509                   <author>
15510                     <firstname>J.</firstname>
15511                     <surname>Westhead</surname>
15512                   </author>
15513                   <author>
15514                     <firstname>R.</firstname>
15515                     <surname>Hall</surname>
15516                   </author>
15517                 </authorgroup>
15518                 <title>Generic Security Service Algorithm for Secret
15519                        Key Transaction Authentication for DNS
15520                        (GSS-TSIG)</title>
15521                 <pubdate>October 2003</pubdate>
15522               </biblioentry>
15523             </bibliodiv>
15524             <bibliodiv>
15525               <title><acronym>DNS</acronym> Security Proposed Standards</title>
15526               <biblioentry>
15527                 <abbrev>RFC3225</abbrev>
15528                 <authorgroup>
15529                   <author>
15530                     <firstname>D.</firstname>
15531                     <surname>Conrad</surname>
15532                   </author>
15533                 </authorgroup>
15534                 <title>Indicating Resolver Support of DNSSEC</title>
15535                 <pubdate>December 2001</pubdate>
15536               </biblioentry>
15537               <biblioentry>
15538                 <abbrev>RFC3833</abbrev>
15539                 <authorgroup>
15540                   <author>
15541                     <firstname>D.</firstname>
15542                     <surname>Atkins</surname>
15543                   </author>
15544                   <author>
15545                     <firstname>R.</firstname>
15546                     <surname>Austein</surname>
15547                   </author>
15548                 </authorgroup>
15549                 <title>Threat Analysis of the Domain Name System (DNS)</title>
15550                 <pubdate>August 2004</pubdate>
15551               </biblioentry>
15552               <biblioentry>
15553                 <abbrev>RFC4033</abbrev>
15554                 <authorgroup>
15555                   <author>
15556                     <firstname>R.</firstname>
15557                     <surname>Arends</surname>
15558                   </author>
15559                   <author>
15560                     <firstname>R.</firstname>
15561                     <surname>Austein</surname>
15562                   </author>
15563                   <author>
15564                     <firstname>M.</firstname>
15565                     <surname>Larson</surname>
15566                   </author>
15567                   <author>
15568                     <firstname>D.</firstname>
15569                     <surname>Massey</surname>
15570                   </author>
15571                   <author>
15572                     <firstname>S.</firstname>
15573                     <surname>Rose</surname>
15574                   </author>
15575                 </authorgroup>
15576                 <title>DNS Security Introduction and Requirements</title>
15577                 <pubdate>March 2005</pubdate>
15578               </biblioentry>
15579               <biblioentry>
15580                 <abbrev>RFC4034</abbrev>
15581                 <authorgroup>
15582                   <author>
15583                     <firstname>R.</firstname>
15584                     <surname>Arends</surname>
15585                   </author>
15586                   <author>
15587                     <firstname>R.</firstname>
15588                     <surname>Austein</surname>
15589                   </author>
15590                   <author>
15591                     <firstname>M.</firstname>
15592                     <surname>Larson</surname>
15593                   </author>
15594                   <author>
15595                     <firstname>D.</firstname>
15596                     <surname>Massey</surname>
15597                   </author>
15598                   <author>
15599                     <firstname>S.</firstname>
15600                     <surname>Rose</surname>
15601                   </author>
15602                 </authorgroup>
15603                 <title>Resource Records for the DNS Security Extensions</title>
15604                 <pubdate>March 2005</pubdate>
15605               </biblioentry>
15606               <biblioentry>
15607                 <abbrev>RFC4035</abbrev>
15608                 <authorgroup>
15609                   <author>
15610                     <firstname>R.</firstname>
15611                     <surname>Arends</surname>
15612                   </author>
15613                   <author>
15614                     <firstname>R.</firstname>
15615                     <surname>Austein</surname>
15616                   </author>
15617                   <author>
15618                     <firstname>M.</firstname>
15619                     <surname>Larson</surname>
15620                   </author>
15621                   <author>
15622                     <firstname>D.</firstname>
15623                     <surname>Massey</surname>
15624                   </author>
15625                   <author>
15626                     <firstname>S.</firstname>
15627                     <surname>Rose</surname>
15628                   </author>
15629                 </authorgroup>
15630                 <title>Protocol Modifications for the DNS
15631                        Security Extensions</title>
15632                 <pubdate>March 2005</pubdate>
15633               </biblioentry>
15634             </bibliodiv>
15635             <bibliodiv>
15636               <title>Other Important RFCs About <acronym>DNS</acronym>
15637                 Implementation</title>
15638               <biblioentry>
15639                 <abbrev>RFC1535</abbrev>
15640                 <author>
15641                   <surname>Gavron</surname>
15642                   <firstname>E.</firstname>
15643                 </author>
15644                 <title>A Security Problem and Proposed Correction With Widely
15645                   Deployed <acronym>DNS</acronym> Software.</title>
15646                 <pubdate>October 1993</pubdate>
15647               </biblioentry>
15648               <biblioentry>
15649                 <abbrev>RFC1536</abbrev>
15650                 <authorgroup>
15651                   <author>
15652                     <surname>Kumar</surname>
15653                     <firstname>A.</firstname>
15654                   </author>
15655                   <author>
15656                     <firstname>J.</firstname>
15657                     <surname>Postel</surname>
15658                   </author>
15659                   <author>
15660                     <firstname>C.</firstname>
15661                     <surname>Neuman</surname>
15662                   </author>
15663                   <author>
15664                     <firstname>P.</firstname>
15665                     <surname>Danzig</surname>
15666                   </author>
15667                   <author>
15668                     <firstname>S.</firstname>
15669                     <surname>Miller</surname>
15670                   </author>
15671                 </authorgroup>
15672                 <title>Common <acronym>DNS</acronym> Implementation
15673                   Errors and Suggested Fixes</title>
15674                 <pubdate>October 1993</pubdate>
15675               </biblioentry>
15676               <biblioentry>
15677                 <abbrev>RFC1982</abbrev>
15678                 <authorgroup>
15679                   <author>
15680                     <surname>Elz</surname>
15681                     <firstname>R.</firstname>
15682                   </author>
15683                   <author>
15684                     <firstname>R.</firstname>
15685                     <surname>Bush</surname>
15686                   </author>
15687                 </authorgroup>
15688                 <title>Serial Number Arithmetic</title>
15689                 <pubdate>August 1996</pubdate>
15690               </biblioentry>
15691               <biblioentry>
15692                 <abbrev>RFC4074</abbrev>
15693                 <authorgroup>
15694                   <author>
15695                     <surname>Morishita</surname>
15696                     <firstname>Y.</firstname>
15697                   </author>
15698                   <author>
15699                     <firstname>T.</firstname>
15700                     <surname>Jinmei</surname>
15701                   </author>
15702                 </authorgroup>
15703                 <title>Common Misbehaviour Against <acronym>DNS</acronym>
15704                 Queries for IPv6 Addresses</title>
15705                 <pubdate>May 2005</pubdate>
15706               </biblioentry>
15707             </bibliodiv>
15708             <bibliodiv>
15709               <title>Resource Record Types</title>
15710               <biblioentry>
15711                 <abbrev>RFC1183</abbrev>
15712                 <authorgroup>
15713                   <author>
15714                     <surname>Everhart</surname>
15715                     <firstname>C.F.</firstname>
15716                   </author>
15717                   <author>
15718                     <firstname>L. A.</firstname>
15719                     <surname>Mamakos</surname>
15720                   </author>
15721                   <author>
15722                     <firstname>R.</firstname>
15723                     <surname>Ullmann</surname>
15724                   </author>
15725                   <author>
15726                     <firstname>P.</firstname>
15727                     <surname>Mockapetris</surname>
15728                   </author>
15729                 </authorgroup>
15730                 <title>New <acronym>DNS</acronym> RR Definitions</title>
15731                 <pubdate>October 1990</pubdate>
15732               </biblioentry>
15733               <biblioentry>
15734                 <abbrev>RFC1706</abbrev>
15735                 <authorgroup>
15736                   <author>
15737                     <surname>Manning</surname>
15738                     <firstname>B.</firstname>
15739                   </author>
15740                   <author>
15741                     <firstname>R.</firstname>
15742                     <surname>Colella</surname>
15743                   </author>
15744                 </authorgroup>
15745                 <title><acronym>DNS</acronym> NSAP Resource Records</title>
15746                 <pubdate>October 1994</pubdate>
15747               </biblioentry>
15748               <biblioentry>
15749                 <abbrev>RFC2168</abbrev>
15750                 <authorgroup>
15751                   <author>
15752                     <surname>Daniel</surname>
15753                     <firstname>R.</firstname>
15754                   </author>
15755                   <author>
15756                     <firstname>M.</firstname>
15757                     <surname>Mealling</surname>
15758                   </author>
15759                 </authorgroup>
15760                 <title>Resolution of Uniform Resource Identifiers using
15761                   the Domain Name System</title>
15762                 <pubdate>June 1997</pubdate>
15763               </biblioentry>
15764               <biblioentry>
15765                 <abbrev>RFC1876</abbrev>
15766                 <authorgroup>
15767                   <author>
15768                     <surname>Davis</surname>
15769                     <firstname>C.</firstname>
15770                   </author>
15771                   <author>
15772                     <firstname>P.</firstname>
15773                     <surname>Vixie</surname>
15774                   </author>
15775                   <author>
15776                     <firstname>T.</firstname>
15777                     <firstname>Goodwin</firstname>
15778                   </author>
15779                   <author>
15780                     <firstname>I.</firstname>
15781                     <surname>Dickinson</surname>
15782                   </author>
15783                 </authorgroup>
15784                 <title>A Means for Expressing Location Information in the
15785                   Domain
15786                   Name System</title>
15787                 <pubdate>January 1996</pubdate>
15788               </biblioentry>
15789               <biblioentry>
15790                 <abbrev>RFC2052</abbrev>
15791                 <authorgroup>
15792                   <author>
15793                     <surname>Gulbrandsen</surname>
15794                     <firstname>A.</firstname>
15795                   </author>
15796                   <author>
15797                     <firstname>P.</firstname>
15798                     <surname>Vixie</surname>
15799                   </author>
15800                 </authorgroup>
15801                 <title>A <acronym>DNS</acronym> RR for Specifying the
15802                   Location of
15803                   Services.</title>
15804                 <pubdate>October 1996</pubdate>
15805               </biblioentry>
15806               <biblioentry>
15807                 <abbrev>RFC2163</abbrev>
15808                 <author>
15809                   <surname>Allocchio</surname>
15810                   <firstname>A.</firstname>
15811                 </author>
15812                 <title>Using the Internet <acronym>DNS</acronym> to
15813                   Distribute MIXER
15814                   Conformant Global Address Mapping</title>
15815                 <pubdate>January 1998</pubdate>
15816               </biblioentry>
15817               <biblioentry>
15818                 <abbrev>RFC2230</abbrev>
15819                 <author>
15820                   <surname>Atkinson</surname>
15821                   <firstname>R.</firstname>
15822                 </author>
15823                 <title>Key Exchange Delegation Record for the <acronym>DNS</acronym></title>
15824                 <pubdate>October 1997</pubdate>
15825               </biblioentry>
15826               <biblioentry>
15827                 <abbrev>RFC2536</abbrev>
15828                 <author>
15829                   <surname>Eastlake</surname>
15830                   <firstname>D.</firstname>
15831                   <lineage>3rd</lineage>
15832                 </author>
15833                 <title>DSA KEYs and SIGs in the Domain Name System (DNS)</title>
15834                 <pubdate>March 1999</pubdate>
15835               </biblioentry>
15836               <biblioentry>
15837                 <abbrev>RFC2537</abbrev>
15838                 <author>
15839                   <surname>Eastlake</surname>
15840                   <firstname>D.</firstname>
15841                   <lineage>3rd</lineage>
15842                 </author>
15843                 <title>RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)</title>
15844                 <pubdate>March 1999</pubdate>
15845               </biblioentry>
15846               <biblioentry>
15847                 <abbrev>RFC2538</abbrev>
15848                 <authorgroup>
15849                   <author>
15850                     <surname>Eastlake</surname>
15851                     <firstname>D.</firstname>
15852                     <lineage>3rd</lineage>
15853                   </author>
15854                   <author>
15855                     <surname>Gudmundsson</surname>
15856                     <firstname>O.</firstname>
15857                   </author>
15858                 </authorgroup>
15859                 <title>Storing Certificates in the Domain Name System (DNS)</title>
15860                 <pubdate>March 1999</pubdate>
15861               </biblioentry>
15862               <biblioentry>
15863                 <abbrev>RFC2539</abbrev>
15864                 <authorgroup>
15865                   <author>
15866                     <surname>Eastlake</surname>
15867                     <firstname>D.</firstname>
15868                     <lineage>3rd</lineage>
15869                   </author>
15870                 </authorgroup>
15871                 <title>Storage of Diffie-Hellman Keys in the Domain Name System (DNS)</title>
15872                 <pubdate>March 1999</pubdate>
15873               </biblioentry>
15874               <biblioentry>
15875                 <abbrev>RFC2540</abbrev>
15876                 <authorgroup>
15877                   <author>
15878                     <surname>Eastlake</surname>
15879                     <firstname>D.</firstname>
15880                     <lineage>3rd</lineage>
15881                   </author>
15882                 </authorgroup>
15883                 <title>Detached Domain Name System (DNS) Information</title>
15884                 <pubdate>March 1999</pubdate>
15885               </biblioentry>
15886               <biblioentry>
15887                 <abbrev>RFC2782</abbrev>
15888                 <author>
15889                   <surname>Gulbrandsen</surname>
15890                   <firstname>A.</firstname>
15891                 </author>
15892                 <author>
15893                   <surname>Vixie</surname>
15894                   <firstname>P.</firstname>
15895                 </author>
15896                 <author>
15897                   <surname>Esibov</surname>
15898                   <firstname>L.</firstname>
15899                 </author>
15900                 <title>A DNS RR for specifying the location of services (DNS SRV)</title>
15901                 <pubdate>February 2000</pubdate>
15902               </biblioentry>
15903               <biblioentry>
15904                 <abbrev>RFC2915</abbrev>
15905                 <author>
15906                   <surname>Mealling</surname>
15907                   <firstname>M.</firstname>
15908                 </author>
15909                 <author>
15910                   <surname>Daniel</surname>
15911                   <firstname>R.</firstname>
15912                 </author>
15913                 <title>The Naming Authority Pointer (NAPTR) DNS Resource Record</title>
15914                 <pubdate>September 2000</pubdate>
15915               </biblioentry>
15916               <biblioentry>
15917                 <abbrev>RFC3110</abbrev>
15918                 <author>
15919                     <surname>Eastlake</surname>
15920                     <firstname>D.</firstname>
15921                     <lineage>3rd</lineage>
15922                 </author>
15923                 <title>RSA/SHA-1 SIGs and RSA KEYs in the Domain Name System (DNS)</title>
15924                 <pubdate>May 2001</pubdate>
15925               </biblioentry>
15926               <biblioentry>
15927                 <abbrev>RFC3123</abbrev>
15928                 <author>
15929                   <surname>Koch</surname>
15930                   <firstname>P.</firstname>
15931                 </author>
15932                 <title>A DNS RR Type for Lists of Address Prefixes (APL RR)</title>
15933                 <pubdate>June 2001</pubdate>
15934               </biblioentry>
15935               <biblioentry>
15936                 <abbrev>RFC3596</abbrev>
15937                 <authorgroup>
15938                   <author>
15939                     <surname>Thomson</surname>
15940                     <firstname>S.</firstname>
15941                   </author>
15942                   <author>
15943                     <firstname>C.</firstname>
15944                     <surname>Huitema</surname>
15945                   </author>
15946                   <author>
15947                     <firstname>V.</firstname>
15948                     <surname>Ksinant</surname>
15949                   </author>
15950                   <author>
15951                     <firstname>M.</firstname>
15952                     <surname>Souissi</surname>
15953                   </author>
15954                 </authorgroup>
15955                 <title><acronym>DNS</acronym> Extensions to support IP
15956                   version 6</title>
15957                 <pubdate>October 2003</pubdate>
15958               </biblioentry>
15959               <biblioentry>
15960                 <abbrev>RFC3597</abbrev>
15961                 <author>
15962                   <surname>Gustafsson</surname>
15963                   <firstname>A.</firstname>
15964                 </author>
15965                 <title>Handling of Unknown DNS Resource Record (RR) Types</title>
15966                 <pubdate>September 2003</pubdate>
15967               </biblioentry>
15968             </bibliodiv>
15969             <bibliodiv>
15970               <title><acronym>DNS</acronym> and the Internet</title>
15971               <biblioentry>
15972                 <abbrev>RFC1101</abbrev>
15973                 <author>
15974                   <surname>Mockapetris</surname>
15975                   <firstname>P. V.</firstname>
15976                 </author>
15977                 <title><acronym>DNS</acronym> Encoding of Network Names
15978                   and Other Types</title>
15979                 <pubdate>April 1989</pubdate>
15980               </biblioentry>
15981               <biblioentry>
15982                 <abbrev>RFC1123</abbrev>
15983                 <author>
15984                   <surname>Braden</surname>
15985                   <surname>R.</surname>
15986                 </author>
15987                 <title>Requirements for Internet Hosts - Application and
15988                   Support</title>
15989                 <pubdate>October 1989</pubdate>
15990               </biblioentry>
15991               <biblioentry>
15992                 <abbrev>RFC1591</abbrev>
15993                 <author>
15994                   <surname>Postel</surname>
15995                   <firstname>J.</firstname>
15996                 </author>
15997                 <title>Domain Name System Structure and Delegation</title>
15998                 <pubdate>March 1994</pubdate>
15999               </biblioentry>
16000               <biblioentry>
16001                 <abbrev>RFC2317</abbrev>
16002                 <authorgroup>
16003                   <author>
16004                     <surname>Eidnes</surname>
16005                     <firstname>H.</firstname>
16006                   </author>
16007                   <author>
16008                     <firstname>G.</firstname>
16009                     <surname>de Groot</surname>
16010                   </author>
16011                   <author>
16012                     <firstname>P.</firstname>
16013                     <surname>Vixie</surname>
16014                   </author>
16015                 </authorgroup>
16016                 <title>Classless IN-ADDR.ARPA Delegation</title>
16017                 <pubdate>March 1998</pubdate>
16018               </biblioentry>
16019               <biblioentry>
16020                 <abbrev>RFC2826</abbrev>
16021                 <authorgroup>
16022                   <author>
16023                     <surname>Internet Architecture Board</surname>
16024                   </author>
16025                 </authorgroup>
16026                 <title>IAB Technical Comment on the Unique DNS Root</title>
16027                 <pubdate>May 2000</pubdate>
16028               </biblioentry>
16029               <biblioentry>
16030                 <abbrev>RFC2929</abbrev>
16031                 <authorgroup>
16032                   <author>
16033                     <surname>Eastlake</surname>
16034                     <firstname>D.</firstname>
16035                     <lineage>3rd</lineage>
16036                   </author>
16037                   <author>
16038                     <surname>Brunner-Williams</surname>
16039                     <firstname>E.</firstname>
16040                   </author>
16041                   <author>
16042                     <surname>Manning</surname>
16043                     <firstname>B.</firstname>
16044                   </author>
16045                 </authorgroup>
16046                 <title>Domain Name System (DNS) IANA Considerations</title>
16047                 <pubdate>September 2000</pubdate>
16048               </biblioentry>
16049             </bibliodiv>
16050             <bibliodiv>
16051               <title><acronym>DNS</acronym> Operations</title>
16052               <biblioentry>
16053                 <abbrev>RFC1033</abbrev>
16054                 <author>
16055                   <surname>Lottor</surname>
16056                   <firstname>M.</firstname>
16057                 </author>
16058                 <title>Domain administrators operations guide.</title>
16059                 <pubdate>November 1987</pubdate>
16060               </biblioentry>
16061               <biblioentry>
16062                 <abbrev>RFC1537</abbrev>
16063                 <author>
16064                   <surname>Beertema</surname>
16065                   <firstname>P.</firstname>
16066                 </author>
16067                 <title>Common <acronym>DNS</acronym> Data File
16068                   Configuration Errors</title>
16069                 <pubdate>October 1993</pubdate>
16070               </biblioentry>
16071               <biblioentry>
16072                 <abbrev>RFC1912</abbrev>
16073                 <author>
16074                   <surname>Barr</surname>
16075                   <firstname>D.</firstname>
16076                 </author>
16077                 <title>Common <acronym>DNS</acronym> Operational and
16078                   Configuration Errors</title>
16079                 <pubdate>February 1996</pubdate>
16080               </biblioentry>
16081               <biblioentry>
16082                 <abbrev>RFC2010</abbrev>
16083                 <authorgroup>
16084                   <author>
16085                     <surname>Manning</surname>
16086                     <firstname>B.</firstname>
16087                   </author>
16088                   <author>
16089                     <firstname>P.</firstname>
16090                     <surname>Vixie</surname>
16091                   </author>
16092                 </authorgroup>
16093                 <title>Operational Criteria for Root Name Servers.</title>
16094                 <pubdate>October 1996</pubdate>
16095               </biblioentry>
16096               <biblioentry>
16097                 <abbrev>RFC2219</abbrev>
16098                 <authorgroup>
16099                   <author>
16100                     <surname>Hamilton</surname>
16101                     <firstname>M.</firstname>
16102                   </author>
16103                   <author>
16104                     <firstname>R.</firstname>
16105                     <surname>Wright</surname>
16106                   </author>
16107                 </authorgroup>
16108                 <title>Use of <acronym>DNS</acronym> Aliases for
16109                   Network Services.</title>
16110                 <pubdate>October 1997</pubdate>
16111               </biblioentry>
16112             </bibliodiv>
16113             <bibliodiv>
16114               <title>Internationalized Domain Names</title>
16115               <biblioentry>
16116                 <abbrev>RFC2825</abbrev>
16117                 <authorgroup>
16118                   <author>
16119                     <surname>IAB</surname>
16120                   </author>
16121                   <author>
16122                     <surname>Daigle</surname>
16123                     <firstname>R.</firstname>
16124                   </author>
16125                 </authorgroup>
16126                 <title>A Tangled Web: Issues of I18N, Domain Names,
16127                        and the Other Internet protocols</title>
16128                 <pubdate>May 2000</pubdate>
16129               </biblioentry>
16130               <biblioentry>
16131                 <abbrev>RFC3490</abbrev>
16132                 <authorgroup>
16133                   <author>
16134                     <surname>Faltstrom</surname>
16135                     <firstname>P.</firstname>
16136                   </author>
16137                   <author>
16138                     <surname>Hoffman</surname>
16139                     <firstname>P.</firstname>
16140                   </author>
16141                   <author>
16142                     <surname>Costello</surname>
16143                     <firstname>A.</firstname>
16144                   </author>
16145                 </authorgroup>
16146                 <title>Internationalizing Domain Names in Applications (IDNA)</title>
16147                 <pubdate>March 2003</pubdate>
16148               </biblioentry>
16149               <biblioentry>
16150                 <abbrev>RFC3491</abbrev>
16151                 <authorgroup>
16152                   <author>
16153                     <surname>Hoffman</surname>
16154                     <firstname>P.</firstname>
16155                   </author>
16156                   <author>
16157                     <surname>Blanchet</surname>
16158                     <firstname>M.</firstname>
16159                   </author>
16160                 </authorgroup>
16161                 <title>Nameprep: A Stringprep Profile for Internationalized Domain Names</title>
16162                 <pubdate>March 2003</pubdate>
16163               </biblioentry>
16164               <biblioentry>
16165                 <abbrev>RFC3492</abbrev>
16166                 <authorgroup>
16167                   <author>
16168                     <surname>Costello</surname>
16169                     <firstname>A.</firstname>
16170                   </author>
16171                 </authorgroup>
16172                 <title>Punycode: A Bootstring encoding of Unicode
16173                        for Internationalized Domain Names in
16174                        Applications (IDNA)</title>
16175                 <pubdate>March 2003</pubdate>
16176               </biblioentry>
16177             </bibliodiv>
16178             <bibliodiv>
16179               <title>Other <acronym>DNS</acronym>-related RFCs</title>
16180               <note>
16181                 <para>
16182                   Note: the following list of RFCs, although
16183                   <acronym>DNS</acronym>-related, are not
16184                   concerned with implementing software.
16185                 </para>
16186               </note>
16187               <biblioentry>
16188                 <abbrev>RFC1464</abbrev>
16189                 <author>
16190                   <surname>Rosenbaum</surname>
16191                   <firstname>R.</firstname>
16192                 </author>
16193                 <title>Using the Domain Name System To Store Arbitrary String
16194                   Attributes</title>
16195                 <pubdate>May 1993</pubdate>
16196               </biblioentry>
16197               <biblioentry>
16198                 <abbrev>RFC1713</abbrev>
16199                 <author>
16200                   <surname>Romao</surname>
16201                   <firstname>A.</firstname>
16202                 </author>
16203                 <title>Tools for <acronym>DNS</acronym> Debugging</title>
16204                 <pubdate>November 1994</pubdate>
16205               </biblioentry>
16206               <biblioentry>
16207                 <abbrev>RFC1794</abbrev>
16208                 <author>
16209                   <surname>Brisco</surname>
16210                   <firstname>T.</firstname>
16211                 </author>
16212                 <title><acronym>DNS</acronym> Support for Load
16213                   Balancing</title>
16214                 <pubdate>April 1995</pubdate>
16215               </biblioentry>
16216               <biblioentry>
16217                 <abbrev>RFC2240</abbrev>
16218                 <author>
16219                   <surname>Vaughan</surname>
16220                   <firstname>O.</firstname>
16221                 </author>
16222                 <title>A Legal Basis for Domain Name Allocation</title>
16223                 <pubdate>November 1997</pubdate>
16224               </biblioentry>
16225               <biblioentry>
16226                 <abbrev>RFC2345</abbrev>
16227                 <authorgroup>
16228                   <author>
16229                     <surname>Klensin</surname>
16230                     <firstname>J.</firstname>
16231                   </author>
16232                   <author>
16233                     <firstname>T.</firstname>
16234                     <surname>Wolf</surname>
16235                   </author>
16236                   <author>
16237                     <firstname>G.</firstname>
16238                     <surname>Oglesby</surname>
16239                   </author>
16240                 </authorgroup>
16241                 <title>Domain Names and Company Name Retrieval</title>
16242                 <pubdate>May 1998</pubdate>
16243               </biblioentry>
16244               <biblioentry>
16245                 <abbrev>RFC2352</abbrev>
16246                 <author>
16247                   <surname>Vaughan</surname>
16248                   <firstname>O.</firstname>
16249                 </author>
16250                 <title>A Convention For Using Legal Names as Domain Names</title>
16251                 <pubdate>May 1998</pubdate>
16252               </biblioentry>
16253               <biblioentry>
16254                 <abbrev>RFC3071</abbrev>
16255                 <authorgroup>
16256                   <author>
16257                     <surname>Klensin</surname>
16258                     <firstname>J.</firstname>
16259                   </author>
16260                 </authorgroup>
16261                 <title>Reflections on the DNS, RFC 1591, and Categories of Domains</title>
16262                 <pubdate>February 2001</pubdate>
16263               </biblioentry>
16264               <biblioentry>
16265                 <abbrev>RFC3258</abbrev>
16266                 <authorgroup>
16267                   <author>
16268                     <surname>Hardie</surname>
16269                     <firstname>T.</firstname>
16270                   </author>
16271                 </authorgroup>
16272                 <title>Distributing Authoritative Name Servers via
16273                        Shared Unicast Addresses</title>
16274                 <pubdate>April 2002</pubdate>
16275               </biblioentry>
16276               <biblioentry>
16277                 <abbrev>RFC3901</abbrev>
16278                 <authorgroup>
16279                   <author>
16280                     <surname>Durand</surname>
16281                     <firstname>A.</firstname>
16282                   </author>
16283                   <author>
16284                     <firstname>J.</firstname>
16285                     <surname>Ihren</surname>
16286                   </author>
16287                 </authorgroup>
16288                 <title>DNS IPv6 Transport Operational Guidelines</title>
16289                 <pubdate>September 2004</pubdate>
16290               </biblioentry>
16291             </bibliodiv>
16292             <bibliodiv>
16293               <title>Obsolete and Unimplemented Experimental RFC</title>
16294               <biblioentry>
16295                 <abbrev>RFC1712</abbrev>
16296                 <authorgroup>
16297                   <author>
16298                     <surname>Farrell</surname>
16299                     <firstname>C.</firstname>
16300                   </author>
16301                   <author>
16302                     <firstname>M.</firstname>
16303                     <surname>Schulze</surname>
16304                   </author>
16305                   <author>
16306                     <firstname>S.</firstname>
16307                     <surname>Pleitner</surname>
16308                   </author>
16309                   <author>
16310                     <firstname>D.</firstname>
16311                     <surname>Baldoni</surname>
16312                   </author>
16313                 </authorgroup>
16314                 <title><acronym>DNS</acronym> Encoding of Geographical
16315                   Location</title>
16316                 <pubdate>November 1994</pubdate>
16317               </biblioentry>
16318               <biblioentry>
16319                 <abbrev>RFC2673</abbrev>
16320                 <authorgroup>
16321                   <author>
16322                     <surname>Crawford</surname>
16323                     <firstname>M.</firstname>
16324                   </author>
16325                 </authorgroup>
16326                 <title>Binary Labels in the Domain Name System</title>
16327                 <pubdate>August 1999</pubdate>
16328               </biblioentry>
16329               <biblioentry>
16330                 <abbrev>RFC2874</abbrev>
16331                 <authorgroup>
16332                   <author>
16333                     <surname>Crawford</surname>
16334                     <firstname>M.</firstname>
16335                   </author>
16336                   <author>
16337                     <surname>Huitema</surname>
16338                     <firstname>C.</firstname>
16339                   </author>
16340                 </authorgroup>
16341                 <title>DNS Extensions to Support IPv6 Address Aggregation
16342                        and Renumbering</title>
16343                 <pubdate>July 2000</pubdate>
16344               </biblioentry>
16345             </bibliodiv>
16346             <bibliodiv>
16347               <title>Obsoleted DNS Security RFCs</title>
16348               <note>
16349                 <para>
16350                   Most of these have been consolidated into RFC4033,
16351                   RFC4034 and RFC4035 which collectively describe DNSSECbis.
16352                 </para>
16353               </note>
16354               <biblioentry>
16355                 <abbrev>RFC2065</abbrev>
16356                 <authorgroup>
16357                   <author>
16358                     <surname>Eastlake</surname>
16359                     <lineage>3rd</lineage>
16360                     <firstname>D.</firstname>
16361                   </author>
16362                   <author>
16363                     <firstname>C.</firstname>
16364                     <surname>Kaufman</surname>
16365                   </author>
16366                 </authorgroup>
16367                 <title>Domain Name System Security Extensions</title>
16368                 <pubdate>January 1997</pubdate>
16369               </biblioentry>
16370               <biblioentry>
16371                 <abbrev>RFC2137</abbrev>
16372                 <author>
16373                   <surname>Eastlake</surname>
16374                   <lineage>3rd</lineage>
16375                   <firstname>D.</firstname>
16376                 </author>
16377                 <title>Secure Domain Name System Dynamic Update</title>
16378                 <pubdate>April 1997</pubdate>
16379               </biblioentry>
16380               <biblioentry>
16381                 <abbrev>RFC2535</abbrev>
16382                 <authorgroup>
16383                   <author>
16384                     <surname>Eastlake</surname>
16385                     <lineage>3rd</lineage>
16386                     <firstname>D.</firstname>
16387                   </author>
16388                 </authorgroup>
16389                 <title>Domain Name System Security Extensions</title>
16390                 <pubdate>March 1999</pubdate>
16391               </biblioentry>
16392               <biblioentry>
16393                 <abbrev>RFC3008</abbrev>
16394                 <authorgroup>
16395                   <author>
16396                     <surname>Wellington</surname>
16397                     <firstname>B.</firstname>
16398                   </author>
16399                 </authorgroup>
16400                 <title>Domain Name System Security (DNSSEC)
16401                        Signing Authority</title>
16402                 <pubdate>November 2000</pubdate>
16403               </biblioentry>
16404               <biblioentry>
16405                 <abbrev>RFC3090</abbrev>
16406                 <authorgroup>
16407                   <author>
16408                     <surname>Lewis</surname>
16409                     <firstname>E.</firstname>
16410                   </author>
16411                 </authorgroup>
16412                 <title>DNS Security Extension Clarification on Zone Status</title>
16413                 <pubdate>March 2001</pubdate>
16414               </biblioentry>
16415               <biblioentry>
16416                 <abbrev>RFC3445</abbrev>
16417                 <authorgroup>
16418                   <author>
16419                     <surname>Massey</surname>
16420                     <firstname>D.</firstname>
16421                   </author>
16422                   <author>
16423                     <surname>Rose</surname>
16424                     <firstname>S.</firstname>
16425                   </author>
16426                 </authorgroup>
16427                 <title>Limiting the Scope of the KEY Resource Record (RR)</title>
16428                 <pubdate>December 2002</pubdate>
16429               </biblioentry>
16430               <biblioentry>
16431                 <abbrev>RFC3655</abbrev>
16432                 <authorgroup>
16433                   <author>
16434                     <surname>Wellington</surname>
16435                     <firstname>B.</firstname>
16436                   </author>
16437                   <author>
16438                     <surname>Gudmundsson</surname>
16439                     <firstname>O.</firstname>
16440                   </author>
16441                 </authorgroup>
16442                 <title>Redefinition of DNS Authenticated Data (AD) bit</title>
16443                 <pubdate>November 2003</pubdate>
16444               </biblioentry>
16445               <biblioentry>
16446                 <abbrev>RFC3658</abbrev>
16447                 <authorgroup>
16448                   <author>
16449                     <surname>Gudmundsson</surname>
16450                     <firstname>O.</firstname>
16451                   </author>
16452                 </authorgroup>
16453                 <title>Delegation Signer (DS) Resource Record (RR)</title>
16454                 <pubdate>December 2003</pubdate>
16455               </biblioentry>
16456               <biblioentry>
16457                 <abbrev>RFC3755</abbrev>
16458                 <authorgroup>
16459                   <author>
16460                     <surname>Weiler</surname>
16461                     <firstname>S.</firstname>
16462                   </author>
16463                 </authorgroup>
16464                 <title>Legacy Resolver Compatibility for Delegation Signer (DS)</title>
16465                 <pubdate>May 2004</pubdate>
16466               </biblioentry>
16467               <biblioentry>
16468                 <abbrev>RFC3757</abbrev>
16469                 <authorgroup>
16470                   <author>
16471                     <surname>Kolkman</surname>
16472                     <firstname>O.</firstname>
16473                   </author>
16474                   <author>
16475                     <surname>Schlyter</surname>
16476                     <firstname>J.</firstname>
16477                   </author>
16478                   <author>
16479                     <surname>Lewis</surname>
16480                     <firstname>E.</firstname>
16481                   </author>
16482                 </authorgroup>
16483                 <title>Domain Name System KEY (DNSKEY) Resource Record
16484                       (RR) Secure Entry Point (SEP) Flag</title>
16485                 <pubdate>April 2004</pubdate>
16486               </biblioentry>
16487               <biblioentry>
16488                 <abbrev>RFC3845</abbrev>
16489                 <authorgroup>
16490                   <author>
16491                     <surname>Schlyter</surname>
16492                     <firstname>J.</firstname>
16493                   </author>
16494                 </authorgroup>
16495                 <title>DNS Security (DNSSEC) NextSECure (NSEC) RDATA Format</title>
16496                 <pubdate>August 2004</pubdate>
16497               </biblioentry>
16498             </bibliodiv>
16499           </bibliography>
16500         </sect2>
16501         <sect2 id="internet_drafts">
16502           <title>Internet Drafts</title>
16503           <para>
16504             Internet Drafts (IDs) are rough-draft working documents of
16505             the Internet Engineering Task Force. They are, in essence, RFCs
16506             in the preliminary stages of development. Implementors are
16507             cautioned not
16508             to regard IDs as archival, and they should not be quoted or cited
16509             in any formal documents unless accompanied by the disclaimer that
16510             they are "works in progress." IDs have a lifespan of six months
16511             after which they are deleted unless updated by their authors.
16512           </para>
16513         </sect2>
16514         <sect2>
16515           <title>Other Documents About <acronym>BIND</acronym></title>
16516           <para/>
16517           <bibliography>
16518             <biblioentry>
16519               <authorgroup>
16520                 <author>
16521                   <surname>Albitz</surname>
16522                   <firstname>Paul</firstname>
16523                 </author>
16524                 <author>
16525                   <firstname>Cricket</firstname>
16526                   <surname>Liu</surname>
16527                 </author>
16528               </authorgroup>
16529               <title><acronym>DNS</acronym> and <acronym>BIND</acronym></title>
16530               <copyright>
16531                 <year>1998</year>
16532                 <holder>Sebastopol, CA: O'Reilly and Associates</holder>
16533               </copyright>
16534             </biblioentry>
16535           </bibliography>
16536         </sect2>
16537       </sect1>
16538
16539       <xi:include href="libdns.xml"/>
16540
16541     </appendix>
16542
16543
16544     <reference id="Bv9ARM.ch10">
16545       <title>Manual pages</title>
16546       <xi:include href="../../bin/dig/dig.docbook"/>
16547       <xi:include href="../../bin/dig/host.docbook"/>
16548       <xi:include href="../../bin/dnssec/dnssec-dsfromkey.docbook"/>
16549       <xi:include href="../../bin/dnssec/dnssec-keyfromlabel.docbook"/>
16550       <xi:include href="../../bin/dnssec/dnssec-keygen.docbook"/>
16551       <xi:include href="../../bin/dnssec/dnssec-revoke.docbook"/>
16552       <xi:include href="../../bin/dnssec/dnssec-settime.docbook"/>
16553       <xi:include href="../../bin/dnssec/dnssec-signzone.docbook"/>
16554       <xi:include href="../../bin/check/named-checkconf.docbook"/>
16555       <xi:include href="../../bin/check/named-checkzone.docbook"/>
16556       <xi:include href="../../bin/named/named.docbook"/>
16557       <xi:include href="../../bin/tools/named-journalprint.docbook"/>
16558       <!-- named.conf.docbook and others? -->
16559       <xi:include href="../../bin/nsupdate/nsupdate.docbook"/>
16560       <xi:include href="../../bin/rndc/rndc.docbook"/>
16561       <xi:include href="../../bin/rndc/rndc.conf.docbook"/>
16562       <xi:include href="../../bin/confgen/rndc-confgen.docbook"/>
16563       <xi:include href="../../bin/confgen/ddns-confgen.docbook"/>
16564       <xi:include href="../../bin/tools/arpaname.docbook"/>
16565       <xi:include href="../../bin/tools/genrandom.docbook"/>
16566       <xi:include href="../../bin/tools/isc-hmac-fixup.docbook"/>
16567       <xi:include href="../../bin/tools/nsec3hash.docbook"/>
16568     </reference>
16569
16570   </book>
16571
16572 <!--
16573   - Local variables:
16574   - mode: sgml
16575   - End:
16576  -->