<html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>BIND 10 Guide</title><linkrel="stylesheet"href="bind10-guide.css"type="text/css"><metaname="generator"content="DocBook XSL Stylesheets V1.75.2"></head><bodybgcolor="white"text="black"link="#0000FF"vlink="#840084"alink="#0000FF"><divclass="book"title="BIND 10 Guide"><divclass="titlepage"><div><div><h1class="title"><aname="id1168230342594"></a>BIND 10 Guide</h1></div><div><h2class="subtitle">Administrator Reference for BIND 10</h2></div><div><pclass="copyright">Copyright <20> 2010 Internet Systems Consortium, Inc.</p></div></div><hr></div><divclass="toc"><p><b>Table of Contents</b></p><dl><dt><spanclass="chapter"><ahref="#intro">1. Introduction</a></span></dt><dd><dl><dt><spanclass="section"><ahref="#id1168230342694">Supported Platforms</a></span></dt><dt><spanclass="section"><ahref="#id1168230342716">Required Software</a></span></dt><dt><spanclass="section"><ahref="#starting_stopping">Starting and Stopping the Server</a></span></dt><dt><spanclass="section"><ahref="#managing_once_running">Managing BIND 10</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="#installation">2. Installation</a></span></dt><dd><dl><dt><spanclass="section"><ahref="#id1168230628410">Building Requirements</a></span></dt><dt><spanclass="section"><ahref="#quickstart">Quick start</a></span></dt><dt><spanclass="section"><ahref="#install">Installation from source</a></span></dt><dd><dl><dt><spanclass="section"><ahref="#id1168230328354">Download Tar File</a></span></dt><dt><spanclass="section"><ahref="#id1168230328373">Retrieve from Subversion</a></span></dt><dt><spanclass="section"><ahref="#id1168230327652">Configure before the build</a></span></dt><dt><spanclass="section"><ahref="#id1168230328653">Build</a></span></dt><dt><spanclass="section"><ahref="#id1168230328668">Install</a></span></dt><dt><spanclass="section"><ahref="#id1168230328692">Install Hierarchy</a></span></dt></dl></dd></dl></dd><dt><spanclass="chapter"><ahref="#bind10">3. Starting BIND10 with <spanclass="command"><strong>bind10</strong></span></a></span></dt><dd><dl><dt><spanclass="section"><ahref="#start">Starting BIND 10</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="#msgq">4. Command channel</a></span></dt><dt><spanclass="chapter"><ahref="#cfgmgr">5. Configuration manager</a></span></dt><dt><spanclass="chapter"><ahref="#cmdctl">6. Remote control daemon</a></span></dt><dd><dl><dt><spanclass="section"><ahref="#cmdctl.spec">Configuration specification for b10-cmdctl</a></span></dt></dl></dd><dt><spanclass="chapter"><ahref="#bindctl">7. Control and configure user interface</a></span></dt><dt><spanclass="chapter"><ahref="#authserver">8. Authoritative Server</a></span></dt><dd><dl><dt><spanclass="section"><ahref="#id1168230329267">Server Configurations</a></span></dt><dt><spanclass="section"><ahref="#id1168230329332">Data Source Backends</a></span></dt><dt><spanclass="section"><ahref="#id1168230329362">Loading Master Zones Files</a></span></dt></dl></dd></dl></div><divclass="chapter"title="Chapter<65>1.<2E>Introduction"><divclass="titlepage"><div><div><h2class="title"><aname="intro"></a>Chapter<EFBFBD>1.<2E>Introduction</h2></div></div></div><divclass="toc"><p><b>Table of Contents</b></p><dl><dt><spanclass="section"><ahref="#id1168230342694">Supported Platforms</a></span></dt><dt><spanclass="section"><ahref="#id1168230342716">Required Software</a></span></dt><dt><spanclass="section"><ahref="#starting_stopping">Starting and Stopping the Server</a></span></dt><dt><spanclass="section"><ahref="#managing_once_running">Managing BIND 10</a></span></dt></dl></div><p>
Some operating systems do not provide these dependencies
in their default installation nor standard packages
collections.
You may need to install them separately.
</p></div></div><divclass="section"title="Starting and Stopping the Server"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aname="starting_stopping"></a>Starting and Stopping the Server</h2></div></div></div><p>
BIND 10 is modular. Part of this modularity is
accomplished using multiple cooperating processes which, together,
provide DNS functionality. This is a change from the previous generation
of BIND software, which used a single process.
</p><p>
At first, running many different processes may seem confusing. However,
these processes are started, stopped, and maintained by a single command,
<spanclass="command"><strong>bind10</strong></span>. Additionally, most processes started by
the <spanclass="command"><strong>bind10</strong></span> command have names starting with "b10-",
with one exception, <spanclass="command"><strong>msgq</strong></span>.
</p><p>
Starting and stopping the server is performed by a single command,
<spanclass="command"><strong>bind10</strong></span>. This command starts a master process
which will start other processes as needed.
</p><p>
Most of these are run automatically by a single command,
<spanclass="command"><strong>bind10</strong></span> and should not be run manually.
</p></div><divclass="chapter"title="Chapter<65>2.<2E>Installation"><divclass="titlepage"><div><div><h2class="title"><aname="installation"></a>Chapter<EFBFBD>2.<2E>Installation</h2></div></div></div><divclass="toc"><p><b>Table of Contents</b></p><dl><dt><spanclass="section"><ahref="#id1168230628410">Building Requirements</a></span></dt><dt><spanclass="section"><ahref="#quickstart">Quick start</a></span></dt><dt><spanclass="section"><ahref="#install">Installation from source</a></span></dt><dd><dl><dt><spanclass="section"><ahref="#id1168230328354">Download Tar File</a></span></dt><dt><spanclass="section"><ahref="#id1168230328373">Retrieve from Subversion</a></span></dt><dt><spanclass="section"><ahref="#id1168230327652">Configure before the build</a></span></dt><dt><spanclass="section"><ahref="#id1168230328653">Build</a></span></dt><dt><spanclass="section"><ahref="#id1168230328668">Install</a></span></dt><dt><spanclass="section"><ahref="#id1168230328692">Install Hierarchy</a></span></dt></dl></dd></dl></div><divclass="section"title="Building Requirements"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aname="id1168230628410"></a>Building Requirements</h2></div></div></div><divclass="note"title="Note"style="margin-left: 0.5in; margin-right: 0.5in;"><h3class="title">Note</h3><p>
</li></ol></div></div><divclass="section"title="Installation from source"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aname="install"></a>Installation from source</h2></div></div></div><p>
BIND 10 is open source software written in C++ and Python.
It is freely available in source code form from ISC via
the Subversion code revision control system or as a downloadable
tar file. It may also be available in pre-compiled ready-to-use
</p><divclass="section"title="Download Tar File"><divclass="titlepage"><div><div><h3class="title"><aname="id1168230328354"></a>Download Tar File</h3></div></div></div><p>
</p></div><divclass="section"title="Retrieve from Subversion"><divclass="titlepage"><div><div><h3class="title"><aname="id1168230328373"></a>Retrieve from Subversion</h3></div></div></div><p>
</p></div><divclass="section"title="Configure before the build"><divclass="titlepage"><div><div><h3class="title"><aname="id1168230327652"></a>Configure before the build</h3></div></div></div><p>
Run <spanclass="command"><strong>./configure</strong></span> with the <codeclass="option">--help</code>
switch to view the different options. The commonly-used options are:
</p><divclass="variablelist"><dl><dt><spanclass="term">--with-boostlib</span></dt><dd>Define the path to find the Boost system library.
</dd><dt><spanclass="term">--without-boostlib, </span><spanclass="term">--with-boostlib=no</span></dt><dd>Disable the Boost ASIO support.</dd><dt><spanclass="term">--with-pythonpath</span></dt><dd>Define the path to Python 3.1 if it is not in the
standard execution path.
</dd><dt><spanclass="term">--with-boost-include</span></dt><dd>Define the path to find the Boost headers.
</dd><dt><spanclass="term">--prefix</span></dt><dd>Define the the installation location (the
default is <codeclass="filename">/usr/local/</code>).
</dd></dl></div><p>
</p><p>
For example, the following configures it to build
with BOOST ASIO support, find the Boost headers, find the
Python interpreter, and sets the installation location:
</p></div></div></div><divclass="chapter"title="Chapter<65>3.<2E>Starting BIND10 with bind10"><divclass="titlepage"><div><div><h2class="title"><aname="bind10"></a>Chapter<EFBFBD>3.<2E>Starting BIND10 with <spanclass="command"><strong>bind10</strong></span></h2></div></div></div><divclass="toc"><p><b>Table of Contents</b></p><dl><dt><spanclass="section"><ahref="#start">Starting BIND 10</a></span></dt></dl></div><p>
BIND 10 provides the <spanclass="command"><strong>bind10</strong></span> command which
The configuration manager, <spanclass="command"><strong>b10-cfgmgr</strong></span>,
handles all BIND 10 system configuration. It provides
persistent storage for configuration, and notifies running
modules of configuration changes.</p><p>
The <spanclass="command"><strong>b10-auth</strong></span> and <spanclass="command"><strong>b10-xfrin</strong></span>
daemons and other components receive their configurations
from the configuration manager over the <spanclass="command"><strong>msgq</strong></span>
command channel.
</p><p>The administrator doesn't connect to it directly, but
uses a user interface to communicate with the configuration
manager via <spanclass="command"><strong>b10-cmdctl</strong></span>'s REST-ful interface.
<spanclass="command"><strong>b10-cmdctl</strong></span> is covered in <aclass="xref"href="#cmdctl"title="Chapter<65>6.<2E>Remote control daemon">Chapter<EFBFBD>6, <i>Remote control daemon</i></a>.
(The full path is what was defined at build configure time for
<codeclass="option">--localstatedir</code>.
The default is <codeclass="filename">/usr/local/var/</code>.)
The format is loosely based on JSON and is directly parseable
python, but this may change in a future version.
This configuration data file is not manually edited by the
administrator.
</p><p>
The configuration manager does not have any command line arguments.
Normally it is not started manually, but is automatically
started using the <spanclass="command"><strong>bind10</strong></span> master process
(as covered in <aclass="xref"href="#bind10"title="Chapter<65>3.<2E>Starting BIND10 with bind10">Chapter<EFBFBD>3, <i>Starting BIND10 with <spanclass="command"><strong>bind10</strong></span></i></a>).
</p></div><divclass="chapter"title="Chapter<65>6.<2E>Remote control daemon"><divclass="titlepage"><div><div><h2class="title"><aname="cmdctl"></a>Chapter<EFBFBD>6.<2E>Remote control daemon</h2></div></div></div><divclass="toc"><p><b>Table of Contents</b></p><dl><dt><spanclass="section"><ahref="#cmdctl.spec">Configuration specification for b10-cmdctl</a></span></dt></dl></div><p>
<spanclass="command"><strong>b10-cmdctl</strong></span> is the gateway between
administrators and the BIND 10 system.
It is a HTTPS server that uses standard HTTP Digest
Authentication for username and password validation.
It provides a REST-ful interface for accessing and controlling
BIND 10.
</p><p>
When <spanclass="command"><strong>b10-cmdctl</strong></span> starts, it firsts
asks <spanclass="command"><strong>b10-cfgmgr</strong></span> about what modules are
running and what their configuration is (over the
<spanclass="command"><strong>msgq</strong></span> channel). Then it will start listening
on HTTPS for clients — the user interface — such
as <spanclass="command"><strong>bindctl</strong></span>.
By default the HTTPS server listens on the localhost port 8080.
The port can be set by using the <codeclass="option">--port</code> command line option.
The address to listen on can be set using the <codeclass="option">--address</code> command
line argument.
Each HTTPS connection is stateless and timesout in 1200 seconds
by default. This can be
redefined by using the <codeclass="option">--idle-timeout</code> command line argument.
</p><divclass="section"title="Configuration specification for b10-cmdctl"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aname="cmdctl.spec"></a>Configuration specification for b10-cmdctl</h2></div></div></div><p>
The configuration items for <spanclass="command"><strong>b10-cmdctl</strong></span> are:
key_file
cert_file
accounts_file
</p><p>
The control commands are:
print_settings
shutdown
</p></div></div><divclass="chapter"title="Chapter<65>7.<2E>Control and configure user interface"><divclass="titlepage"><div><div><h2class="title"><aname="bindctl"></a>Chapter<EFBFBD>7.<2E>Control and configure user interface</h2></div></div></div><divclass="note"title="Note"style="margin-left: 0.5in; margin-right: 0.5in;"><h3class="title">Note</h3><p>
For the Y1 prototype release, <spanclass="command"><strong>bindctl</strong></span>
is the only user interface. It is expected that upcoming
releases will provide another interactive command-line
interface and a web-based interface for controlling and
configuring BIND 10.
</p></div><p>
The <spanclass="command"><strong>bindctl</strong></span> tool provides an interactive
prompt for configuring, controlling, and querying the BIND 10
components.
It communicates directly with a REST-ful interface over HTTPS
provided by <spanclass="command"><strong>b10-cmdctl</strong></span>. It doesn't
communicate to any other components directly.
</p><p>
Configuration changes are actually commands to
<spanclass="command"><strong>b10-cfgmgr</strong></span>. So when <spanclass="command"><strong>bindctl</strong></span>
sends a configuration, it is sent to <spanclass="command"><strong>b10-cmdctl</strong></span>
(over a HTTPS connection); then <spanclass="command"><strong>b10-cmdctl</strong></span>
sends the command (over a <spanclass="command"><strong>msgq</strong></span> command
channel) to <spanclass="command"><strong>b10-cfgmgr</strong></span> which then stores
the details and relays (over a <spanclass="command"><strong>msgq</strong></span> command
channel) the configuration on to the specified module.
</p></div><divclass="section"title="Loading Master Zones Files"><divclass="titlepage"><div><div><h2class="title"style="clear: both"><aname="id1168230329362"></a>Loading Master Zones Files</h2></div></div></div><p>