<?Pub UDT _bookmark _target?><?Pub EntList bsol dash hellip gt lt minus?><chapter id="dnsref-1"><?Pub Tag atict:info tracking="off" ref="0"?><title>DNS Setup and Administration (Reference)</title><highlights><para>The Solaris  Operating System (Solaris OS) ships with the
BIND 9.x DNS name server. This chapter provides configuration and administration
information related to using BIND 9 on the Solaris operating system. General
BIND and DNS information is available from many other sources, including those
listed in <olink targetptr="dnsref-2" remap="internal">Related Materials</olink>.</para><para>This chapter covers the following topics.</para><itemizedlist><listitem><para><olink targetptr="dnsref-2" remap="internal">Related Materials</olink></para>
</listitem><listitem><para><olink targetptr="dnsref-25" remap="internal">Migrating From BIND 8 to BIND
9</olink></para>
</listitem><listitem><para><olink targetptr="dnsref-3" remap="internal">DNS and the Service Management
Facility</olink></para>
</listitem><listitem><para><olink targetptr="dnsref-4" remap="internal">Implementing rndc</olink></para>
</listitem><listitem><para><olink targetptr="dnsref-9" remap="internal">BIND 9 Commands, Files, Tools,
and Options</olink></para>
</listitem><listitem><para><olink targetptr="dnsref-13" remap="internal">The named.conf Options</olink></para>
</listitem><listitem><para><olink targetptr="dnsref-28" remap="internal">Multicast
DNS and Service Discovery</olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="dnsref-2"><title>Related Materials</title><para>For information about DNS and BIND administration, see the following
documentation.</para><itemizedlist><listitem><para>BIND 9 Migration Notes documentation in <filename>/usr/share/doc/bind/migration.txt</filename></para>
</listitem><listitem><para>BIND 9 Administrator's Manual on the Internet Systems Consortium
(ISC) web site at <ulink url="http://www.isc.org" type="text">http://www.isc.org</ulink></para>
</listitem><listitem><para>Listings of BIND features, known bugs and defects, and links
to additional material on the ISC web site at <ulink url="http://www.isc.org" type="text">http://www.isc.org</ulink></para>
</listitem><listitem><para><citetitle>DNS and Bind</citetitle>, by Paul Albitz and Cricket
Liu, (4th Edition, O'Reilly, 2001)</para>
</listitem>
</itemizedlist>
</sect1><sect1 id="dnsref-25"><title>Migrating From BIND 8 to BIND 9</title><para>BIND 9 is upwards compatible with most BIND 8 features. However, there
are still a number of caveats you should be aware of when upgrading an existing
BIND 8 installation to use BIND 9. Be sure to read the entire Migration Notes
document before installing and using BIND 9. The Migration Notes are available
at <filename>/usr/share/doc/bind/migration.txt</filename>. Also, the BIND
package names have changed to SUNWbind and SUNWbindr. The SUNWbindr package
contains the DNS server manifest.</para><para>The following list presents a brief overview of the differences between
BIND 8 and BIND 9. Details are available in the Migration Notes.</para><itemizedlist><listitem><para>Configuration File Compatibility</para><itemizedlist><listitem><para>Unimplemented options warning message</para>
</listitem><listitem><para><parameter>transfer-format</parameter> option changes</para>
</listitem><listitem><para>Configuration file errors</para>
</listitem><listitem><para>Logging categories have changed</para>
</listitem><listitem><para>Notify message and refresh query changes</para>
</listitem><listitem><para>Multiple classes change</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>Zone File Compatibility</para><itemizedlist><listitem><para>Stricter rules for TTLs in zone file</para>
</listitem><listitem><para>SOA serial number changes</para>
</listitem><listitem><para>Unbalanced quotes cause errors</para>
</listitem><listitem><para>Line breaks, syntax change</para>
</listitem><listitem><para>Use \$ instead of $$ in domain names</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>Interoperability Impact of New Protocol Features</para><itemizedlist><listitem><para>EDNS0 new in BIND 9</para>
</listitem><listitem><para>Zone transfers default change</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>Unrestricted Character Set</para><itemizedlist><listitem><para>No restrictions on character set</para>
</listitem><listitem><para>Security issue, improper naming</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>Server Administration Tools</para><itemizedlist><listitem><para>The <command>rndc</command> program replaces <command>ndc</command></para>
</listitem><listitem><para><command>nsupdate</command>: changes in multiple updates</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>No Information Leakage Between Zones</para><itemizedlist><listitem><para>Glue NS records handled differently</para>
</listitem>
</itemizedlist>
</listitem><listitem><para>Umask Not Modified</para><itemizedlist><listitem><para>Possible umask permissions issues</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect1><sect1 id="dnsref-3"><title>DNS and the Service Management Facility</title><para>The DNS/BIND <command>named</command> service can be managed by using
the Service Management Facility (SMF). For an overview of SMF, refer to <olink targetdoc="sysadv1" targetptr="hbrunlevels-25516" remap="external">Chapter 16, <citetitle remap="chapter">Managing Services (Overview),</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.
Also refer to the <olink targetdoc="group-refman" targetptr="svcadm-1m" remap="external"><citerefentry><refentrytitle>svcadm</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>, <olink targetdoc="group-refman" targetptr="svcs-1" remap="external"><citerefentry><refentrytitle>svcs</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink>, and <olink targetdoc="group-refman" targetptr="svccfg-1m" remap="external"><citerefentry><refentrytitle>svccfg</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man pages
for more details. Also review the DNS server manifest, <literal>server.xml</literal>,
in <filename>/var/svc/manifest/network/dns</filename>.</para><itemizedlist><listitem><para>Administrative actions on this service, such as enabling,
disabling, or restarting, can be performed by using the <command>svcadm</command> command.</para><tip><para><indexterm><primary>FMRI</primary><secondary>LDAP</secondary></indexterm>Temporarily disabling a service by using the <option>t</option> option
provides some protection for the service configuration. If the service is
disabled with the <option>t</option> option, the original settings would be
restored for the service after a reboot. If the service is disabled without
 <option>t</option>, the service will remain disabled after reboot.</para>
</tip>
</listitem><listitem><para>The Fault Managed Resource Identifiers (FMRIs) for the DNS
service are <literal>svc:/network/dns/server:</literal><replaceable>&lt;instance&gt;</replaceable><literal></literal> and <literal>svc:/network/dns/client:</literal><replaceable>&lt;instance&gt;</replaceable><literal></literal>.</para>
</listitem><listitem><para>You can query the status of the DNS server and client by using
the <command>svcs</command> command.</para><itemizedlist><listitem><para>Example of the <command>svcs</command> command and output.</para><screen># <userinput>svcs \*dns\*</userinput>
STATE          STIME    FMRI
online         Nov_16   svc:/network/dns/server:default
online         Nov_16   svc:/network/dns/client:default</screen>
</listitem><listitem><para>Example of <command>svcs</command> <option>l</option> command
and output.</para><screen># <userinput>svcs -l /network/dns/server</userinput>
fmri         svc:/network/dns/server:default
name         Internet domain name server (DNS)
enabled      true
state        online
next_state   none
restarter    svc:/system/svc/restarter:default
contract_id  25 
dependency   require_all/none svc:/system/filesystem/minimal (online)
dependency   require_all/none file://localhost/etc/named.conf (online)
dependency   require_any/error svc:/network/loopback (online)
dependency   optional_all/error svc:/network/physical (online)</screen>
</listitem>
</itemizedlist>
</listitem><listitem><para>If you need to start the DNS service with different options
(for example with a configuration file other than <filename>/etc/named.conf</filename>),
change the <parameter>start method</parameter> property of the DNS server
manifest by using the <command>svccfg</command> command.</para>
</listitem><listitem><para>Multiple SMF service instances are only needed if you want
to run multiple copies of BIND 9 name service. Each additional instance can
be specified in the DNS server manifest with a different start method.</para>
</listitem>
</itemizedlist><para>While it is recommended that you use <command>svcadm</command> to administer
the server, you can use <command>rndc</command> as well. SMF is aware of the
state change of the BIND 9 named service, whether administered by using <command>svcadm</command> or <command>rndc</command>.</para><note><para>SMF will not be aware of the BIND 9 <command>named</command> service
 if the service is manually executed from the command line.</para>
</note>
</sect1><sect1 id="dnsref-4"><title>Implementing <command>rndc</command></title><para>The BIND 8 <command>ndc</command> and BIND 9 <command>rndc</command> name
server control tools are <emphasis>not</emphasis> backward compatible. <command>rndc</command> can <emphasis>not</emphasis> talk to the BIND 8 name server and <command>ndc</command> can <emphasis>not</emphasis> talk to the BIND 9 name server.
Features, options, default modes of operation, and configuration file requirements
have changed. Therefore, using <command>ndc</command> on a BIND 9 server could
result in loss of functionality or insecure operation. See the <command>rndc</command>(1M)
man page for more information.</para><sect2 id="dnsref-5"><title>The <filename>rndc.conf</filename> Configuration
File</title><para>The most significant difference between <command>ndc</command> in BIND
8 and <command>rndc</command> in BIND 9 is that <command>rndc</command> needs
its own configuration file, <filename>rndc.conf</filename>. This file can 
be generated by <command>rndc-confgen</command> commands. The <filename>rndc.conf</filename> file specifies which server controls and what algorithm the server
should use.</para><example id="dnsref-ex-24"><title>Sample <filename>rndc.conf</filename> File</title><screen>options {
             default-server localhost;
             default-key "rndc-key";
     };

     key "rndc-key" {
             algorithm hmac-md5;
             secret "qPWZ3Ndl81aBRY9AmJhVtU==";
     };</screen>
</example><example id="dnsintro-ex-14"><title>Sample <filename>named.conf</filename> File
Entry for <command>rndc</command></title><screen>controls {
             inet * allow { any; } keys { "rndc-key"; };
     };

     key "rndc-key" {
             algorithm hmac-md5;
             secret "qPWZ3Ndl81aBRY9AmJhVtU==";
     };</screen>
</example>
</sect2><sect2 id="dnsref-7"><title>Differences in the Control Channels</title><para>Both the <command>ndc</command> and the <command>rndc</command> utilities
use a control channel to send commands to and retrieve information from a
name server. However, there are differences between the utilities.</para><itemizedlist><listitem><para>In BIND 8, <command>ndc</command> can use AF_UNIX domain sockets
(UNIX control channel) or TCP/IP sockets (inet control channel). By default, <command>ndc</command> does not need any support in <filename>/etc/named.conf</filename>,
because BIND 8 servers use a UNIX domain socket with a path (<filename>/var/run/ndc.d/ndc</filename>) compiled into <command>in.named</command>.</para><para>For BIND
9, however, <command>rndc</command> only uses an authenticated TCP/IP inet
control channel and so is not backward compatible with BIND 8. There is no
UNIX domain socket support for control channels in BIND 9 servers.</para>
</listitem><listitem><para>When using <computeroutput>rndc</computeroutput>, you need
to specify a 'key' clause to communicate with the name server. It is mandatory
that the BIND 9 server and the <command>rndc</command> client share the same
key (defined both in <filename>/etc/named.conf</filename> and <filename>/etc/rndc.conf</filename>). Using the BIND 8 controls entry in BIND 9 will result in an
error message.</para>
</listitem><listitem><para>Some command options have changed from the <command>ndc</command> to
the <command>rndc</command> implementation. This includes the <option>c</option> option,
which has a different syntax in BIND 9. Therefore, to specify the control
channel in BIND 9, use <literal>rndc</literal> <option>s</option> <literal></literal><replaceable>&lt;server&gt;</replaceable> <literal></literal><option>p</option> <literal></literal><replaceable>&lt;port&gt;</replaceable><literal></literal>.</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="dnsref-8"><title>Commands of BIND 9 <command>rndc</command></title><para>The following list describes the <command>rndc</command> commands.</para><variablelist><varlistentry><term>reload</term><listitem><para>Reload configuration file and zones</para>
</listitem>
</varlistentry><varlistentry><term>reload zone [class [view]]</term><listitem><para>Reload a single zone</para>
</listitem>
</varlistentry><varlistentry><term>refresh zone [class [view]]</term><listitem><para>Schedule immediate maintenance for a zone</para>
</listitem>
</varlistentry><varlistentry><term>reconfig</term><listitem><para>Reload configuration file and new zones only</para>
</listitem>
</varlistentry><varlistentry><term>stats</term><listitem><para>Write server statistics to the statistics file</para>
</listitem>
</varlistentry><varlistentry><term>querylog</term><listitem><para>Toggle query logging</para>
</listitem>
</varlistentry><varlistentry><term>dumpdb</term><listitem><para>Dump cache(s) to the dump file (named_dump.db)</para>
</listitem>
</varlistentry><varlistentry><term>stop</term><listitem><para>Save pending updates to master files and stop the server</para>
</listitem>
</varlistentry><varlistentry><term>halt</term><listitem><para>Stop the server without saving pending updates</para>
</listitem>
</varlistentry><varlistentry><term>trace</term><listitem><para>Increment debugging level by one</para>
</listitem>
</varlistentry><varlistentry><term>trace level</term><listitem><para>Change the debugging level</para>
</listitem>
</varlistentry><varlistentry><term>notrace</term><listitem><para>Set debugging level to 0</para>
</listitem>
</varlistentry><varlistentry><term>flush</term><listitem><para>Flushes all of the server's caches</para>
</listitem>
</varlistentry><varlistentry><term>flush [view]</term><listitem><para>Flushes the server's cache for a view</para>
</listitem>
</varlistentry><varlistentry><term>status</term><listitem><para>Display status of the server</para>
</listitem>
</varlistentry><varlistentry><term>restart</term><listitem><para>Restart the server (not yet implemented)</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1><sect1 id="dnsref-9"><title>BIND 9 Commands, Files, Tools, and Options</title><para>Some commands, files, tools, and options have remained the same in BIND
9 as they were in BIND 8. However, some have been modified and others have
been added. This section describes many of the commands, files, tools, and
options in BIND 9 and the new or modified behavior associated with each item.</para><sect2 id="dnsref-11"><title>BIND 9 Tools and Configuration Files</title><para>The following BIND 9.x tools are available with the Solaris operating
system.</para><simplelist><member><command>named</command></member><member><command>nsupdate</command></member><member><command>rndc</command></member><member><command>dnssec-keygen</command></member><member><command>nslookup</command></member><member><command>dig</command></member><member><command>dnssec-makekeyset</command></member><member><command>dnssec-signkey</command></member><member><command>dnssec-signzone</command></member><member><command>named-checkconf</command></member><member><command>named-checkzone</command></member><member><command>rndc-confgen</command></member><member><command>host</command></member>
</simplelist><para>The following BIND 9.x configuration file is supported in Solaris 10 and
Solaris Express Developer Edition releases.</para><simplelist><member>/etc/rndc.conf</member>
</simplelist>
</sect2><sect2 id="dnsref-10"><title>Comparison of BIND 8 and BIND 9 Commands
and Files</title><para>The table below compares BIND 8 and BIND 9 commands and configuration
files.</para><informaltable frame="none"><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec0" colwidth="50*"/><colspec colname="colspec1" colwidth="50*"/><thead><row><entry><para>BIND 8 Command</para>
</entry><entry><para>BIND 9.x Replacement</para>
</entry>
</row>
</thead><tbody><row><entry><para><command>dnskeygen</command>(1M)</para>
</entry><entry><para><command>dnssec-keygen</command>(1M)</para>
</entry>
</row><row><entry colname="colspec0"><para><command>ndc</command>(1M)</para>
</entry><entry colname="colspec1"><para><command>rndc</command>(1M)</para>
</entry>
</row><row><entry colname="colspec0"><para><command>named-bootconf</command>(1M)</para>
</entry><entry colname="colspec1"><para>NONE NEEDED</para>
</entry>
</row><row><entry colname="colspec0"><para><command>nsupdate</command>(1M)</para>
</entry><entry colname="colspec1"><para><command>nsupdate</command>(1M)</para>
</entry>
</row><row><entry colname="colspec0"><para><command>nslookup</command>(1M)</para>
</entry><entry colname="colspec1"><para><command>nslookup</command>(1M)</para>
</entry>
</row><row><entry colname="colspec0"><para><command>named-xfer</command>(1M)</para>
</entry><entry colname="colspec1"><para>NONE NEEDED</para>
</entry>
</row><row><entry colname="colspec0"><para><command>in.named</command>(1M)</para>
</entry><entry colname="colspec1"><para><command>named</command>(1M)</para>
</entry>
</row><row><entry colname="colspec0"><para><command>named.conf</command>(4)</para>
</entry><entry colname="colspec1"><para><command>named.conf</command><footnote id="dnsref-fn-26"><para>A detailed <command>named.conf</command> man page is not included with
BIND 9.2.4. <olink targetptr="dnsref-13" remap="internal">The named.conf Options</olink> includes
a summary of the <command>named.conf</command> options that are supported
in BIND 9.2.4.</para></footnote></para>
</entry>
</row><row><entry colname="colspec0"><para><command>dig</command>(1M)</para>
</entry><entry colname="colspec1"><para><command>dig</command>(1M)</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2><sect2 id="dnsref-12"><title>Descriptions of Command and Option Changes</title><para>All incompatibles listed below are BIND 8 features and interfaces that
are <emphasis>not</emphasis> supported in the equivalent BIND 9 binary. This
is not intended to be an exhaustive list of the options, command line options,
or features for any BIND 9.x binary.</para><informaltable frame="none"><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec0" colwidth="27.04*"/><colspec colname="colspec1" colwidth="72.96*"/><thead><row><entry><para>Command</para>
</entry><entry><para>Option Changes</para>
</entry>
</row>
</thead><tbody><row><entry><para><command>in.named</command>(1M)</para>
</entry><entry><para>Some DNS name server <command>in.named</command> command line options
are not supported.</para><para>In the BIND 9.x name server, the <option>g</option> <replaceable>group_name</replaceable>, <option>q</option>, <option>r</option> and <option>w</option> <replaceable>directory</replaceable> options are not supported, and <option>c</option> <replaceable>config_file</replaceable> replaces the BIND 8.x <option>b</option> <replaceable>config_file</replaceable>. See the <command>named</command> man page for further details.</para>
</entry>
</row><row><entry colname="colspec0"><para><command>dnssec-keygen</command>(1M)</para>
</entry><entry colname="colspec1"><para><command>dnskeygen</command> in BIND 8.x, used to generate keys, and <command>dnssec-keygen</command> from BIND 9.x, have no common options. See the <command>dnssec-keygen</command> man page for further details.</para>
</entry>
</row><row><entry colname="colspec0"><para><command>rndc</command>(1M)</para>
</entry><entry colname="colspec1"><para><command>ndc</command> in BIND 8.x and <command>rndc</command> in BIND
9.x are significantly different. They share no common options and unlike <command>ndc</command>, <command>rndc</command> needs a configuration file in <filename>/etc/rndc.conf
in order to run</filename>. See man pages for <filename>rndc</filename>, <filename>rndc.conf</filename>, and <filename>rndc-confgen</filename> for further details.</para>
</entry>
</row><row><entry colname="colspec0"><para><olink targetdoc="group-refman" targetptr="nsupdate-1m" remap="external"><citerefentry><refentrytitle>nsupdate</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink></para>
</entry><entry colname="colspec1"><para>In BIND 9.x, the syntax of the <option>k</option> option changes in <command>nsupdate</command>. Instead of <option>k</option> <replaceable>keydir::keyname</replaceable>,
the syntax is now <command>k</command> <replaceable>keyfile</replaceable>.
The only other difference is that whereas a blank line was used to signal
sending the input to the server, an explicit <literal>send</literal> subcommand
is now used to do the same. See the <command>nsupdate</command> man page for
further details.</para>
</entry>
</row><row><entry colname="colspec0"><para><olink targetdoc="group-refman" targetptr="nslookup-1m" remap="external"><citerefentry><refentrytitle>nslookup</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink></para>
</entry><entry colname="colspec1"><para>The following options are unsupported in the 9.x version of BIND: <literal>help</literal>, <literal>host server</literal>, <literal>set ignoretc</literal>, <literal>set noignoretc</literal>, <literal>set srch[list]=N1[/N2/.../N6]</literal>, <literal>set ro[ot]=host</literal>, <literal>root</literal>, <literal>finger [USER]</literal>, <literal>ls [opt] DOMAIN [&gt; FILE]</literal></para>
</entry>
</row><row><entry colname="colspec0"><para><command>named.conf</command>(4)</para>
</entry><entry colname="colspec1"><para>A detailed <command>named.conf</command> man page is not included with
BIND 9.2.4. Several options are unsupported, not implemented, or have changed
defaults. For a list of the option changes and a summary of all <command>named.conf</command> options that are supported in BIND 9.2.4, see <olink targetptr="dnsref-13" remap="internal">The named.conf Options</olink>.</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1><sect1 id="dnsref-13"><title>The <command>named.conf</command> Options</title><para>The following list compares the <command>named.conf</command> options
between BIND 8 and BIND 9. It also provides a brief description of the changes.
An <emphasis>OK</emphasis> in the Changes column denotes the option works
unchanged for the BIND 9 version of <command>named</command>.</para><informaltable frame="none"><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="colspec2" colwidth="50*"/><colspec colname="colspec3" colwidth="50*"/><thead><row><entry><para>Options {</para>
</entry><entry><para>Changes</para>
</entry>
</row>
</thead><tbody><row><entry><para>[ version version_string; ]</para>
</entry><entry><para>OK</para>
</entry>
</row><row><entry><para>[ directory path_name; ]</para>
</entry><entry><para>OK</para>
</entry>
</row><row><entry><para>[ named-xfer path_name; ]</para>
</entry><entry><para>Obsolete<footnote id="dnsref-fn-14"><para>Obsolete due to architectural differences.</para></footnote></para>
</entry>
</row><row><entry><para>[ dump-file path_name; ]</para>
</entry><entry><para>OK</para>
</entry>
</row><row><entry><para>[ memstatistics-file path_name; ]</para>
</entry><entry><para>Not Implemented</para>
</entry>
</row><row><entry><para>[ pid-file path_name; ]</para>
</entry><entry><para>OK</para>
</entry>
</row><row><entry><para>[ statistics-file path_name; ]</para>
</entry><entry><para>OK</para>
</entry>
</row><row><entry><para>[ auth-nxdomain yes_or_no; ]</para>
</entry><entry><para>OK<footnote id="dnsref-fn-27"><para>Default set to <emphasis>yes</emphasis> in BIND 8, <emphasis>no</emphasis> in
BIND 9.</para></footnote></para>
</entry>
</row><row><entry><para>[ dialup yes_or_no;</para>
</entry><entry><para>OK</para>
</entry>
</row><row><entry><para>[ fake-iquery yes_or_no; ]</para>
</entry><entry><para>Obsolete</para>
</entry>
</row><row><entry><para>[ fetch-glue yes_or_no; ]</para>
</entry><entry><para>Obsolete</para>
</entry>
</row><row><entry><para>[ has-old-clients yes_or_no; ]</para>
</entry><entry><para>Obsolete</para>
</entry>
</row><row><entry><para>[ host-statistics yes_or_no; ]</para>
</entry><entry><para>Not Implemented</para>
</entry>
</row><row><entry><para>[ host-statistics-max number; ]</para>
</entry><entry><para>Not Implemented</para>
</entry>
</row><row><entry><para>[ multiple-cnames yes_or_no; ]</para>
</entry><entry><para>Obsolete</para>
</entry>
</row><row><entry><para>[ notify yes_or_no | explicit; ]</para>
</entry><entry><para>OK</para>
</entry>
</row><row><entry><para>[ recursion yes_or_no; ]</para>
</entry><entry><para>OK</para>
</entry>
</row><row><entry><para>[ rfc2308-type1 yes_or_no; ]</para>
</entry><entry><para>Not Implemented</para>
</entry>
</row><row><entry><para>[ use-id-pool yes_or_no; ]</para>
</entry><entry><para>Obsolete</para>
</entry>
</row><row><entry colname="colspec2"><para>[ treat-cr-as-space yes_or_no; ]</para>
</entry><entry colname="colspec3"><para>Obsolete</para>
</entry>
</row><row><entry colname="colspec2"><para>[ also-notify yes_or_no; ]</para>
</entry><entry colname="colspec3"><para>Syntax Changed<footnote id="dnsref-fn-28"><para>Needs an IP address for <emphasis>yes</emphasis>.</para></footnote></para>
</entry>
</row><row><entry colname="colspec2"><para>[ forward ( only | first ); ]</para>
</entry><entry colname="colspec3"><para>OK<footnote id="dnsref-fn-29"><para>Doesn't work if no forwarder specified; Gives an error of <literal>no
matching 'forwarders' statement</literal> in that case.</para></footnote></para>
</entry>
</row><row><entry colname="colspec2"><para>[ forwarders { [ in_addr ; \</para><para>[ in_addr ; ... ] ] }; ]</para>
</entry><entry colname="colspec3"><para></para><para>OK<footnote id="dnsref-fn-30"><para>See [ forward ] clause.</para></footnote></para>
</entry>
</row><row><entry colname="colspec2"><para>[ check-names ( master | slave | \</para><para>response ) ( warn | fail | ignore); ]</para>
</entry><entry colname="colspec3"><para>Not Implemented</para>
</entry>
</row><row><entry colname="colspec2"><para>[ allow-query { address_match_list }; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ allow-recursion { address_match_list }; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ allow-transfer { address_match_list }; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ blackhole { address_match_list }; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ listen-on [ port ip_port ] \</para><para>{ address_match_list }; ]</para>
</entry><entry colname="colspec3"><para></para><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ query-source [ address ( ip_addr | * ) ]	\</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ port ( ip_port | * ) ] ; ]</para><para>[ lame-ttl number; ]</para>
</entry><entry colname="colspec3"><para></para><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ max-transfer-time-in number; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ max-ncache-ttl number; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ min-roots number; ]</para>
</entry><entry colname="colspec3"><para>Not Implemented</para>
</entry>
</row><row><entry colname="colspec2"><para>[ transfer-format ( one-answer | \</para><para>many-answers ); ]</para>
</entry><entry colname="colspec3"><para></para><para>OK<footnote id="dnsref-fn-31"><para>Default set to <parameter>one-answer</parameter> in BIND 8 and <parameter>many-answers</parameter> in BIND 9.</para></footnote></para>
</entry>
</row><row><entry colname="colspec2"><para>[ transfers-in number; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ transfers-out number; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ transfers-per-ns number; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ transfer-source ip_addr; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ maintain-ixfr-base yes_or_no; ]</para>
</entry><entry colname="colspec3"><para>Obsolete</para>
</entry>
</row><row><entry colname="colspec2"><para>[ max-ixfr-log-size number; ]</para>
</entry><entry colname="colspec3"><para>Obsolete<footnote id="dnsref-fn-32"><para>No need for this option as BIND 9 trims the size of its log file automatically.</para></footnote></para>
</entry>
</row><row><entry colname="colspec2"><para>[ coresize size_spec ; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ datasize size_spec ; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ files size_spec ; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ stacksize size_spec ; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ cleaning-interval number; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ heartbeat-interval number; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ interface-interval number; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ statistics-interval number; ]</para>
</entry><entry colname="colspec3"><para>Not Implemented</para>
</entry>
</row><row><entry colname="colspec2"><para>[ topology { address_match_list }; ]</para>
</entry><entry colname="colspec3"><para>Not Implemented</para>
</entry>
</row><row><entry colname="colspec2"><para>[ sortlist { address_match_list }; ]</para>
</entry><entry colname="colspec3"><para>OK</para>
</entry>
</row><row><entry colname="colspec2"><para>[ rrset-order { order_spec ; \</para><para>[ order_spec ; ... ] }; ]</para>
</entry><entry colname="colspec3"><para></para><para>Not Implemented</para>
</entry>
</row><row><entry colname="colspec2"><para>};</para>
</entry><entry colname="colspec3"><para></para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable><sect2 id="dnsref-15"><title>Statements in BIND 9</title><para>This section describes any differences between BIND 8 and BIND 9 statements.</para><sect3 id="dnsref-16"><title>The <literal>Controls</literal> Statement</title><para><emphasis>unix</emphasis> is the default for <command>ndc</command> and
all of the arguments are compiled in. <emphasis>inet</emphasis> is the only
option for <command>rndc</command> and nothing is compiled in.</para><screen>  Syntax
     controls {
       [ inet ip_addr
         port ip_port
         allow { address_match_list; }; ]	OK
       [ unix path_name
         perm number
         owner number
         group number; ]			Not Implemented
     };</screen><para>Logging syntax has changed significantly. See <olink targetptr="dnsref-13" remap="internal">The named.conf Options</olink> for a list of <command>named.conf</command> options.</para>
</sect3><sect3 id="dnsref-17"><title>The <literal>Zone</literal> Statement</title><para>The syntax for the zone statement in the BIND 8 <command>named.conf</command> man
page is.mostly supported for BIND 9 except for the following:</para><screen>  [ pubkey number number number string; ]	Obsolete
  [ check-names ( warn | fail | ignore ); ]	Not Implemented</screen>
</sect3><sect3 id="dnsref-18"><title>The <literal>ACL</literal> Statement</title><para>Works unchanged in BIND 9.</para><screen>  Syntax
     acl name {
       address_match_list
     };</screen>
</sect3><sect3 id="dnsref-19"><title>The <literal>Key</literal> Statement</title><para>Works unchanged in BIND 9.</para><screen>  Syntax
     key key_id {
       algorithm algorithm_id;
       secret secret_string;
     };</screen>
</sect3><sect3 id="dnsref-20"><title>The <literal>Trusted-Keys</literal> Statement</title><para>Works unchanged, however the code to use this statement has been turned
off in BIND 9.2.4.</para><screen>  Syntax
     trusted-keys {
       [ domain_name flags protocol algorithm key; ]
     };</screen>
</sect3><sect3 id="dnsref-21"><title>The <literal>Server</literal> Statement</title><para><parameter>support-ixfr</parameter> is obsolete, however all of the
following options work unchanged in BIND 9. Note the default for <parameter>transfer-format</parameter> has changed.</para><screen>  Syntax
     server ip_addr {
       [ bogus yes_or_no; ]
       [ transfers number; ]
       [ transfer-format ( one-answer | many-answers ); ]
       [ keys { key_id [ key_id ... ] }; ]
       [ edns yes_or_no; ]
     };</screen>
</sect3><sect3 id="dnsref-22"><title>The <literal>Include</literal> Statement</title><para>Works unchanged in BIND 9.</para><screen>  Syntax
     include path_name;</screen>
</sect3>
</sect2><sect2 id="dnsref-23"><title>Summary of the <command>named.conf</command> Options</title><para>A detailed <command>named.conf</command> man page is not included with
BIND 9.2.4. Following is a summary of the <command>named.conf</command> options
that are supported in BIND 9.2.4.</para><screen>options  {
        blackhole { &lt;address_match_element&gt;; ... };
        coresize &lt;size&gt;;
        datasize &lt;size&gt;;
        deallocate-on-exit &lt;boolean&gt;; // obsolete
        directory &lt;quoted_string&gt;;
        dump-file &lt;quoted_string&gt;;
        fake-iquery &lt;boolean&gt;; // obsolete
        files &lt;size&gt;;
        has-old-clients &lt;boolean&gt;; // obsolete
        heartbeat-interval &lt;integer&gt;;
        host-statistics &lt;boolean&gt;; // not implemented
        host-statistics-max &lt;integer&gt;; // not implemented
        interface-interval &lt;integer&gt;;
        listen-on [ port &lt;integer&gt; ] { &lt;address_match_element&gt;; ... };
        listen-on-v6 [ port &lt;integer&gt; ] { &lt;address_match_element&gt;; ... };
        match-mapped-addresses &lt;boolean&gt;;
        memstatistics-file &lt;quoted_string&gt;; // not implemented
        multiple-cnames &lt;boolean&gt;; // obsolete
        named-xfer &lt;quoted_string&gt;; // obsolete
        pid-file &lt;quoted_string&gt;;
        port &lt;integer&gt;;
        random-device &lt;quoted_string&gt;;
        recursive-clients &lt;integer&gt;;
        rrset-order { [ class &lt;string&gt; ] [ type &lt;string&gt; ] [ name
            &lt;quoted_string&gt; ] &lt;string&gt; &lt;string&gt;; ... }; // not implemented
        serial-queries &lt;integer&gt;; // obsolete
        serial-query-rate &lt;integer&gt;;
        stacksize &lt;size&gt;;
        statistics-file &lt;quoted_string&gt;;
        statistics-interval &lt;integer&gt;; // not yet implemented
        tcp-clients &lt;integer&gt;;
        tkey-dhkey &lt;quoted_string&gt; &lt;integer&gt;;
        tkey-gssapi-credential &lt;quoted_string&gt;;
        tkey-domain &lt;quoted_string&gt;;
        transfers-per-ns &lt;integer&gt;;
        transfers-in &lt;integer&gt;;
        transfers-out &lt;integer&gt;;
        treat-cr-as-space &lt;boolean&gt;; // obsolete
        use-id-pool &lt;boolean&gt;; // obsolete
        use-ixfr &lt;boolean&gt;;
        version &lt;quoted_string&gt;;
        allow-recursion { &lt;address_match_element&gt;; ... };
        allow-v6-synthesis { &lt;address_match_element&gt;; ... };
        sortlist { &lt;address_match_element&gt;; ... };
        topology { &lt;address_match_element&gt;; ... }; // not implemented
        auth-nxdomain &lt;boolean&gt;; // default changed
        minimal-responses &lt;boolean&gt;;
        recursion &lt;boolean&gt;;
        provide-ixfr &lt;boolean&gt;;
        request-ixfr &lt;boolean&gt;;
        fetch-glue &lt;boolean&gt;; // obsolete
        rfc2308-type1 &lt;boolean&gt;; // not yet implemented
        additional-from-auth &lt;boolean&gt;;
        additional-from-cache &lt;boolean&gt;;
        query-source &lt;querysource4&gt;;
        query-source-v6 &lt;querysource6&gt;;
        cleaning-interval &lt;integer&gt;;
        min-roots &lt;integer&gt;; // not implemented
        lame-ttl &lt;integer&gt;;
        max-ncache-ttl &lt;integer&gt;;
        max-cache-ttl &lt;integer&gt;;
        transfer-format ( many-answers | one-answer );
        max-cache-size &lt;size_no_default&gt;;
        check-names &lt;string&gt; &lt;string&gt;; // not implemented
        cache-file &lt;quoted_string&gt;;
        allow-query { &lt;address_match_element&gt;; ... };
        allow-transfer { &lt;address_match_element&gt;; ... };
        allow-update-forwarding { &lt;address_match_element&gt;; ... };
        allow-notify { &lt;address_match_element&gt;; ... };
        notify &lt;notifytype&gt;;
        notify-source ( &lt;ipv4_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        notify-source-v6 ( &lt;ipv6_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        also-notify [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt;
            ) [ port &lt;integer&gt; ]; ... };
        dialup &lt;dialuptype&gt;;
        forward ( first | only );
        forwarders [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt; )
            [ port &lt;integer&gt; ]; ... };
        maintain-ixfr-base &lt;boolean&gt;; // obsolete
        max-ixfr-log-size &lt;size&gt;; // obsolete
        transfer-source ( &lt;ipv4_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        transfer-source-v6 ( &lt;ipv6_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        max-transfer-time-in &lt;integer&gt;;
        max-transfer-time-out &lt;integer&gt;;
        max-transfer-idle-in &lt;integer&gt;;
        max-transfer-idle-out &lt;integer&gt;;
        max-retry-time &lt;integer&gt;;
        min-retry-time &lt;integer&gt;;
        max-refresh-time &lt;integer&gt;;
        min-refresh-time &lt;integer&gt;;
        sig-validity-interval &lt;integer&gt;;
        zone-statistics &lt;boolean&gt;;
};

controls {
        inet ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt; | * ) [ port ( &lt;integer&gt; | *
            ) ] allow { &lt;address_match_element&gt;; ... } [ keys { &lt;string&gt;; ... } ];
        unix &lt;unsupported&gt;; // not implemented
};

acl &lt;string&gt; { &lt;address_match_element&gt;; ... };

logging {
        channel &lt;string&gt; {
                file &lt;logfile&gt;;
                syslog &lt;optional_facility&gt;;
                null;
                stderr;
                severity &lt;logseverity&gt;;
                print-time &lt;boolean&gt;;
                print-severity &lt;boolean&gt;;
                print-category &lt;boolean&gt;;
        };
        category &lt;string&gt; { &lt;string&gt;; ... };
};

view &lt;string&gt; &lt;optional_class&gt; {
        match-clients { &lt;address_match_element&gt;; ... };
        match-destinations { &lt;address_match_element&gt;; ... };
        match-recursive-only &lt;boolean&gt;;
        key &lt;string&gt; {
                algorithm &lt;string&gt;;
                secret &lt;string&gt;;
        };
        zone &lt;string&gt; &lt;optional_class&gt; {
                type ( master | slave | stub | hint | forward );
                allow-update { &lt;address_match_element&gt;; ... };
                file &lt;quoted_string&gt;;
                ixfr-base &lt;quoted_string&gt;; // obsolete
                ixfr-tmp-file &lt;quoted_string&gt;; // obsolete
                masters [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; |
                    &lt;ipv6_address&gt; ) [ port &lt;integer&gt; ] [ key &lt;string&gt; ]; ... };
                pubkey &lt;integer&gt; &lt;integer&gt; &lt;integer&gt; &lt;quoted_string&gt;; //
                    obsolete
                update-policy { ( grant | deny ) &lt;string&gt; ( name |
                    subdomain | wildcard | self ) &lt;string&gt; &lt;rrtypelist&gt;; ... };
                database &lt;string&gt;;
                check-names &lt;string&gt;; // not implemented
                allow-query { &lt;address_match_element&gt;; ... };
                allow-transfer { &lt;address_match_element&gt;; ... };
                allow-update-forwarding { &lt;address_match_element&gt;; ... };
                allow-notify { &lt;address_match_element&gt;; ... };
                notify &lt;notifytype&gt;;
                notify-source ( &lt;ipv4_address&gt; | * ) [ port ( &lt;integer&gt; | *
                    ) ];
                notify-source-v6 ( &lt;ipv6_address&gt; | * ) [ port ( &lt;integer&gt;
                    | * ) ];
                also-notify [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; |
                    &lt;ipv6_address&gt; ) [ port &lt;integer&gt; ]; ... };
                dialup &lt;dialuptype&gt;;
                forward ( first | only );
                forwarders [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; |
                    &lt;ipv6_address&gt; ) [ port &lt;integer&gt; ]; ... };
                maintain-ixfr-base &lt;boolean&gt;; // obsolete
                max-ixfr-log-size &lt;size&gt;; // obsolete
                transfer-source ( &lt;ipv4_address&gt; | * ) [ port ( &lt;integer&gt; |
                    * ) ];
                transfer-source-v6 ( &lt;ipv6_address&gt; | * ) [ port (
                    &lt;integer&gt; | * ) ];
                max-transfer-time-in &lt;integer&gt;;
                max-transfer-time-out &lt;integer&gt;;
                max-transfer-idle-in &lt;integer&gt;;
                max-transfer-idle-out &lt;integer&gt;;
                max-retry-time &lt;integer&gt;;
                min-retry-time &lt;integer&gt;;
                max-refresh-time &lt;integer&gt;;
                min-refresh-time &lt;integer&gt;;
                sig-validity-interval &lt;integer&gt;;
                zone-statistics &lt;boolean&gt;;
        };
        server {
                bogus &lt;boolean&gt;;
                provide-ixfr &lt;boolean&gt;;
                request-ixfr &lt;boolean&gt;;
                support-ixfr &lt;boolean&gt;; // obsolete
                transfers &lt;integer&gt;;
                transfer-format ( many-answers | one-answer );
                keys &lt;server_key&gt;;
                edns &lt;boolean&gt;;
        };
        trusted-keys { &lt;string&gt; &lt;integer&gt; &lt;integer&gt; &lt;integer&gt;
            &lt;quoted_string&gt;; ... };
        allow-recursion { &lt;address_match_element&gt;; ... };
        allow-v6-synthesis { &lt;address_match_element&gt;; ... };
        sortlist { &lt;address_match_element&gt;; ... };
        topology { &lt;address_match_element&gt;; ... }; // not implemented
        auth-nxdomain &lt;boolean&gt;; // default changed
        minimal-responses &lt;boolean&gt;;
        recursion &lt;boolean&gt;;
        provide-ixfr &lt;boolean&gt;;
        request-ixfr &lt;boolean&gt;;
        fetch-glue &lt;boolean&gt;; // obsolete
        rfc2308-type1 &lt;boolean&gt;; // not yet implemented
        additional-from-auth &lt;boolean&gt;;
        additional-from-cache &lt;boolean&gt;;
        query-source &lt;querysource4&gt;;
        query-source-v6 &lt;querysource6&gt;;
        cleaning-interval &lt;integer&gt;;
        min-roots &lt;integer&gt;; // not implemented
        lame-ttl &lt;integer&gt;;
        max-ncache-ttl &lt;integer&gt;;
        max-cache-ttl &lt;integer&gt;;
        transfer-format ( many-answers | one-answer );
        max-cache-size &lt;size_no_default&gt;;
        check-names &lt;string&gt; &lt;string&gt;; // not implemented
        cache-file &lt;quoted_string&gt;;
        allow-query { &lt;address_match_element&gt;; ... };
        allow-transfer { &lt;address_match_element&gt;; ... };
        allow-update-forwarding { &lt;address_match_element&gt;; ... };
        allow-notify { &lt;address_match_element&gt;; ... };
        notify &lt;notifytype&gt;;
        notify-source ( &lt;ipv4_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        notify-source-v6 ( &lt;ipv6_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        also-notify [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt;
            ) [ port &lt;integer&gt; ]; ... };
        dialup &lt;dialuptype&gt;;
        forward ( first | only );
        forwarders [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt; )
            [ port &lt;integer&gt; ]; ... };
        maintain-ixfr-base &lt;boolean&gt;; // obsolete
        max-ixfr-log-size &lt;size&gt;; // obsolete
        transfer-source ( &lt;ipv4_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        transfer-source-v6 ( &lt;ipv6_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        max-transfer-time-in &lt;integer&gt;;
        max-transfer-time-out &lt;integer&gt;;
        max-transfer-idle-in &lt;integer&gt;;
        max-transfer-idle-out &lt;integer&gt;;
        max-retry-time &lt;integer&gt;;
        min-retry-time &lt;integer&gt;;
        max-refresh-time &lt;integer&gt;;
        min-refresh-time &lt;integer&gt;;
        sig-validity-interval &lt;integer&gt;;
        zone-statistics &lt;boolean&gt;;
};

lwres {
        listen-on [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt; )
            [ port &lt;integer&gt; ]; ... };
        view &lt;string&gt; &lt;optional_class&gt;;
        search { &lt;string&gt;; ... };
        ndots &lt;integer&gt;;
};

key &lt;string&gt; {
        algorithm &lt;string&gt;;
        secret &lt;string&gt;;
};

zone &lt;string&gt; &lt;optional_class&gt; {
        type ( master | slave | stub | hint | forward );
        allow-update { &lt;address_match_element&gt;; ... };
        file &lt;quoted_string&gt;;
        ixfr-base &lt;quoted_string&gt;; // obsolete
        ixfr-tmp-file &lt;quoted_string&gt;; // obsolete
        masters [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt; ) [
            port &lt;integer&gt; ] [ key &lt;string&gt; ]; ... };
        pubkey &lt;integer&gt; &lt;integer&gt; &lt;integer&gt; &lt;quoted_string&gt;; // obsolete
        update-policy { ( grant | deny ) &lt;string&gt; ( name | subdomain |
            wildcard | self ) &lt;string&gt; &lt;rrtypelist&gt;; ... };
        database &lt;string&gt;;
        check-names &lt;string&gt;; // not implemented
        allow-query { &lt;address_match_element&gt;; ... };
        allow-transfer { &lt;address_match_element&gt;; ... };
        allow-update-forwarding { &lt;address_match_element&gt;; ... };
        allow-notify { &lt;address_match_element&gt;; ... };
        notify &lt;notifytype&gt;;
        notify-source ( &lt;ipv4_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        notify-source-v6 ( &lt;ipv6_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        also-notify [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt;
            ) [ port &lt;integer&gt; ]; ... };
        dialup &lt;dialuptype&gt;;
        forward ( first | only );
        forwarders [ port &lt;integer&gt; ] { ( &lt;ipv4_address&gt; | &lt;ipv6_address&gt; )
            [ port &lt;integer&gt; ]; ... };
        maintain-ixfr-base &lt;boolean&gt;; // obsolete
        max-ixfr-log-size &lt;size&gt;; // obsolete
        transfer-source ( &lt;ipv4_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        transfer-source-v6 ( &lt;ipv6_address&gt; | * ) [ port ( &lt;integer&gt; | * ) ];
        max-transfer-time-in &lt;integer&gt;;
        max-transfer-time-out &lt;integer&gt;;
        max-transfer-idle-in &lt;integer&gt;;
        max-transfer-idle-out &lt;integer&gt;;
        max-retry-time &lt;integer&gt;;
        min-retry-time &lt;integer&gt;;
        max-refresh-time &lt;integer&gt;;
        min-refresh-time &lt;integer&gt;;
        sig-validity-interval &lt;integer&gt;;
        zone-statistics &lt;boolean&gt;;
};

server {
        bogus &lt;boolean&gt;;
        provide-ixfr &lt;boolean&gt;;
        request-ixfr &lt;boolean&gt;;
        support-ixfr &lt;boolean&gt;; // obsolete
        transfers &lt;integer&gt;;
        transfer-format ( many-answers | one-answer );
        keys &lt;server_key&gt;;
        edns &lt;boolean&gt;;
};

trusted-keys { &lt;string&gt; &lt;integer&gt; &lt;integer&gt; &lt;integer&gt; &lt;quoted_string&gt;; ... };
			</screen>
</sect2>
</sect1><sect1 id="dnsref-28"><title>Multicast DNS and Service Discovery</title><para><indexterm><primary>multicast DNS</primary></indexterm><indexterm><primary>DNS service discovery</primary></indexterm>Two extensions to the
DNS protocol are multicast DNS (mDNS) and DNS Service Discovery (DNS-SD).
mDNS extends the Domain Name Service system to operate over link-local multicast.
DNS-SD adds support needed to discover network services over DNS. </para><sect2 id="dnsref-29"><title>Multicast DNS</title><para>Multicast DNS (mDNS) provides a naming service system that is easy to
set up and maintain, for computers on a local link. All participating network
devices on the same local link perform standard DNS functions, using multicast
DNS rather than unicast, and do not need a unicast DNS server.   For administrators,
the primary advantage of mDNS is that no unicast DNS server needs to be maintained
on the local network. There is no need, for example, to update and maintain
host names in files to resolve hostname to IP address for devices on the local
link that are using mDNS.</para>
</sect2><sect2 id="gfbih"><title>Service Discovery</title><para><indexterm><primary>network services</primary></indexterm><indexterm><primary>service discovery</primary></indexterm>Network services include printing,
file transfer, music sharing, servers for photo, document and other file sharing,
and services provided by other local devices. DNS service discovery support
in the Solaris OS includes open source framework and tools from Apple to enable
applications to advertise and discover network services, using DNS on the
Solaris OS. </para><para>For users, network service discovery makes computing easier by enabling
users to browse for services on the network, rather than needing to find the
service manually. Existing standards, and work done by other companies and
groups, assure that cross-platform support is available. </para>
</sect2><sect2 id="gfbgt"><title>Administering mDNS</title><para>Use the Service Management Facility (SMF) to administer the mDNS daemon.
 You can use SMF to start and stop the mDNS service. </para><para>For an overview of SMF, refer to <olink targetdoc="sysadv1" targetptr="hbrunlevels-25516" remap="external">Chapter 16, <citetitle remap="chapter">Managing Services (Overview),</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>. Also refer to the <olink targetdoc="group-refman" targetptr="svcadm-1m" remap="external"><citerefentry><refentrytitle>svcadm</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> and <olink targetdoc="group-refman" targetptr="svcs-1" remap="external"><citerefentry><refentrytitle>svcs</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink> man pages for more details.</para>
</sect2><sect2 id="gfbht"><title>mDNS Deployment</title><para><indexterm><primary>mDNS deployment</primary></indexterm>For mDNS to
function, it must be deployed on all peers that are to participate in mDNS.
It is used to advertise the availability of services provided on the peer.</para><para>Multicast DNS and Service Discovery are both installed by default in
the &ldquo;all&rdquo; cluster, when installing the Solaris OS. For other types
of devices, for example, printers, music, video, and communication devices,
many already have mDNS installed.</para><para>In addition to being installed, mDNS must be enabled, and must be included
in the <filename>/etc/nsswitch.conf</filename> file. See <olink targetdoc="group-refman" targetptr="nsswitch.conf-4" remap="external"><citerefentry><refentrytitle>nsswitch.conf</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink></para>
</sect2><sect2 id="gfbhg"><title>Enable mDNS</title><para>For the Solaris OS, as root, or as a user with appropriate privileges,
enable mDNS on each computer that will participate in mDNS.</para><screen># <userinput>svcadm enable svc:/network/dns/multicast:default</userinput></screen><para>Enabling mDNS this way persists through upgrades and reboots. For more
information, see <olink targetdoc="group-refman" targetptr="svcadm-1m" remap="external"><citerefentry><refentrytitle>svcadm</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>.</para>
</sect2><sect2 id="gfbhi"><title>Edit <filename>nsswitch.conf</filename></title><para><indexterm><primary><filename>nsswitch.conf</filename> and mDNS</primary></indexterm>To be able to resolve local hosts, edit the <parameter>nsswitch.conf</parameter> file
and add mdns to the list of name services. For example, the file might look
like the following:</para><screen># /etc/nsswitch.conf   
hosts: files dns mdns   
ipnodes: files dns mdns</screen><para>For an example of the form such a file should take, see <filename>/etc/nswitch.conf.dns</filename>.</para>
</sect2><sect2 id="gfbik"><title>Review Errors or Messages</title><para><indexterm><primary>log for mDNS</primary></indexterm>Check the multicast
DNS service log for errors or messages.</para><para><filename>/var/svc/log/network-dns-multicast:default.log</filename></para>
</sect2><sect2 id="gfbin"><title>mDNS and dns-sd Tool</title><para><indexterm><primary>network diagnosis for mDNS</primary></indexterm><indexterm><primary><command>dns-sd</command> command</primary></indexterm>Use the <command>dns-sd</command> command as a network diagnosis tool, to browse and discover
services, similar to how you would use <command>ping (1M)</command> or <command>traceroute
(1M)</command>.</para><para>The <command>dns-sd</command> command is intended primarily for interactive
use, mainly because its command line arguments and its output format can change
over time, which makes invoking it from a shell script unpredictable and risky.
Additionally, the asynchronous nature of DNS Service Discovery does not easily
lend itself to script-oriented programming.</para><para>For complete dns-sd information, see the man page for <command>dns-sd
(1M)</command> and to incorporate DNS service in applications, see the <command>libdns_sd
(3DNS_SD)</command> man page.</para><para>EXAMPLES of the <command>dns-sd</command> command</para><para>Advertising a printing service</para><para>The following command advertises the existence of LPR printing service
on port 515 on &ldquo;My Test&rdquo; machine, so that it will be available
to DNS-SD compatible printing clients:</para><screen>dns-sd -R "My Test" _printer._tcp. . 515 pdl=application/postscript</screen><para>For this registration to be useful, the LPR service should be available
on port 515.</para><para>Advertising a web page</para><para>The following command advertises a web page being served by an HTTP
 server on port 80 on "My Test" machine. The web page will appear on the Bonjour
list in Safari and other DNS-SD compatible Web clients:</para><screen>dns-sd -R "My Test" _http._tcp . 80 path=/path-to-page.html</screen>
</sect2>
</sect1>
</chapter><?Pub *0000056650 0?>