Bv9ARM.ch04.html revision dec590a3deb8e87380a8bd3a77d535dba3729bf6
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<!--
11e9368a226272085c337e9e74b79808c16fbdbaTinderbox User - Copyright (C) 2004-2015 Internet Systems Consortium, Inc. ("ISC")
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews - Copyright (C) 2000-2003 Internet Software Consortium.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -
4a14ce5ba00ab7bc55c99ffdcf59c7a4ab902721Automatic Updater - Permission to use, copy, modify, and/or distribute this software for any
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - purpose with or without fee is hereby granted, provided that the above
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - copyright notice and this permission notice appear in all copies.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein - PERFORMANCE OF THIS SOFTWARE.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein-->
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<html>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<head>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<title>Chapter�4.�Advanced DNS Features</title>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<link rel="home" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<link rel="up" href="Bv9ARM.html" title="BIND 9 Administrator Reference Manual">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<link rel="prev" href="Bv9ARM.ch03.html" title="Chapter�3.�Name Server Configuration">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<link rel="next" href="Bv9ARM.ch05.html" title="Chapter�5.�The BIND 9 Lightweight Resolver">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</head>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="navheader">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<table width="100%" summary="Navigation header">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr><th colspan="3" align="center">Chapter�4.�Advanced DNS Features</th></tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td width="20%" align="left">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<a accesskey="p" href="Bv9ARM.ch03.html">Prev</a>�</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<th width="60%" align="center">�</th>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td width="20%" align="right">�<a accesskey="n" href="Bv9ARM.ch05.html">Next</a>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</table>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<hr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="chapter">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h1 class="title">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="Bv9ARM.ch04"></a>Chapter�4.�Advanced DNS Features</h1></div></div></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="toc">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><b>Table of Contents</b></p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dl class="toc">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#notify">Notify</a></span></dt>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#dynamic_update">Dynamic Update</a></span></dt>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dd><dl><dt><span class="section"><a href="Bv9ARM.ch04.html#journal">The journal file</a></span></dt></dl></dd>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#incremental_zone_transfers">Incremental Zone Transfers (IXFR)</a></span></dt>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#split_dns">Split DNS</a></span></dt>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<dd><dl><dt><span class="section"><a href="Bv9ARM.ch04.html#split_dns_sample">Example split DNS setup</a></span></dt></dl></dd>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#tsig">TSIG</a></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dd><dl>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.6.5">Generating a Shared Key</a></span></dt>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.6.6">Loading A New Key</a></span></dt>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.6.7">Instructing the Server to Use a Key</a></span></dt>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.6.8">TSIG-Based Access Control</a></span></dt>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.6.9">Errors</a></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</dl></dd>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#tkey">TKEY</a></span></dt>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#sig0">SIG(0)</a></span></dt>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#DNSSEC">DNSSEC</a></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<dd><dl>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#dnssec_keys">Generating Keys</a></span></dt>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#dnssec_signing">Signing the Zone</a></span></dt>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#dnssec_config">Configuring Servers</a></span></dt>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater</dl></dd>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#dnssec.dynamic.zones">DNSSEC, Dynamic Zones, and Automatic Signing</a></span></dt>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<dd><dl>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.3">Converting from insecure to secure</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.8">Dynamic DNS update method</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.16">Fully automatic zone signing</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.25">Private-type records</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.32">DNSKEY rollovers</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.34">Dynamic DNS update method</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.39">Automatic key rollovers</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.41">NSEC3PARAM rollovers via UPDATE</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.43">Converting from NSEC to NSEC3</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.45">Converting from NSEC3 to NSEC</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.47">Converting from secure to insecure</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.51">Periodic re-signing</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.10.53">NSEC3 and OPTOUT</a></span></dt>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater</dl></dd>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#rfc5011.support">Dynamic Trust Anchor Management</a></span></dt>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<dd><dl>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.11.3">Validating Resolver</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.11.4">Authoritative Server</a></span></dt>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</dl></dd>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#pkcs11">PKCS#11 (Cryptoki) support</a></span></dt>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<dd><dl>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.12.6">Prerequisites</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.12.7">Native PKCS#11</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.12.8">OpenSSL-based PKCS#11</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.12.9">PKCS#11 Tools</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.12.10">Using the HSM</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.12.11">Specifying the engine on the command line</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.12.12">Running named with automatic zone re-signing</a></span></dt>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater</dl></dd>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#dlz-info">DLZ (Dynamically Loadable Zones)</a></span></dt>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<dd><dl>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.13.6">Configuring DLZ</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.13.7">Sample DLZ Driver</a></span></dt>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User</dl></dd>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<dt><span class="section"><a href="Bv9ARM.ch04.html#dyndb-info">DynDB (Dynamic Database)</a></span></dt>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<dd><dl>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.14.5">Configuring DynDB</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.14.6">Sample DynDB Module</a></span></dt>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User</dl></dd>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#ipv6">IPv6 Support in <acronym class="acronym">BIND</acronym> 9</a></span></dt>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<dd><dl>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.15.6">Address Lookups Using AAAA Records</a></span></dt>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<dt><span class="section"><a href="Bv9ARM.ch04.html#id-1.5.15.7">Address to Name Lookups Using Nibble Format</a></span></dt>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</dl></dd>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</dl>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="section">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="titlepage"><div><div><h2 class="title" style="clear: both">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<a name="notify"></a>Notify</h2></div></div></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews <acronym class="acronym">DNS</acronym> NOTIFY is a mechanism that allows master
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein servers to notify their slave servers of changes to a zone's data. In
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt response to a <span class="command"><strong>NOTIFY</strong></span> from a master server, the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein slave will check to see that its version of the zone is the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein current version and, if not, initiate a zone transfer.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews For more information about <acronym class="acronym">DNS</acronym>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>NOTIFY</strong></span>, see the description of the
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>notify</strong></span> option in <a class="xref" href="Bv9ARM.ch06.html#boolean_options" title="Boolean Options">the section called &#8220;Boolean Options&#8221;</a> and
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt the description of the zone option <span class="command"><strong>also-notify</strong></span> in
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <a class="xref" href="Bv9ARM.ch06.html#zone_transfers" title="Zone Transfers">the section called &#8220;Zone Transfers&#8221;</a>. The <span class="command"><strong>NOTIFY</strong></span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein protocol is specified in RFC 1996.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews<h3 class="title">Note</h3>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt As a slave zone can also be a master to other slaves, <span class="command"><strong>named</strong></span>,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt by default, sends <span class="command"><strong>NOTIFY</strong></span> messages for every zone
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt it loads. Specifying <span class="command"><strong>notify master-only;</strong></span> will
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews cause <span class="command"><strong>named</strong></span> to only send <span class="command"><strong>NOTIFY</strong></span> for master
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews zones that it loads.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<a name="dynamic_update"></a>Dynamic Update</h2></div></div></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Dynamic Update is a method for adding, replacing or deleting
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein records in a master server by sending it a special form of DNS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein messages. The format and meaning of these messages is specified
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User in RFC 2136.
acb72d5e2c83b597332e3eb0c7d59e1142f1adfdMark Andrews </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Dynamic update is enabled by including an
852ccdd42a71550c974111b49415204ffeca6573Automatic Updater <span class="command"><strong>allow-update</strong></span> or an <span class="command"><strong>update-policy</strong></span>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User clause in the <span class="command"><strong>zone</strong></span> statement.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
3cddb2c552ee6582e8db0849c28747f6b6ca57feAutomatic Updater<p>
3cddb2c552ee6582e8db0849c28747f6b6ca57feAutomatic Updater If the zone's <span class="command"><strong>update-policy</strong></span> is set to
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <strong class="userinput"><code>local</code></strong>, updates to the zone
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt will be permitted for the key <code class="varname">local-ddns</code>,
852ccdd42a71550c974111b49415204ffeca6573Automatic Updater which will be generated by <span class="command"><strong>named</strong></span> at startup.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User See <a class="xref" href="Bv9ARM.ch06.html#dynamic_update_policies" title="Dynamic Update Policies">the section called &#8220;Dynamic Update Policies&#8221;</a> for more details.
66f25f2ceeb589e67efe7af2413baaa3426b0042Automatic Updater </p>
66f25f2ceeb589e67efe7af2413baaa3426b0042Automatic Updater<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Dynamic updates using Kerberos signed requests can be made
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt using the TKEY/GSS protocol by setting either the
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>tkey-gssapi-keytab</strong></span> option, or alternatively
66f25f2ceeb589e67efe7af2413baaa3426b0042Automatic Updater by setting both the <span class="command"><strong>tkey-gssapi-credential</strong></span>
66f25f2ceeb589e67efe7af2413baaa3426b0042Automatic Updater and <span class="command"><strong>tkey-domain</strong></span> options. Once enabled,
66f25f2ceeb589e67efe7af2413baaa3426b0042Automatic Updater Kerberos signed requests will be matched against the update
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein policies for the zone, using the Kerberos principal as the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User signer for the request.
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater </p>
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater<p>
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater Updating of secure zones (zones using DNSSEC) follows RFC
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater 3007: RRSIG, NSEC and NSEC3 records affected by updates are
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater automatically regenerated by the server using an online
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein zone key. Update authorization is based on transaction
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User signatures and an explicit server policy.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h3 class="title">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<a name="journal"></a>The journal file</h3></div></div></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein All changes made to a zone using dynamic update are stored
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein in the zone's journal file. This file is automatically created
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein by the server when the first dynamic update takes place.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The name of the journal file is formed by appending the extension
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="filename">.jnl</code> to the name of the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein corresponding zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein file unless specifically overridden. The journal file is in a
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User binary format and should not be edited manually.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The server will also occasionally write ("dump")
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the complete contents of the updated zone to its zone file.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein This is not done immediately after
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein each dynamic update, because that would be too slow when a large
3a5fe5abf08f16b8d31ab8ee9a788063110ef000Automatic Updater zone is updated frequently. Instead, the dump is delayed by
3a5fe5abf08f16b8d31ab8ee9a788063110ef000Automatic Updater up to 15 minutes, allowing additional updates to take place.
3a5fe5abf08f16b8d31ab8ee9a788063110ef000Automatic Updater During the dump process, transient files will be created
3a5fe5abf08f16b8d31ab8ee9a788063110ef000Automatic Updater with the extensions <code class="filename">.jnw</code> and
3a5fe5abf08f16b8d31ab8ee9a788063110ef000Automatic Updater <code class="filename">.jbk</code>; under ordinary circumstances, these
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein will be removed when the dump is complete, and can be safely
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ignored.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein When a server is restarted after a shutdown or crash, it will replay
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the journal file to incorporate into the zone any updates that
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein took
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User place after the last zone dump.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Changes that result from incoming incremental zone transfers are
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein also
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User journalled in a similar way.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews The zone files of dynamic zones cannot normally be edited by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein hand because they are not guaranteed to contain the most recent
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt dynamic changes &#8212; those are only in the journal file.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The only way to ensure that the zone file of a dynamic zone
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User is up to date is to run <span class="command"><strong>rndc stop</strong></span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User<p>
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User If you have to make changes to a dynamic zone
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt manually, the following procedure will work:
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User Disable dynamic updates to the zone using
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User <span class="command"><strong>rndc freeze <em class="replaceable"><code>zone</code></em></strong></span>.
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User This will update the zone's master file with the changes
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt stored in its <code class="filename">.jnl</code> file.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Edit the zone file. Run
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="command"><strong>rndc thaw <em class="replaceable"><code>zone</code></em></strong></span>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User to reload the changed zone and re-enable dynamic updates.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User<p>
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User <span class="command"><strong>rndc sync <em class="replaceable"><code>zone</code></em></strong></span>
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User will update the zone file with changes from the journal file
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User without stopping dynamic updates; this may be useful for viewing
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt the current zone state. To remove the <code class="filename">.jnl</code>
794b79e6bbc3f5db1ea6ae154d739b9f1ef1a375Tinderbox User file after updating the zone file, use
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>rndc sync -clean</strong></span>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<a name="incremental_zone_transfers"></a>Incremental Zone Transfers (IXFR)</h2></div></div></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The incremental zone transfer (IXFR) protocol is a way for
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt slave servers to transfer only changed data, instead of having to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein transfer the entire zone. The IXFR protocol is specified in RFC
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User 1995. See <a class="xref" href="Bv9ARM.ch11.html#proposed_standards" title="Proposed Standards">Proposed Standards</a>.
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein When acting as a master, <acronym class="acronym">BIND</acronym> 9
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein supports IXFR for those zones
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein where the necessary change history information is available. These
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein include master zones maintained by dynamic update and slave zones
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein whose data was obtained by IXFR. For manually maintained master
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt zones, and for slave zones obtained by performing a full zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein transfer (AXFR), IXFR is supported only if the option
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="command"><strong>ixfr-from-differences</strong></span> is set
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User to <strong class="userinput"><code>yes</code></strong>.
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein When acting as a slave, <acronym class="acronym">BIND</acronym> 9 will
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt attempt to use IXFR unless
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt it is explicitly disabled. For more information about disabling
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein IXFR, see the description of the <span class="command"><strong>request-ixfr</strong></span> clause
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User of the <span class="command"><strong>server</strong></span> statement.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<a name="split_dns"></a>Split DNS</h2></div></div></div>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews<p>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews Setting up different views, or visibility, of the DNS space to
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews internal and external resolvers is usually referred to as a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="emphasis"><em>Split DNS</em></span> setup. There are several
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User reasons an organization would want to set up its DNS this way.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein One common reason for setting up a DNS system this way is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to hide "internal" DNS information from "external" clients on the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Internet. There is some debate as to whether or not this is actually
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein useful.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Internal DNS information leaks out in many ways (via email headers,
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews for example) and most savvy "attackers" can find the information
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews they need using other means.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews However, since listing addresses of internal servers that
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews external clients cannot possibly reach can result in
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews connection delays and other annoyances, an organization may
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein choose to use a Split DNS to present a consistent view of itself
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User to the outside world.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Another common reason for setting up a Split DNS system is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to allow internal networks that are behind filters or in RFC 1918
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein space (reserved IP space, as documented in RFC 1918) to resolve DNS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein on the Internet. Split DNS can also be used to allow mail from outside
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User back in to the internal network.
bea931e17b7567f09107f93ab7e25c7f00abeb9cMark Andrews </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="section">
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="titlepage"><div><div><h3 class="title">
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<a name="split_dns_sample"></a>Example split DNS setup</h3></div></div></div>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Let's say a company named <span class="emphasis"><em>Example, Inc.</em></span>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User (<code class="literal">example.com</code>)
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User has several corporate sites that have an internal network with
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User reserved
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Internet Protocol (IP) space and an external demilitarized zone (DMZ),
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User or "outside" section of a network, that is available to the public.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User <span class="emphasis"><em>Example, Inc.</em></span> wants its internal clients
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User to be able to resolve external hostnames and to exchange mail with
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User people on the outside. The company also wants its internal resolvers
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User to have access to certain internal-only zones that are not available
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User at all outside of the internal network.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User In order to accomplish this, the company will set up two sets
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User of name servers. One set will be on the inside network (in the
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User reserved
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User IP space) and the other set will be on bastion hosts, which are
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User "proxy"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User hosts that can talk to both sides of its network, in the DMZ.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User The internal servers will be configured to forward all queries,
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User except queries for <code class="filename">site1.internal</code>, <code class="filename">site2.internal</code>, <code class="filename">site1.example.com</code>,
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User and <code class="filename">site2.example.com</code>, to the servers
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User in the
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User DMZ. These internal servers will have complete sets of information
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User for <code class="filename">site1.example.com</code>, <code class="filename">site2.example.com</code>, <code class="filename">site1.internal</code>,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User and <code class="filename">site2.internal</code>.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User To protect the <code class="filename">site1.internal</code> and <code class="filename">site2.internal</code> domains,
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User the internal name servers must be configured to disallow all queries
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User to these domains from any external hosts, including the bastion
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User hosts.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User The external servers, which are on the bastion hosts, will
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User be configured to serve the "public" version of the <code class="filename">site1</code> and <code class="filename">site2.example.com</code> zones.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User This could include things such as the host records for public servers
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User (<code class="filename">www.example.com</code> and <code class="filename">ftp.example.com</code>),
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User and mail exchange (MX) records (<code class="filename">a.mx.example.com</code> and <code class="filename">b.mx.example.com</code>).
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User In addition, the public <code class="filename">site1</code> and <code class="filename">site2.example.com</code> zones
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User should have special MX records that contain wildcard (`*') records
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User pointing to the bastion hosts. This is needed because external mail
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User servers do not have any other way of looking up how to deliver mail
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User to those internal hosts. With the wildcard records, the mail will
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User be delivered to the bastion host, which can then forward it on to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User internal hosts.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Here's an example of a wildcard MX record:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<pre class="programlisting">* IN MX 10 external1.example.com.</pre>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Now that they accept mail on behalf of anything in the internal
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User network, the bastion hosts will need to know how to deliver mail
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User to internal hosts. In order for this to work properly, the resolvers
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User on
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User the bastion hosts will need to be configured to point to the internal
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User name servers for DNS resolution.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Queries for internal hostnames will be answered by the internal
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User servers, and queries for external hostnames will be forwarded back
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User out to the DNS servers on the bastion hosts.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User In order for all this to work properly, internal clients will
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User need to be configured to query <span class="emphasis"><em>only</em></span> the internal
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User name servers for DNS queries. This could also be enforced via
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User selective
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User filtering on the network.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User If everything has been set properly, <span class="emphasis"><em>Example, Inc.</em></span>'s
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User internal clients will now be able to:
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<li class="listitem">
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Look up any hostnames in the <code class="literal">site1</code>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User and
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <code class="literal">site2.example.com</code> zones.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </li>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<li class="listitem">
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Look up any hostnames in the <code class="literal">site1.internal</code> and
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <code class="literal">site2.internal</code> domains.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </li>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<li class="listitem">Look up any hostnames on the Internet.</li>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<li class="listitem">Exchange mail with both internal and external people.</li>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User</ul></div>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Hosts on the Internet will be able to:
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<li class="listitem">
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Look up any hostnames in the <code class="literal">site1</code>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User and
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <code class="literal">site2.example.com</code> zones.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </li>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<li class="listitem">
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Exchange mail with anyone in the <code class="literal">site1</code> and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="literal">site2.example.com</code> zones.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </li>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User</ul></div>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User Here is an example configuration for the setup we just
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User described above. Note that this is only configuration information;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User for information on how to configure your zone files, see <a class="xref" href="Bv9ARM.ch03.html#sample_configuration" title="Sample Configurations">the section called &#8220;Sample Configurations&#8221;</a>.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Internal DNS server config:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce<pre class="programlisting">
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinacl internals { 172.16.72.0/24; 192.168.1.0/24; };
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luceacl externals { <code class="varname">bastion-ips-go-here</code>; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luceoptions {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce ...
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater ...
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater forward only;
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews // forward to external servers
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce forwarders {
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater <code class="varname">bastion-ips-go-here</code>;
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater };
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater // sample allow-transfer (no one)
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater allow-transfer { none; };
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater // restrict query access
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater allow-query { internals; externals; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce // restrict recursion
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce allow-recursion { internals; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce ...
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce ...
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater};
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce// sample master zone
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Lucezone "site1.example.com" {
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater type master;
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater file "m/site1.example.com";
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce // do normal iterative resolution (do not forward)
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce forwarders { };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce allow-query { internals; externals; };
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce allow-transfer { internals; };
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater};
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce// sample slave zone
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Lucezone "site2.example.com" {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce type slave;
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce file "s/site2.example.com";
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce masters { 172.16.72.3; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce forwarders { };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce allow-query { internals; externals; };
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce allow-transfer { internals; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce};
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Lucezone "site1.internal" {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce type master;
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce file "m/site1.internal";
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce forwarders { };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce allow-query { internals; };
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce allow-transfer { internals; }
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce};
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Lucezone "site2.internal" {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce type slave;
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce file "s/site2.internal";
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce masters { 172.16.72.3; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce forwarders { };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce allow-query { internals };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { internals; }
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User};
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User</pre>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein External (bastion host) DNS server config:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce<pre class="programlisting">
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luceacl internals { 172.16.72.0/24; 192.168.1.0/24; };
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luceacl externals { bastion-ips-go-here; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luceoptions {
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater ...
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater ...
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater // sample allow-transfer (no one)
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater allow-transfer { none; };
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater // default query access
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater allow-query { any; };
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater // restrict cache access
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater allow-query-cache { internals; externals; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce // restrict recursion
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce allow-recursion { internals; externals; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce ...
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce ...
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater};
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce// sample slave zone
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Lucezone "site1.example.com" {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce type master;
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce file "m/site1.foo.com";
c71787bd6356c92e9c7d0a174cd63ab17fcf34c6Eric Luce allow-transfer { internals; externals; };
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce};
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Lucezone "site2.example.com" {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce type slave;
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce file "s/site2.foo.com";
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce masters { another_bastion_host_maybe; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { internals; externals; }
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User};
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User</pre>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User In the <code class="filename">resolv.conf</code> (or equivalent) on
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the bastion host(s):
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce<pre class="programlisting">
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Lucesearch ...
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Lucenameserver 172.16.72.2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinnameserver 172.16.72.3
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Usernameserver 172.16.72.4
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a name="tsig"></a>TSIG</h2></div></div></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User TSIG (Transaction SIGnatures) is a mechanism for authenticating DNS
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User messages, originally specified in RFC 2845. It allows DNS messages
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User to be cryptographically signed using a shared secret. TSIG can
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User be used in any DNS transaction, as a way to restrict access to
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User certain server functions (e.g., recursive queries) to authorized
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User clients when IP-based access control is insufficient or needs to
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User be overridden, or as a way to ensure message authenticity when it
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is critical to the integrity of the server, such as with dynamic
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User UPDATE messages or zone transfers from a master to a slave server.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User This is a guide to setting up TSIG in <acronym class="acronym">BIND</acronym>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein It describes the configuration syntax and the process of creating
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User TSIG keys.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="command"><strong>named</strong></span> supports TSIG for server-to-server
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User communication, and some of the tools included with
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <acronym class="acronym">BIND</acronym> support it for sending messages to
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="command"><strong>named</strong></span>:
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<li class="listitem">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a class="xref" href="man.nsupdate.html" title="nsupdate"><span class="refentrytitle"><span class="application">nsupdate</span></span>(1)</a> supports TSIG via the
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <code class="option">-k</code>, <code class="option">-l</code> and
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <code class="option">-y</code> command line options, or via
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User the <span class="command"><strong>key</strong></span> command when running
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User interactively.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </li>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<li class="listitem">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a class="xref" href="man.dig.html" title="dig"><span class="refentrytitle">dig</span>(1)</a> supports TSIG via the
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <code class="option">-k</code> and <code class="option">-y</code> command
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User line options.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </li>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</ul></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h3 class="title">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a name="id-1.5.6.5"></a>Generating a Shared Key</h3></div></div></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User TSIG keys can be generated using the <span class="command"><strong>tsig-keygen</strong></span>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User command; the output of the command is a <span class="command"><strong>key</strong></span> directive
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User suitable for inclusion in <code class="filename">named.conf</code>. The
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein key name, algorithm and size can be specified by command line parameters;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the defaults are "tsig-key", HMAC-SHA256, and 256 bits, respectively.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User Any string which is a valid DNS name can be used as a key name.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User For example, a key to be shared between servers called
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host2</em></span> could
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User be called "host1-host2.", and this key could be generated using:
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<pre class="programlisting">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User $ tsig-keygen host1-host2. &gt; host1-host2.key
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User</pre>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User This key may then be copied to both hosts. The key name and secret
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User must be identical on both hosts.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User (Note: copying a shared secret from one server to another is beyond
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User the scope of the DNS. A secure transport mechanism should be used:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User secure FTP, SSL, ssh, telephone, encrypted email, etc.)
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="command"><strong>tsig-keygen</strong></span> can also be run as
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="command"><strong>ddns-confgen</strong></span>, in which case its output includes
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User additional configuration text for setting up dynamic DNS in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="command"><strong>named</strong></span>. See <a class="xref" href="man.ddns-confgen.html" title="ddns-confgen"><span class="refentrytitle"><span class="application">ddns-confgen</span></span>(8)</a>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User for details.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h3 class="title">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a name="id-1.5.6.6"></a>Loading A New Key</h3></div></div></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User For a key shared between servers called
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="emphasis"><em>host1</em></span> and <span class="emphasis"><em>host2</em></span>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the following could be added to each server's
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="filename">named.conf</code> file:
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<pre class="programlisting">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox Userkey "host1-host2." {
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce algorithm hmac-sha256;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein secret "DAopyf1mhCbFVZw7pgmNPBoLUq8wEUT7UuPoLENP2HY=";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User};
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User</pre>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (This is the same key generated above using
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>tsig-keygen</strong></span>.)
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User Since this text contains a secret, it
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User is recommended that either <code class="filename">named.conf</code> not be
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User world-readable, or that the <span class="command"><strong>key</strong></span> directive
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User be stored in a file which is not world-readable, and which is
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User included in <code class="filename">named.conf</code> via the
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="command"><strong>include</strong></span> directive.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User Once a key has been added to <code class="filename">named.conf</code> and the
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User server has been restarted or reconfigured, the server can recognize
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User the key. If the server receives a message signed by the
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User key, it will be able to verify the signature. If the signature
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User is valid, the response will be signed using the same key.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein TSIG keys that are known to a server can be listed using the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User command <span class="command"><strong>rndc tsig-list</strong></span>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h3 class="title">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a name="id-1.5.6.7"></a>Instructing the Server to Use a Key</h3></div></div></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User A server sending a request to another server must be told whether
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User to use a key, and if so, which key to use.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User For example, a key may be specified for each server in the
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="command"><strong>masters</strong></span> statement in the definition of a
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User slave zone; in this case, all SOA QUERY messages, NOTIFY
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User messages, and zone transfer requests (AXFR or IXFR) will be
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User signed using the specified key. Keys may also be specified
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User in the <span class="command"><strong>also-notify</strong></span> statement of a master
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User or slave zone, causing NOTIFY messages to be signed using
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User the specified key.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User Keys can also be specified in a <span class="command"><strong>server</strong></span>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User directive. Adding the following on <span class="emphasis"><em>host1</em></span>,
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User if the IP address of <span class="emphasis"><em>host2</em></span> is 10.1.2.3, would
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User cause <span class="emphasis"><em>all</em></span> requests from <span class="emphasis"><em>host1</em></span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to <span class="emphasis"><em>host2</em></span>, including normal DNS queries, to be
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein signed using the <span class="command"><strong>host1-host2.</strong></span> key:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<pre class="programlisting">
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luceserver 10.1.2.3 {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein keys { host1-host2. ;};
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User};
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User</pre>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User Multiple keys may be present in the <span class="command"><strong>keys</strong></span>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein statement, but only the first one is used. As this directive does
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User not contain secrets, it can be used in a world-readable file.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User Requests sent by <span class="emphasis"><em>host2</em></span> to <span class="emphasis"><em>host1</em></span>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User would <span class="emphasis"><em>not</em></span> be signed, unless a similar
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="command"><strong>server</strong></span> directive were in <span class="emphasis"><em>host2</em></span>'s
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User configuration file.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User Whenever any server sends a TSIG-signed DNS request, it will expect
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User the response to be signed with the same key. If a response is not
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein signed, or if the signature is not valid, the response will be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User rejected.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h3 class="title">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a name="id-1.5.6.8"></a>TSIG-Based Access Control</h3></div></div></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User TSIG keys may be specified in ACL definitions and ACL directives
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User such as <span class="command"><strong>allow-query</strong></span>, <span class="command"><strong>allow-transfer</strong></span>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User and <span class="command"><strong>allow-update</strong></span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The above key would be denoted in an ACL element as
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>key host1-host2.</strong></span>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein An example of an <span class="command"><strong>allow-update</strong></span> directive using
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein a TSIG key:
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<pre class="programlisting">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userallow-update { !{ !localnets; any; }; key host1-host2. ;};
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User</pre>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User This allows dynamic updates to succeed only if the UPDATE
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User request comes from an address in <span class="command"><strong>localnets</strong></span>,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="emphasis"><em>and</em></span> if it is signed using the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>host1-host2.</strong></span> key.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein See <a class="xref" href="Bv9ARM.ch06.html#dynamic_update_policies" title="Dynamic Update Policies">the section called &#8220;Dynamic Update Policies&#8221;</a> for a discussion of
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the more flexible <span class="command"><strong>update-policy</strong></span> statement.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="section">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="titlepage"><div><div><h3 class="title">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a name="id-1.5.6.9"></a>Errors</h3></div></div></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User Processing of TSIG-signed messages can result in several errors:
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<li class="listitem">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User If a TSIG-aware server receives a message signed by an
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User unknown key, the response will be unsigned, with the TSIG
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User extended error code set to BADKEY.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </li>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<li class="listitem">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User If a TSIG-aware server receives a message from a known key
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User but with an invalid signature, the response will be unsigned,
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User with the TSIG extended error code set to BADSIG.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </li>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<li class="listitem">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User If a TSIG-aware server receives a message with a time
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User outside of the allowed range, the response will be signed, with
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User the TSIG extended error code set to BADTIME, and the time values
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User will be adjusted so that the response can be successfully
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User verified.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </li>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User</ul></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein In all of the above cases, the server will return a response code
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User of NOTAUTH (not authenticated).
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="section">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a name="tkey"></a>TKEY</h2></div></div></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User TKEY (Transaction KEY) is a mechanism for automatically negotiating
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User a shared secret between two hosts, originally specified in RFC 2930.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User There are several TKEY "modes" that specify how a key is to be
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User generated or assigned. <acronym class="acronym">BIND</acronym> 9 implements only
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User one of these modes: Diffie-Hellman key exchange. Both hosts are
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User required to have a KEY record with algorithm DH (though this
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User record is not required to be present in a zone).
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User The TKEY process is initiated by a client or server by sending
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User a query of type TKEY to a TKEY-aware server. The query must include
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User an appropriate KEY record in the additional section, and
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User must be signed using either TSIG or SIG(0) with a previously
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User established key. The server's response, if successful, will
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User contain a TKEY record in its answer section. After this transaction,
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User both participants will have enough information to calculate a
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User shared secret using Diffie-Hellman key exchange. The shared secret
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User can then be used by to sign subsequent transactions between the
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User two servers.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein TSIG keys known by the server, including TKEY-negotiated keys, can
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User be listed using <span class="command"><strong>rndc tsig-list</strong></span>.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User TKEY-negotiated keys can be deleted from a server using
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <span class="command"><strong>rndc tsig-delete</strong></span>. This can also be done via
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the TKEY protocol itself, by sending an authenticated TKEY query
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User specifying the "key deletion" mode.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<a name="sig0"></a>SIG(0)</h2></div></div></div>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User <acronym class="acronym">BIND</acronym> partially supports DNSSEC SIG(0)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein transaction signatures as specified in RFC 2535 and RFC 2931.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User SIG(0) uses public/private keys to authenticate messages. Access control
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is performed in the same manner as TSIG keys; privileges can be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User granted or denied in ACL directives based on the key name.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User<p>
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User When a SIG(0) signed message is received, it will only be
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User verified if the key is known and trusted by the server. The
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein server will not attempt to recursively fetch or validate the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User key.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User SIG(0) signing of multiple-message TCP streams is not supported.
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The only tool shipped with <acronym class="acronym">BIND</acronym> 9 that
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User generates SIG(0) signed messages is <span class="command"><strong>nsupdate</strong></span>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<a name="DNSSEC"></a>DNSSEC</h2></div></div></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
bea931e17b7567f09107f93ab7e25c7f00abeb9cMark Andrews Cryptographic authentication of DNS information is possible
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews through the DNS Security (<span class="emphasis"><em>DNSSEC-bis</em></span>) extensions,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein defined in RFC 4033, RFC 4034, and RFC 4035.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User This section describes the creation and use of DNSSEC signed zones.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein In order to set up a DNSSEC secure zone, there are a series
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein of steps which must be followed. <acronym class="acronym">BIND</acronym>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 9 ships
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein with several tools
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein that are used in this process, which are explained in more detail
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein below. In all cases, the <code class="option">-h</code> option prints a
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews full list of parameters. Note that the DNSSEC tools require the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein keyset files to be in the working directory or the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein directory specified by the <code class="option">-d</code> option, and
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein that the tools shipped with BIND 9.2.x and earlier are not compatible
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User with the current ones.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein There must also be communication with the administrators of
47012ae6dbf18a2503d7b33c1c9583dc38625cb7Mark Andrews the parent and/or child zone to transmit keys. A zone's security
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein status must be indicated by the parent zone for a DNSSEC capable
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein resolver to trust its data. This is done through the presence
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein or absence of a <code class="literal">DS</code> record at the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein delegation
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User point.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein For other servers to trust data in this zone, they must
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein either be statically configured with this zone's zone key or the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User zone key of another zone above this one in the DNS tree.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h3 class="title">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<a name="dnssec_keys"></a>Generating Keys</h3></div></div></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The <span class="command"><strong>dnssec-keygen</strong></span> program is used to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User generate keys.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein A secure zone must contain one or more zone keys. The
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein zone keys will sign all other records in the zone, as well as
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt the zone keys of any secure delegated zones. Zone keys must
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein have the same name as the zone, a name type of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="command"><strong>ZONE</strong></span>, and must be usable for
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein authentication.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein It is recommended that zone keys use a cryptographic algorithm
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein designated as "mandatory to implement" by the IETF; currently
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the only one is RSASHA1.
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The following command will generate a 768-bit RSASHA1 key for
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the <code class="filename">child.example</code> zone:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <strong class="userinput"><code>dnssec-keygen -a RSASHA1 -b 768 -n ZONE child.example.</code></strong>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Two output files will be produced:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="filename">Kchild.example.+005+12345.key</code> and
bea931e17b7567f09107f93ab7e25c7f00abeb9cMark Andrews <code class="filename">Kchild.example.+005+12345.private</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein (where
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 12345 is an example of a key tag). The key filenames contain
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the key name (<code class="filename">child.example.</code>),
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein algorithm (3
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is DSA, 1 is RSAMD5, 5 is RSASHA1, etc.), and the key tag (12345 in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein this case).
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The private key (in the <code class="filename">.private</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein file) is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein used to generate signatures, and the public key (in the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="filename">.key</code> file) is used for signature
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User verification.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein To generate another key with the same properties (but with
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User a different key tag), repeat the above command.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt The <span class="command"><strong>dnssec-keyfromlabel</strong></span> program is used
28b3569d6248168e6c00caab951521cc8141a49dAutomatic Updater to get a key pair from a crypto hardware and build the key
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User files. Its usage is similar to <span class="command"><strong>dnssec-keygen</strong></span>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt The public keys should be inserted into the zone file by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein including the <code class="filename">.key</code> files using
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>$INCLUDE</strong></span> statements.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h3 class="title">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<a name="dnssec_signing"></a>Signing the Zone</h3></div></div></div>
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The <span class="command"><strong>dnssec-signzone</strong></span> program is used
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User to sign a zone.
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater </p>
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater<p>
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater Any <code class="filename">keyset</code> files corresponding to
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater secure subzones should be present. The zone signer will
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater generate <code class="literal">NSEC</code>, <code class="literal">NSEC3</code>
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater and <code class="literal">RRSIG</code> records for the zone, as
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater well as <code class="literal">DS</code> for the child zones if
38417cbfb1a328c20b5b723b8584a02c57f88897Automatic Updater <code class="literal">'-g'</code> is specified. If <code class="literal">'-g'</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is not specified, then DS RRsets for the secure child
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User zones need to be added manually.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The following command signs the zone, assuming it is in a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein file called <code class="filename">zone.child.example</code>. By
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein default, all zone keys which have an available private key are
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User used to generate signatures.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <strong class="userinput"><code>dnssec-signzone -o child.example zone.child.example</code></strong>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein One output file is produced:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <code class="filename">zone.child.example.signed</code>. This
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein file
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein should be referenced by <code class="filename">named.conf</code>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein as the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User input file for the zone.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p><span class="command"><strong>dnssec-signzone</strong></span>
a1b05dea35aa30b152a47115e18bbe679d3fcf19Mark Andrews will also produce a keyset and dsset files and optionally a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein dlvset file. These are used to provide the parent zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein administrators with the <code class="literal">DNSKEYs</code> (or their
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein corresponding <code class="literal">DS</code> records) that are the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User secure entry point to the zone.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h3 class="title">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<a name="dnssec_config"></a>Configuring Servers</h3></div></div></div>
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt To enable <span class="command"><strong>named</strong></span> to respond appropriately
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater to DNS requests from DNSSEC aware clients,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein <span class="command"><strong>dnssec-enable</strong></span> must be set to yes.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (This is the default setting.)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater To enable <span class="command"><strong>named</strong></span> to validate answers from
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt other servers, the <span class="command"><strong>dnssec-enable</strong></span> option
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater must be set to <strong class="userinput"><code>yes</code></strong>, and the
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater <span class="command"><strong>dnssec-validation</strong></span> options must be set to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <strong class="userinput"><code>yes</code></strong> or <strong class="userinput"><code>auto</code></strong>.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater<p>
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater If <span class="command"><strong>dnssec-validation</strong></span> is set to
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater <strong class="userinput"><code>auto</code></strong>, then a default
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater trust anchor for the DNS root zone will be used.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt If it is set to <strong class="userinput"><code>yes</code></strong>, however,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt then at least one trust anchor must be configured
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater with a <span class="command"><strong>trusted-keys</strong></span> or
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater <span class="command"><strong>managed-keys</strong></span> statement in
ebabe300b615154d08f5577822cfd8726d2643c8Automatic Updater <code class="filename">named.conf</code>, or DNSSEC validation
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein will not occur. The default setting is
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <strong class="userinput"><code>yes</code></strong>.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
47012ae6dbf18a2503d7b33c1c9583dc38625cb7Mark Andrews<p>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews <span class="command"><strong>trusted-keys</strong></span> are copies of DNSKEY RRs
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt for zones that are used to form the first link in the
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews cryptographic chain of trust. All keys listed in
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews <span class="command"><strong>trusted-keys</strong></span> (and corresponding zones)
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews are deemed to exist and only the listed keys will be used
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User to validated the DNSKEY RRset that they are from.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater<p>
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater <span class="command"><strong>managed-keys</strong></span> are trusted keys which are
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater automatically kept up to date via RFC 5011 trust anchor
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User maintenance.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews <span class="command"><strong>trusted-keys</strong></span> and
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews <span class="command"><strong>managed-keys</strong></span> are described in more detail
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User later in this document.
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews </p>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews<p>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews Unlike <acronym class="acronym">BIND</acronym> 8, <acronym class="acronym">BIND</acronym>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews 9 does not verify signatures on load, so zone keys for
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews authoritative zones do not need to be specified in the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User configuration file.
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews </p>
d3907d27cc138f45772d3d63082ae02c7659148aAutomatic Updater<p>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews After DNSSEC gets established, a typical DNSSEC configuration
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews will look something like the following. It has one or
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews more public keys for the root. This allows answers from
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt outside the organization to be validated. It will also
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater have several keys for parts of the namespace the organization
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews controls. These are here to ensure that <span class="command"><strong>named</strong></span>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews is immune to compromises in the DNSSEC components of the security
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews of parent zones.
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater </p>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews<pre class="programlisting">
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updatermanaged-keys {
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater /* Root Key */
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater "." initial-key 257 3 3 "BNY4wrWM1nCfJ+CXd0rVXyYmobt7sEEfK3clRbGaTwS
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater JxrGkxJWoZu6I7PzJu/E9gx4UC1zGAHlXKdE4zYIpRh
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater aBKnvcC2U9mZhkdUpd1Vso/HAdjNe8LmMlnzY3zy2Xy
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 4klWOADTPzSv9eamj8V18PHGjBLaVtYvk/ln5ZApjYg
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater hf+6fElrmLkdaz MQ2OCnACR817DF4BBa7UR/beDHyp
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 5iWTXWSi6XmoJLbG9Scqc7l70KDqlvXR3M/lUUVRbke
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater g1IPJSidmK3ZyCllh4XSKbje/45SKucHgnwU5jefMtq
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 66gKodQj+MiA21AfUVe7u99WzTLzY3qlxDhxYQQ20FQ
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 97S+LKUTpQcq27R7AT3/V5hRQxScINqwcz4jYqZD2fQ
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews dgxbcDTClU0CRBdiieyLMNzXG3";
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater};
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updatertrusted-keys {
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater /* Key for our organization's forward zone */
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater example.com. 257 3 5 "AwEAAaxPMcR2x0HbQV4WeZB6oEDX+r0QM6
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 5KbhTjrW1ZaARmPhEZZe3Y9ifgEuq7vZ/z
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater GZUdEGNWy+JZzus0lUptwgjGwhUS1558Hb
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 4JKUbbOTcM8pwXlj0EiX3oDFVmjHO444gL
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater kBOUKUf/mC7HvfwYH/Be22GnClrinKJp1O
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater g4ywzO9WglMk7jbfW33gUKvirTHr25GL7S
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater TQUzBb5Usxt8lgnyTUHs1t3JwCY5hKZ6Cq
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater FxmAVZP20igTixin/1LcrgX/KMEGd/biuv
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater F4qJCyduieHukuY3H4XMAcR+xia2nIUPvm
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews /oyWR8BW/hWdzOvnSCThlHf3xiYleDbt/o
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 1OTQ09A0=";
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater /* Key for our reverse zone. */
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 2.0.192.IN-ADDRPA.NET. 257 3 5 "AQOnS4xn/IgOUpBPJ3bogzwc
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater xOdNax071L18QqZnQQQAVVr+i
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater LhGTnNGp3HoWQLUIzKrJVZ3zg
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater gy3WwNT6kZo6c0tszYqbtvchm
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater gQC8CzKojM/W16i6MG/eafGU3
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater siaOdS0yOI6BgPsw+YZdzlYMa
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater IJGf4M4dyoKIhzdZyQ2bYQrjy
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater Q4LB0lC7aOnsMyYKHHYeRvPxj
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater IQXmdqgOJGq+vsevG06zW+1xg
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater YJh9rCIfnm1GX/KMgxLPG2vXT
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater D/RnLX+D3T3UL7HJYHJhAZD5L
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater 59VvjSPsZJHeDCUyWYrvPZesZ
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews DIRvhDD52SKvbheeTJUm6Ehkz
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews ytNN2SN96QRk8j/iI8ib";
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews};
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrewsoptions {
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews ...
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews dnssec-enable yes;
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews dnssec-validation yes;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User};
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews</pre>
47012ae6dbf18a2503d7b33c1c9583dc38625cb7Mark Andrews<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews<h3 class="title">Note</h3>
6101b9f0d904a708e900a74abc16d1e0eda67264Mark Andrews<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User None of the keys listed in this example are valid. In particular,
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater the root key is not valid.
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater </p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater</div>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User When DNSSEC validation is enabled and properly configured,
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater the resolver will reject any answers from signed, secure zones
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater which fail to validate, and will return SERVFAIL to the client.
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater </p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater<p>
5d564da348e890e42f63eebf2dced9a05b41f4fbTinderbox User Responses may fail to validate for any of several reasons,
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater including missing, expired, or invalid signatures, a key which
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User does not match the DS RRset in the parent zone, or an insecure
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater response from a zone which, according to its parent, should have
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User been secure.
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater </p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater<h3 class="title">Note</h3>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater<p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater When the validator receives a response from an unsigned zone
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater that has a signed parent, it must confirm with the parent
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User that the zone was intentionally left unsigned. It does
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater this by verifying, via signed and validated NSEC/NSEC3 records,
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater that the parent zone contains no DS records for the child.
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater </p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater<p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater If the validator <span class="emphasis"><em>can</em></span> prove that the zone
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User is insecure, then the response is accepted. However, if it
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater cannot, then it must assume an insecure response to be a
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater forgery; it rejects the response and logs an error.
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater </p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater<p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater The logged error reads "insecurity proof failed" and
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "got insecure response; parent indicates it should be secure".
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (Prior to BIND 9.7, the logged error was "not insecure".
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User This referred to the zone, not the response.)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater</div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="section">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="titlepage"><div><div><h2 class="title" style="clear: both">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="dnssec.dynamic.zones"></a>DNSSEC, Dynamic Zones, and Automatic Signing</h2></div></div></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>As of BIND 9.7.0 it is possible to change a dynamic zone
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User from insecure to signed and back again. A secure zone can use
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater either NSEC or NSEC3 chains.</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="section"><div class="titlepage"><div><div><h3 class="title">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.5.10.3"></a>Converting from insecure to secure</h3></div></div></div></div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>Changing a zone from insecure to secure can be done in two
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater ways: using a dynamic DNS update, or the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>auto-dnssec</strong></span> zone option.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>For either method, you need to configure
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>named</strong></span> so that it can see the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <code class="filename">K*</code> files which contain the public and private
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater parts of the keys that will be used to sign the zone. These files
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User will have been generated by
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>dnssec-keygen</strong></span>. You can do this by placing them
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt in the key-directory, as specified in
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <code class="filename">named.conf</code>:</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="programlisting">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt zone example.net {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt type master;
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater update-policy local;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User file "dynamic/example.net/example.net";
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater key-directory "dynamic/example.net";
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater };
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater</pre>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>If one KSK and one ZSK DNSKEY key have been generated, this
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User configuration will cause all records in the zone to be signed
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User with the ZSK, and the DNSKEY RRset to be signed with the KSK as
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User well. An NSEC chain will be generated as part of the initial
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User signing process.</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="section"><div class="titlepage"><div><div><h3 class="title">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<a name="id-1.5.10.8"></a>Dynamic DNS update method</h3></div></div></div></div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>To insert the keys via dynamic update:</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="screen">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt % nsupdate
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater &gt; ttl 3600
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User &gt; update add example.net DNSKEY 256 3 7 AwEAAZn17pUF0KpbPA2c7Gz76Vb18v0teKT3EyAGfBfL8eQ8al35zz3Y I1m/SAQBxIqMfLtIwqWPdgthsu36azGQAX8=
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater &gt; update add example.net DNSKEY 257 3 7 AwEAAd/7odU/64o2LGsifbLtQmtO8dFDtTAZXSX2+X3e/UNlq9IHq3Y0 XtC0Iuawl/qkaKVxXe2lo8Ct+dM6UehyCqk=
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt &gt; send
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater</pre>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>While the update request will complete almost immediately,
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater the zone will not be completely signed until
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>named</strong></span> has had time to walk the zone and
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater generate the NSEC and RRSIG records. The NSEC record at the apex
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater will be added last, to signal that there is a complete NSEC
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater chain.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>If you wish to sign using NSEC3 instead of NSEC, you should
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt add an NSEC3PARAM record to the initial update request. If you
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt wish the NSEC3 chain to have the OPTOUT bit set, set it in the
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt flags field of the NSEC3PARAM record.</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="screen">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt % nsupdate
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt &gt; ttl 3600
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater &gt; update add example.net DNSKEY 256 3 7 AwEAAZn17pUF0KpbPA2c7Gz76Vb18v0teKT3EyAGfBfL8eQ8al35zz3Y I1m/SAQBxIqMfLtIwqWPdgthsu36azGQAX8=
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User &gt; update add example.net DNSKEY 257 3 7 AwEAAd/7odU/64o2LGsifbLtQmtO8dFDtTAZXSX2+X3e/UNlq9IHq3Y0 XtC0Iuawl/qkaKVxXe2lo8Ct+dM6UehyCqk=
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater &gt; update add example.net NSEC3PARAM 1 1 100 1234567890
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt &gt; send
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater</pre>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>Again, this update request will complete almost
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater immediately; however, the record won't show up until
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>named</strong></span> has had a chance to build/remove the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater relevant chain. A private type record will be created to record
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the state of the operation (see below for more details), and will
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User be removed once the operation completes.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>While the initial signing and NSEC/NSEC3 chain generation
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt is happening, other updates are possible as well.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="section"><div class="titlepage"><div><div><h3 class="title">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<a name="id-1.5.10.16"></a>Fully automatic zone signing</h3></div></div></div></div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>To enable automatic signing, add the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>auto-dnssec</strong></span> option to the zone statement in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <code class="filename">named.conf</code>.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>auto-dnssec</strong></span> has two possible arguments:
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <code class="constant">allow</code> or
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <code class="constant">maintain</code>.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>With
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>auto-dnssec allow</strong></span>,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>named</strong></span> can search the key directory for keys
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater matching the zone, insert them into the zone, and use them to
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sign the zone. It will do so only when it receives an
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>rndc sign &lt;zonename&gt;</strong></span>.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>auto-dnssec maintain</strong></span> includes the above
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater functionality, but will also automatically adjust the zone's
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User DNSKEY records on schedule according to the keys' timing metadata.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt (See <a class="xref" href="man.dnssec-keygen.html" title="dnssec-keygen"><span class="refentrytitle"><span class="application">dnssec-keygen</span></span>(8)</a> and
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <a class="xref" href="man.dnssec-settime.html" title="dnssec-settime"><span class="refentrytitle"><span class="application">dnssec-settime</span></span>(8)</a> for more information.)
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater </p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>named</strong></span> will periodically search the key directory
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater for keys matching the zone, and if the keys' metadata indicates
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt that any change should be made the zone, such as adding, removing,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt or revoking a key, then that action will be carried out. By default,
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater the key directory is checked for changes every 60 minutes; this period
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User can be adjusted with the <code class="option">dnssec-loadkeys-interval</code>, up
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater to a maximum of 24 hours. The <span class="command"><strong>rndc loadkeys</strong></span> forces
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>named</strong></span> to check for key updates immediately.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater If keys are present in the key directory the first time the zone
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater is loaded, the zone will be signed immediately, without waiting for an
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>rndc sign</strong></span> or <span class="command"><strong>rndc loadkeys</strong></span>
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User command. (Those commands can still be used when there are unscheduled
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User key changes, however.)
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User When new keys are added to a zone, the TTL is set to match that
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User of any existing DNSKEY RRset. If there is no existing DNSKEY RRset,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User then the TTL will be set to the TTL specified when the key was
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater created (using the <span class="command"><strong>dnssec-keygen -L</strong></span> option), if
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater any, or to the SOA TTL.
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater </p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater If you wish the zone to be signed using NSEC3 instead of NSEC,
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater submit an NSEC3PARAM record via dynamic update prior to the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater scheduled publication and activation of the keys. If you wish the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater NSEC3 chain to have the OPTOUT bit set, set it in the flags field
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater of the NSEC3PARAM record. The NSEC3PARAM record will not appear in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the zone immediately, but it will be stored for later reference. When
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt the zone is signed and the NSEC3 chain is completed, the NSEC3PARAM
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater record will appear in the zone.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>Using the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>auto-dnssec</strong></span> option requires the zone to be
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater configured to allow dynamic updates, by adding an
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>allow-update</strong></span> or
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>update-policy</strong></span> statement to the zone
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User configuration. If this has not been done, the configuration will
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater fail.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="section"><div class="titlepage"><div><div><h3 class="title">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<a name="id-1.5.10.25"></a>Private-type records</h3></div></div></div></div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>The state of the signing process is signaled by
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User private-type records (with a default type value of 65534). When
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater signing is complete, these records will have a nonzero value for
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater the final octet (for those records which have a nonzero initial
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater octet).</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>The private type record format: If the first octet is
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater non-zero then the record indicates that the zone needs to be
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater signed with the key matching the record, or that all signatures
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater that match the record should be removed.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater </p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="literallayout"><p><br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater��algorithm�(octet�1)<br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater��key�id�in�network�order�(octet�2�and�3)<br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater��removal�flag�(octet�4)<br>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User��complete�flag�(octet�5)<br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater</p></div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>Only records flagged as "complete" can be removed via
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater dynamic update. Attempts to remove other private type records
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater will be silently ignored.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>If the first octet is zero (this is a reserved algorithm
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User number that should never appear in a DNSKEY record) then the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater record indicates changes to the NSEC3 chains are in progress. The
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater rest of the record contains an NSEC3PARAM record. The flag field
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater tells what operation to perform based on the flag bits.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater </p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="literallayout"><p><br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater��0x01�OPTOUT<br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater��0x80�CREATE<br>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater��0x40�REMOVE<br>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User��0x20�NONSEC<br>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</p></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="section"><div class="titlepage"><div><div><h3 class="title">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.5.10.32"></a>DNSKEY rollovers</h3></div></div></div></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>As with insecure-to-secure conversions, rolling DNSSEC
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User keys can be done in two ways: using a dynamic DNS update, or the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>auto-dnssec</strong></span> zone option.</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="section"><div class="titlepage"><div><div><h3 class="title">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<a name="id-1.5.10.34"></a>Dynamic DNS update method</h3></div></div></div></div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p> To perform key rollovers via dynamic update, you need to add
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater the <code class="filename">K*</code> files for the new keys so that
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>named</strong></span> can find them. You can then add the new
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater DNSKEY RRs via dynamic update.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>named</strong></span> will then cause the zone to be signed
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater with the new keys. When the signing is complete the private type
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User records will be updated so that the last octet is non
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater zero.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>If this is for a KSK you need to inform the parent and any
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater trust anchor repositories of the new KSK.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>You should then wait for the maximum TTL in the zone before
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater removing the old DNSKEY. If it is a KSK that is being updated,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User you also need to wait for the DS RRset in the parent to be
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater updated and its TTL to expire. This ensures that all clients will
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt be able to verify at least one signature when you remove the old
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater DNSKEY.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>The old DNSKEY can be removed via UPDATE. Take care to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User specify the correct key.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>named</strong></span> will clean out any signatures generated
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt by the old key after the update completes.</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="section"><div class="titlepage"><div><div><h3 class="title">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<a name="id-1.5.10.39"></a>Automatic key rollovers</h3></div></div></div></div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>When a new key reaches its activation date (as set by
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>dnssec-keygen</strong></span> or <span class="command"><strong>dnssec-settime</strong></span>),
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater if the <span class="command"><strong>auto-dnssec</strong></span> zone option is set to
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <code class="constant">maintain</code>, <span class="command"><strong>named</strong></span> will
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater automatically carry out the key rollover. If the key's algorithm
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater has not previously been used to sign the zone, then the zone will
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater be fully signed as quickly as possible. However, if the new key
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater is replacing an existing key of the same algorithm, then the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater zone will be re-signed incrementally, with signatures from the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User old key being replaced with signatures from the new key as their
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User signature validity periods expire. By default, this rollover
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User completes in 30 days, after which it will be safe to remove the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater old key from the DNSKEY RRset.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="section"><div class="titlepage"><div><div><h3 class="title">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<a name="id-1.5.10.41"></a>NSEC3PARAM rollovers via UPDATE</h3></div></div></div></div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>Add the new NSEC3PARAM record via dynamic update. When the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User new NSEC3 chain has been generated, the NSEC3PARAM flag field
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User will be zero. At this point you can remove the old NSEC3PARAM
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User record. The old chain will be removed after the update request
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater completes.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="section"><div class="titlepage"><div><div><h3 class="title">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<a name="id-1.5.10.43"></a>Converting from NSEC to NSEC3</h3></div></div></div></div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>To do this, you just need to add an NSEC3PARAM record. When
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the conversion is complete, the NSEC chain will have been removed
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User and the NSEC3PARAM record will have a zero flag field. The NSEC3
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User chain will be generated before the NSEC chain is
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater destroyed.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="section"><div class="titlepage"><div><div><h3 class="title">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<a name="id-1.5.10.45"></a>Converting from NSEC3 to NSEC</h3></div></div></div></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>To do this, use <span class="command"><strong>nsupdate</strong></span> to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User remove all NSEC3PARAM records with a zero flag
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User field. The NSEC chain will be generated before the NSEC3 chain is
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater removed.</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="section"><div class="titlepage"><div><div><h3 class="title">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<a name="id-1.5.10.47"></a>Converting from secure to insecure</h3></div></div></div></div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>To convert a signed zone to unsigned using dynamic DNS,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User delete all the DNSKEY records from the zone apex using
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>nsupdate</strong></span>. All signatures, NSEC or NSEC3 chains,
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater and associated NSEC3PARAM records will be removed automatically.
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater This will take place after the update request completes.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p> This requires the
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>dnssec-secure-to-insecure</strong></span> option to be set to
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <strong class="userinput"><code>yes</code></strong> in
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <code class="filename">named.conf</code>.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>In addition, if the <span class="command"><strong>auto-dnssec maintain</strong></span>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User zone statement is used, it should be removed or changed to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>allow</strong></span> instead (or it will re-sign).
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater </p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="section"><div class="titlepage"><div><div><h3 class="title">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<a name="id-1.5.10.51"></a>Periodic re-signing</h3></div></div></div></div>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<p>In any secure zone which supports dynamic updates, <span class="command"><strong>named</strong></span>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User will periodically re-sign RRsets which have not been re-signed as
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User a result of some update action. The signature lifetimes will be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User adjusted so as to spread the re-sign load over time rather than
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt all at once.</p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<div class="section"><div class="titlepage"><div><div><h3 class="title">
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater<a name="id-1.5.10.53"></a>NSEC3 and OPTOUT</h3></div></div></div></div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>named</strong></span> only supports creating new NSEC3 chains
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt where all the NSEC3 records in the zone have the same OPTOUT
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater state.
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>named</strong></span> supports UPDATES to zones where the NSEC3
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater records in the chain have mixed OPTOUT state.
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater <span class="command"><strong>named</strong></span> does not support changing the OPTOUT
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User state of an individual NSEC3 record, the entire chain needs to be
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater changed if the OPTOUT state of an individual NSEC3 needs to be
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater changed.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<div class="section">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="titlepage"><div><div><h2 class="title" style="clear: both">
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<a name="rfc5011.support"></a>Dynamic Trust Anchor Management</h2></div></div></div>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>BIND 9.7.0 introduces support for RFC 5011, dynamic trust
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User anchor management. Using this feature allows
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater <span class="command"><strong>named</strong></span> to keep track of changes to critical
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User DNSSEC keys without any need for the operator to make changes to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User configuration files.</p>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<div class="section">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="titlepage"><div><div><h3 class="title">
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<a name="id-1.5.11.3"></a>Validating Resolver</h3></div></div></div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>To configure a validating resolver to use RFC 5011 to
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater maintain a trust anchor, configure the trust anchor using a
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>managed-keys</strong></span> statement. Information about
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User this can be found in
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater <a class="xref" href="Bv9ARM.ch06.html#managed-keys" title="managed-keys Statement Definition and Usage">the section called &#8220;<span class="command"><strong>managed-keys</strong></span> Statement Definition
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User and Usage&#8221;</a>.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<div class="section">
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<div class="titlepage"><div><div><h3 class="title">
6478b87fd23bcd3ab74c25b261021fe19a239c4fTinderbox User<a name="id-1.5.11.4"></a>Authoritative Server</h3></div></div></div>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>To set up an authoritative zone for RFC 5011 trust anchor
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User maintenance, generate two (or more) key signing keys (KSKs) for
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater the zone. Sign the zone with one of them; this is the "active"
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater KSK. All KSKs which do not sign the zone are "stand-by"
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater keys.</p>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>Any validating resolver which is configured to use the
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater active KSK as an RFC 5011-managed trust anchor will take note
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater of the stand-by KSKs in the zone's DNSKEY RRset, and store them
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater for future reference. The resolver will recheck the zone
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater periodically, and after 30 days, if the new key is still there,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User then the key will be accepted by the resolver as a valid trust
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater anchor for the zone. Any time after this 30-day acceptance
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt timer has completed, the active KSK can be revoked, and the
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt zone can be "rolled over" to the newly accepted key.</p>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>The easiest way to place a stand-by key in a zone is to
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater use the "smart signing" features of
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <span class="command"><strong>dnssec-keygen</strong></span> and
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater <span class="command"><strong>dnssec-signzone</strong></span>. If a key with a publication
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User date in the past, but an activation date which is unset or in
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater the future, "
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater <span class="command"><strong>dnssec-signzone -S</strong></span>" will include the DNSKEY
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater record in the zone, but will not sign with it:</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<pre class="screen">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt$ <strong class="userinput"><code>dnssec-keygen -K keys -f KSK -P now -A now+2y example.net</code></strong>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater$ <strong class="userinput"><code>dnssec-signzone -S -K keys example.net</code></strong>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater</pre>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>To revoke a key, the new command
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>dnssec-revoke</strong></span> has been added. This adds the
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater REVOKED bit to the key flags and re-generates the
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater <code class="filename">K*.key</code> and
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <code class="filename">K*.private</code> files.</p>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>After revoking the active key, the zone must be signed
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater with both the revoked KSK and the new active KSK. (Smart
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater signing takes care of this automatically.)</p>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>Once a key has been revoked and used to sign the DNSKEY
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User RRset in which it appears, that key will never again be
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater accepted as a valid trust anchor by the resolver. However,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User validation can proceed using the new active key (which had been
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater accepted by the resolver when it was a stand-by key).</p>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>See RFC 5011 for more details on key rollover
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater scenarios.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>When a key has been revoked, its key ID changes,
6478b87fd23bcd3ab74c25b261021fe19a239c4fTinderbox User increasing by 128, and wrapping around at 65535. So, for
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater example, the key "<code class="filename">Kexample.com.+005+10000</code>" becomes
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "<code class="filename">Kexample.com.+005+10128</code>".</p>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater<p>If two keys have IDs exactly 128 apart, and one is
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater revoked, then the two key IDs will collide, causing several
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater problems. To prevent this,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>dnssec-keygen</strong></span> will not generate a new key if
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater another key is present which may collide. This checking will
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater only occur if the new keys are written to the same directory
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater which holds all other keys in use for that zone.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>Older versions of BIND 9 did not have this precaution.
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater Exercise caution if using key revocation on keys that were
6478b87fd23bcd3ab74c25b261021fe19a239c4fTinderbox User generated by previous releases, or if using keys stored in
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater multiple directories or on multiple machines.</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>It is expected that a future release of BIND 9 will
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User address this problem in a different way, by storing revoked
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User keys with their original unrevoked key IDs.</p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<a name="pkcs11"></a>PKCS#11 (Cryptoki) support</h2></div></div></div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User PKCS#11 (Public Key Cryptography Standard #11) defines a
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User platform-independent API for the control of hardware security
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User modules (HSMs) and other cryptographic support devices.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User BIND 9 is known to work with three HSMs: The AEP Keyper, which has
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User been tested with Debian Linux, Solaris x86 and Windows Server 2003;
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User the Thales nShield, tested with Debian Linux; and the Sun SCA 6000
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User cryptographic acceleration board, tested with Solaris x86. In
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User addition, BIND can be used with all current versions of SoftHSM,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User a software-based HSM simulator library produced by the OpenDNSSEC
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User project.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User PKCS#11 makes use of a "provider library": a dynamically loadable
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User library which provides a low-level PKCS#11 interface to drive the HSM
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User hardware. The PKCS#11 provider library comes from the HSM vendor, and
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User it is specific to the HSM to be controlled.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User There are two available mechanisms for PKCS#11 support in BIND 9:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User OpenSSL-based PKCS#11 and native PKCS#11. When using the first
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User mechanism, BIND uses a modified version of OpenSSL, which loads
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User the provider library and operates the HSM indirectly; any
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User cryptographic operations not supported by the HSM can be carried
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User out by OpenSSL instead. The second mechanism enables BIND to bypass
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User OpenSSL completely; BIND loads the provider library itself, and uses
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the PKCS#11 API to drive the HSM directly.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h3 class="title">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<a name="id-1.5.12.6"></a>Prerequisites</h3></div></div></div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User See the documentation provided by your HSM vendor for
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User information about installing, initializing, testing and
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User troubleshooting the HSM.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h3 class="title">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<a name="id-1.5.12.7"></a>Native PKCS#11</h3></div></div></div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User Native PKCS#11 mode will only work with an HSM capable of carrying
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User out <span class="emphasis"><em>every</em></span> cryptographic operation BIND 9 may
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User need. The HSM's provider library must have a complete implementation
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User of the PKCS#11 API, so that all these functions are accessible. As of
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User this writing, only the Thales nShield HSM and SoftHSMv2 can be used
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User in this fashion. For other HSMs, including the AEP Keyper, Sun SCA
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User 6000 and older versions of SoftHSM, use OpenSSL-based PKCS#11.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (Note: Eventually, when more HSMs become capable of supporting
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User native PKCS#11, it is expected that OpenSSL-based PKCS#11 will
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User be deprecated.)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User To build BIND with native PKCS#11, configure as follows:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code>cd bind9</code></strong>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt$ <strong class="userinput"><code>/configure --enable-native-pkcs11 \
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt --with-pkcs11=<em class="replaceable"><code>provider-library-path</code></em></code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User This will cause all BIND tools, including <span class="command"><strong>named</strong></span>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt and the <span class="command"><strong>dnssec-*</strong></span> and <span class="command"><strong>pkcs11-*</strong></span>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt tools, to use the PKCS#11 provider library specified in
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <em class="replaceable"><code>provider-library-path</code></em> for cryptography.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User (The provider library path can be overridden using the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <code class="option">-E</code> in <span class="command"><strong>named</strong></span> and the
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User <span class="command"><strong>dnssec-*</strong></span> tools, or the <code class="option">-m</code> in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the <span class="command"><strong>pkcs11-*</strong></span> tools.)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<div class="section">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<div class="titlepage"><div><div><h4 class="title">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.5.12.7.6"></a>Building SoftHSMv2</h4></div></div></div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User SoftHSMv2, the latest development version of SoftHSM, is available
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User from
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <a class="link" href="https://github.com/opendnssec/SoftHSMv2" target="_top">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User https://github.com/opendnssec/SoftHSMv2
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </a>.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User It is a software library developed by the OpenDNSSEC project
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User (<a class="link" href="http://www.opendnssec.org" target="_top">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User http://www.opendnssec.org
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </a>)
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User which provides a PKCS#11 interface to a virtual HSM, implemented in
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User the form of a SQLite3 database on the local filesystem. It provides
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User less security than a true HSM, but it allows you to experiment with
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User native PKCS#11 when an HSM is not available. SoftHSMv2 can be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User configured to use either OpenSSL or the Botan library to perform
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User cryptographic functions, but when using it for native PKCS#11 in
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User BIND, OpenSSL is required.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User By default, the SoftHSMv2 configuration file is
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User <em class="replaceable"><code>prefix</code></em>/etc/softhsm2.conf (where
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User <em class="replaceable"><code>prefix</code></em> is configured at compile time).
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User This location can be overridden by the SOFTHSM2_CONF environment
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User variable. The SoftHSMv2 cryptographic store must be installed and
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User initialized before using it with BIND.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<pre class="screen">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code> cd SoftHSMv2 </code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code> configure --with-crypto-backend=openssl --prefix=/opt/pkcs11/usr --enable-gost </code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code> make </code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code> make install </code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code> /opt/pkcs11/usr/bin/softhsm-util --init-token 0 --slot 0 --label softhsmv2 </code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h3 class="title">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<a name="id-1.5.12.8"></a>OpenSSL-based PKCS#11</h3></div></div></div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User OpenSSL-based PKCS#11 mode uses a modified version of the
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User OpenSSL library; stock OpenSSL does not fully support PKCS#11.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User ISC provides a patch to OpenSSL to correct this. This patch is
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User based on work originally done by the OpenSolaris project; it has been
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User modified by ISC to provide new features such as PIN management and
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User key-by-reference.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User There are two "flavors" of PKCS#11 support provided by
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the patched OpenSSL, one of which must be chosen at
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User configuration time. The correct choice depends on the HSM
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User hardware:
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<li class="listitem"><p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Use 'crypto-accelerator' with HSMs that have hardware
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User cryptographic acceleration features, such as the SCA 6000
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User board. This causes OpenSSL to run all supported
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User cryptographic operations in the HSM.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p></li>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<li class="listitem"><p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User Use 'sign-only' with HSMs that are designed to
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User function primarily as secure key storage devices, but lack
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User hardware acceleration. These devices are highly secure, but
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User are not necessarily any faster at cryptography than the
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User system CPU &#8212; often, they are slower. It is therefore
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User most efficient to use them only for those cryptographic
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User functions that require access to the secured private key,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User such as zone signing, and to use the system CPU for all
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User other computationally-intensive operations. The AEP Keyper
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User is an example of such a device.
a24330c4805a224191ab687d0291963062fe3355Tinderbox User </p></li>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</ul></div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User The modified OpenSSL code is included in the BIND 9 release,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User in the form of a context diff against the latest versions of
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User OpenSSL. OpenSSL 0.9.8, 1.0.0, and 1.0.1 are supported; there are
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User separate diffs for each version. In the examples to follow,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User we use OpenSSL 0.9.8, but the same methods work with OpenSSL
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User 1.0.0 and 1.0.1.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<h3 class="title">Note</h3>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User The latest OpenSSL versions as of this writing (January 2015)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User are 0.9.8zc, 1.0.0o, and 1.0.1j.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User ISC will provide updated patches as new versions of OpenSSL
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User are released. The version number in the following examples
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User is expected to change.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Before building BIND 9 with PKCS#11 support, it will be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User necessary to build OpenSSL with the patch in place, and configure
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User it with the path to your HSM's PKCS#11 provider library.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h4 class="title">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<a name="id-1.5.12.8.8"></a>Patching OpenSSL</h4></div></div></div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code>wget <a class="link" href="" target="_top">http://www.openssl.org/source/openssl-0.9.8zc.tar.gz</a></code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </pre>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>Extract the tarball:</p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>tar zxf openssl-0.9.8zc.tar.gz</code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>Apply the patch from the BIND 9 release:</p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<pre class="screen">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code>patch -p1 -d openssl-0.9.8zc \
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User &lt; bind9/bin/pkcs11/openssl-0.9.8zc-patch</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<h3 class="title">Note</h3>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User The patch file may not be compatible with the
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User "patch" utility on all operating systems. You may need to
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User install GNU patch.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User When building OpenSSL, place it in a non-standard
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User location so that it does not interfere with OpenSSL libraries
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User elsewhere on the system. In the following examples, we choose
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User to install into "/opt/pkcs11/usr". We will use this location
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User when we configure BIND 9.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User Later, when building BIND 9, the location of the custom-built
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User OpenSSL library will need to be specified via configure.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User</div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h4 class="title">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.5.12.8.9"></a>Building OpenSSL for the AEP Keyper on Linux</h4></div></div></div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User The AEP Keyper is a highly secure key storage device,
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User but does not provide hardware cryptographic acceleration. It
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User can carry out cryptographic operations, but it is probably
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User slower than your system's CPU. Therefore, we choose the
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User 'sign-only' flavor when building OpenSSL.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User The Keyper-specific PKCS#11 provider library is
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User delivered with the Keyper software. In this example, we place
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User it /opt/pkcs11/usr/lib:
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code>cp pkcs11.GCC4.0.2.so.4.05 /opt/pkcs11/usr/lib/libpkcs11.so</code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User</pre>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User This library is only available for Linux as a 32-bit
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User binary. If we are compiling on a 64-bit Linux system, it is
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User necessary to force a 32-bit build, by specifying -m32 in the
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User build options.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User Finally, the Keyper library requires threads, so we
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User must specify -pthread.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="screen">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt$ <strong class="userinput"><code>cd openssl-0.9.8zc</code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code>/Configure linux-generic32 -m32 -pthread \
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User --pk11-libname=/opt/pkcs11/usr/lib/libpkcs11.so \
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User --pk11-flavor=sign-only \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User --prefix=/opt/pkcs11/usr</code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User After configuring, run "<span class="command"><strong>make</strong></span>"
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User and "<span class="command"><strong>make test</strong></span>". If "<span class="command"><strong>make
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User test</strong></span>" fails with "pthread_atfork() not found", you forgot to
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User add the -pthread above.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h4 class="title">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<a name="id-1.5.12.8.10"></a>Building OpenSSL for the SCA 6000 on Solaris</h4></div></div></div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User The SCA-6000 PKCS#11 provider is installed as a system
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User library, libpkcs11. It is a true crypto accelerator, up to 4
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User times faster than any CPU, so the flavor shall be
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User 'crypto-accelerator'.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User In this example, we are building on Solaris x86 on an
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User AMD64 system.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>cd openssl-0.9.8zc</code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code>/Configure solaris64-x86_64-cc \
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User --pk11-libname=/usr/lib/64/libpkcs11.so \
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt --pk11-flavor=crypto-accelerator \
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt --prefix=/opt/pkcs11/usr</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (For a 32-bit build, use "solaris-x86-cc" and /usr/lib/libpkcs11.so.)
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User After configuring, run
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User <span class="command"><strong>make</strong></span> and
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User <span class="command"><strong>make test</strong></span>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User</div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<div class="section">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<div class="titlepage"><div><div><h4 class="title">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<a name="id-1.5.12.8.11"></a>Building OpenSSL for SoftHSM</h4></div></div></div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User SoftHSM (version 1) is a software library developed by the
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User OpenDNSSEC project
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User (<a class="link" href="http://www.opendnssec.org" target="_top">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User http://www.opendnssec.org
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </a>)
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User which provides a
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User PKCS#11 interface to a virtual HSM, implemented in the form of
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User a SQLite3 database on the local filesystem. SoftHSM uses
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User the Botan library to perform cryptographic functions. Though
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User less secure than a true HSM, it can allow you to experiment
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User with PKCS#11 when an HSM is not available.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User The SoftHSM cryptographic store must be installed and
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User initialized before using it with OpenSSL, and the SOFTHSM_CONF
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User environment variable must always point to the SoftHSM configuration
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User file:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code> cd softhsm-1.3.7 </code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code> configure --prefix=/opt/pkcs11/usr </code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code> make </code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code> make install </code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code> export SOFTHSM_CONF=/opt/pkcs11/softhsm.conf </code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code> echo "0:/opt/pkcs11/softhsm.db" &gt; $SOFTHSM_CONF </code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code> /opt/pkcs11/usr/bin/softhsm --init-token 0 --slot 0 --label softhsm </code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User SoftHSM can perform all cryptographic operations, but
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User since it only uses your system CPU, there is no advantage to using
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User it for anything but signing. Therefore, we choose the 'sign-only'
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User flavor when building OpenSSL.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="screen">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt$ <strong class="userinput"><code>cd openssl-0.9.8zc</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>/Configure linux-x86_64 -pthread \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User --pk11-libname=/opt/pkcs11/usr/lib/libsofthsm.so \
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User --pk11-flavor=sign-only \
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User --prefix=/opt/pkcs11/usr</code></strong>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User After configuring, run "<span class="command"><strong>make</strong></span>"
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User and "<span class="command"><strong>make test</strong></span>".
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User Once you have built OpenSSL, run
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "<span class="command"><strong>apps/openssl engine pkcs11</strong></span>" to confirm
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User that PKCS#11 support was compiled in correctly. The output
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User should be one of the following lines, depending on the flavor
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User selected:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt (pkcs11) PKCS #11 engine support (sign only)
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>Or:</p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User (pkcs11) PKCS #11 engine support (crypto accelerator)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Next, run
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User "<span class="command"><strong>apps/openssl engine pkcs11 -t</strong></span>". This will
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User attempt to initialize the PKCS#11 engine. If it is able to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User do so successfully, it will report
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="quote">&#8220;<span class="quote"><code class="literal">[ available ]</code></span>&#8221;</span>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User If the output is correct, run
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User "<span class="command"><strong>make install</strong></span>" which will install the
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User modified OpenSSL suite to <code class="filename">/opt/pkcs11/usr</code>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<div class="section">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<div class="titlepage"><div><div><h4 class="title">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<a name="id-1.5.12.8.18"></a>Configuring BIND 9 for Linux with the AEP Keyper</h4></div></div></div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User To link with the PKCS#11 provider, threads must be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User enabled in the BIND 9 build.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User The PKCS#11 library for the AEP Keyper is currently
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User only available as a 32-bit binary. If we are building on a
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User 64-bit host, we must force a 32-bit build by adding "-m32" to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User the CC options on the "configure" command line.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code>cd /bind9</code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code>/configure CC="gcc -m32" --enable-threads \
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User --with-openssl=/opt/pkcs11/usr \
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User --with-pkcs11=/opt/pkcs11/usr/lib/libpkcs11.so</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h4 class="title">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<a name="id-1.5.12.8.19"></a>Configuring BIND 9 for Solaris with the SCA 6000</h4></div></div></div>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User To link with the PKCS#11 provider, threads must be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User enabled in the BIND 9 build.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<pre class="screen">
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code>cd /bind9</code></strong>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User$ <strong class="userinput"><code>/configure CC="cc -xarch=amd64" --enable-threads \
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User --with-openssl=/opt/pkcs11/usr \
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User --with-pkcs11=/usr/lib/64/libpkcs11.so</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>(For a 32-bit build, omit CC="cc -xarch=amd64".)</p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User If configure complains about OpenSSL not working, you
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User may have a 32/64-bit architecture mismatch. Or, you may have
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User incorrectly specified the path to OpenSSL (it should be the
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User same as the --prefix argument to the OpenSSL
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User Configure).
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h4 class="title">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.5.12.8.20"></a>Configuring BIND 9 for SoftHSM</h4></div></div></div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt$ <strong class="userinput"><code>cd /bind9</code></strong>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt$ <strong class="userinput"><code>/configure --enable-threads \
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt --with-openssl=/opt/pkcs11/usr \
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User --with-pkcs11=/opt/pkcs11/usr/lib/libsofthsm.so</code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User After configuring, run
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "<span class="command"><strong>make</strong></span>",
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User "<span class="command"><strong>make test</strong></span>" and
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User "<span class="command"><strong>make install</strong></span>".
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User (Note: If "make test" fails in the "pkcs11" system test, you may
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User have forgotten to set the SOFTHSM_CONF environment variable.)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h3 class="title">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<a name="id-1.5.12.9"></a>PKCS#11 Tools</h3></div></div></div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User BIND 9 includes a minimal set of tools to operate the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User HSM, including
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>pkcs11-keygen</strong></span> to generate a new key pair
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User within the HSM,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>pkcs11-list</strong></span> to list objects currently
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User available,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>pkcs11-destroy</strong></span> to remove objects, and
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>pkcs11-tokens</strong></span> to list available tokens.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User In UNIX/Linux builds, these tools are built only if BIND
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User 9 is configured with the --with-pkcs11 option. (Note: If
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User --with-pkcs11 is set to "yes", rather than to the path of the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User PKCS#11 provider, then the tools will be built but the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User provider will be left undefined. Use the -m option or the
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User PKCS11_PROVIDER environment variable to specify the path to the
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User provider.)
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h3 class="title">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="id-1.5.12.10"></a>Using the HSM</h3></div></div></div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User For OpenSSL-based PKCS#11, we must first set up the runtime
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User environment so the OpenSSL and PKCS#11 libraries can be loaded:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code>export LD_LIBRARY_PATH=/opt/pkcs11/usr/lib:${LD_LIBRARY_PATH}</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User This causes <span class="command"><strong>named</strong></span> and other binaries to load
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User the OpenSSL library from <code class="filename">/opt/pkcs11/usr/lib</code>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User rather than from the default location. This step is not necessary
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User when using native PKCS#11.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Some HSMs require other environment variables to be set.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User For example, when operating an AEP Keyper, it is necessary to
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User specify the location of the "machine" file, which stores
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User information about the Keyper for use by the provider
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User library. If the machine file is in
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <code class="filename">/opt/Keyper/PKCS11Provider/machine</code>,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt use:
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="screen">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt$ <strong class="userinput"><code>export KEYPER_LIBRARY_PATH=/opt/Keyper/PKCS11Provider</code></strong>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt</pre>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Such environment variables must be set whenever running
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User any tool that uses the HSM, including
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>pkcs11-keygen</strong></span>,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>pkcs11-list</strong></span>,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>pkcs11-destroy</strong></span>,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>dnssec-keyfromlabel</strong></span>,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>dnssec-signzone</strong></span>,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>dnssec-keygen</strong></span>, and
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <span class="command"><strong>named</strong></span>.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User We can now create and use keys in the HSM. In this case,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User we will create a 2048 bit key and give it the label
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User "sample-ksk":
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>pkcs11-keygen -b 2048 -l sample-ksk</code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>To confirm that the key exists:</p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>pkcs11-list</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox UserEnter PIN:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox Userobject[0]: handle 2147483658 class 3 label[8] 'sample-ksk' id[0]
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userobject[1]: handle 2147483657 class 2 label[8] 'sample-ksk' id[0]
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Before using this key to sign a zone, we must create a
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User pair of BIND 9 key files. The "dnssec-keyfromlabel" utility
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User does this. In this case, we will be using the HSM key
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User "sample-ksk" as the key-signing key for "example.net":
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>dnssec-keyfromlabel -l sample-ksk -f KSK example.net</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User The resulting K*.key and K*.private files can now be used
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User to sign the zone. Unlike normal K* files, which contain both
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User public and private key data, these files will contain only the
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User public key data, plus an identifier for the private key which
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User remains stored within the HSM. Signing with the private key takes
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User place inside the HSM.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User If you wish to generate a second key in the HSM for use
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User as a zone-signing key, follow the same procedure above, using a
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt different keylabel, a smaller key size, and omitting "-f KSK"
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User from the dnssec-keyfromlabel arguments:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User (Note: When using OpenSSL-based PKCS#11 the label is an arbitrary
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User string which identifies the key. With native PKCS#11, the label is
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User a PKCS#11 URI string which may include other details about the key
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User and the HSM, including its PIN. See
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <a class="xref" href="man.dnssec-keyfromlabel.html" title="dnssec-keyfromlabel"><span class="refentrytitle"><span class="application">dnssec-keyfromlabel</span></span>(8)</a> for details.)
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>pkcs11-keygen -b 1024 -l sample-zsk</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>dnssec-keyfromlabel -l sample-zsk example.net</code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User Alternatively, you may prefer to generate a conventional
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User on-disk key, using dnssec-keygen:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>dnssec-keygen example.net</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User This provides less security than an HSM key, but since
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User HSMs can be slow or cumbersome to use for security reasons, it
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User may be more efficient to reserve HSM keys for use in the less
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt frequent key-signing operation. The zone-signing key can be
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User rolled more frequently, if you wish, to compensate for a
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User reduction in key security. (Note: When using native PKCS#11,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User there is no speed advantage to using on-disk keys, as cryptographic
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User operations will be done by the HSM regardless.)
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User Now you can sign the zone. (Note: If not using the -S
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User option to <span class="command"><strong>dnssec-signzone</strong></span>, it will be
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User necessary to add the contents of both <code class="filename">K*.key</code>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User files to the zone master file before signing it.)
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="screen">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User$ <strong class="userinput"><code>dnssec-signzone -S example.net</code></strong>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserEnter PIN:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox UserVerifying the zone using the following algorithms:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserNSEC3RSASHA1.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserZone signing complete:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox UserAlgorithm: NSEC3RSASHA1: ZSKs: 1, KSKs: 1 active, 0 revoked, 0 stand-by
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntexample.net.signed
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h3 class="title">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<a name="id-1.5.12.11"></a>Specifying the engine on the command line</h3></div></div></div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User When using OpenSSL-based PKCS#11, the "engine" to be used by
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User OpenSSL can be specified in <span class="command"><strong>named</strong></span> and all of
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User the BIND <span class="command"><strong>dnssec-*</strong></span> tools by using the "-E
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User &lt;engine&gt;" command line option. If BIND 9 is built with
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User the --with-pkcs11 option, this option defaults to "pkcs11".
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User Specifying the engine will generally not be necessary unless
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User for some reason you wish to use a different OpenSSL
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User engine.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User If you wish to disable use of the "pkcs11" engine &#8212;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt for troubleshooting purposes, or because the HSM is unavailable
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User &#8212; set the engine to the empty string. For example:
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<pre class="screen">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User$ <strong class="userinput"><code>dnssec-signzone -E '' -S example.net</code></strong>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User This causes
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <span class="command"><strong>dnssec-signzone</strong></span> to run as if it were compiled
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User without the --with-pkcs11 option.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User When built with native PKCS#11 mode, the "engine" option has a
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt different meaning: it specifies the path to the PKCS#11 provider
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User library. This may be useful when testing a new provider library.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</div>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="section">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<div class="titlepage"><div><div><h3 class="title">
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<a name="id-1.5.12.12"></a>Running named with automatic zone re-signing</h3></div></div></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User If you want <span class="command"><strong>named</strong></span> to dynamically re-sign zones
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User using HSM keys, and/or to to sign new records inserted via nsupdate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt then <span class="command"><strong>named</strong></span> must have access to the HSM PIN. In OpenSSL-based PKCS#11,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User this is accomplished by placing the PIN into the openssl.cnf file
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User (in the above examples,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <code class="filename">/opt/pkcs11/usr/ssl/openssl.cnf</code>).
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User The location of the openssl.cnf file can be overridden by
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User setting the OPENSSL_CONF environment variable before running
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User <span class="command"><strong>named</strong></span>.
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User </p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User<p>Sample openssl.cnf:</p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<pre class="programlisting">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User openssl_conf = openssl_def
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User [ openssl_def ]
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User engines = engine_section
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User [ engine_section ]
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User pkcs11 = pkcs11_section
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User [ pkcs11_section ]
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User PIN = <em class="replaceable"><code>&lt;PLACE PIN HERE&gt;</code></em>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User</pre>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User This will also allow the dnssec-* tools to access the HSM
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User without PIN entry. (The pkcs11-* tools access the HSM directly,
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User not via OpenSSL, so a PIN will still be required to use
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User them.)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User In native PKCS#11 mode, the PIN can be provided in a file specified
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User as an attribute of the key's label. For example, if a key had the label
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User <strong class="userinput"><code>pkcs11:object=local-zsk;pin-source=/etc/hsmpin</code></strong>,
2f161339d28f61a05dd92bbe01ce754e32e35addTinderbox User then the PIN would be read from the file
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User <code class="filename">/etc/hsmpin</code>.
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<h3 class="title">Warning</h3>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater Placing the HSM's PIN in a text file in this manner may reduce the
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User security advantage of using an HSM. Be sure this is what you want to
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User do before configuring the system in this way.
a24330c4805a224191ab687d0291963062fe3355Tinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User</div>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User</div>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User</div>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<div class="section">
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<a name="dlz-info"></a>DLZ (Dynamically Loadable Zones)</h2></div></div></div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User DLZ (Dynamically Loadable Zones) is an extension to BIND 9 that allows
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User zone data to be retrieved directly from an external database. There is
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User no required format or schema. DLZ drivers exist for several different
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User database backends including PostgreSQL, MySQL, and LDAP and can be
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User written for any other.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User Historically, DLZ drivers had to be statically linked with the <span class="command"><strong>named</strong></span>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User binary and were turned on via a configure option at compile time (for
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User example, <strong class="userinput"><code>"configure --with-dlz-ldap"</code></strong>).
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Currently, the drivers provided in the BIND 9 tarball in
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User <code class="filename">contrib/dlz/drivers</code> are still linked this
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User way.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User In BIND 9.8 and higher, it is possible to link some DLZ modules
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt dynamically at runtime, via the DLZ "dlopen" driver, which acts as a
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt generic wrapper around a shared object implementing the DLZ API. The
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User "dlopen" driver is linked into <span class="command"><strong>named</strong></span> by default, so configure options
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User are no longer necessary when using these dynamically linkable drivers,
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User but are still needed for the older drivers in
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User <code class="filename">contrib/dlz/drivers</code>.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User When the DLZ module provides data to <span class="command"><strong>named</strong></span>, it does so in text format.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User The response is converted to DNS wire format by <span class="command"><strong>named</strong></span>. This
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User conversion, and the lack of any internal caching, places significant
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User limits on the query performance of DLZ modules. Consequently, DLZ is
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User not recommended for use on high-volume servers. However, it can be
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User used in a hidden master configuration, with slaves retrieving zone
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt updates via AXFR. (Note, however, that DLZ has no built-in support for
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User DNS notify; slaves are not automatically informed of changes to the
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User zones in the database.)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<div class="section">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="titlepage"><div><div><h3 class="title">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<a name="id-1.5.13.6"></a>Configuring DLZ</h3></div></div></div>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User A DLZ database is configured with a <span class="command"><strong>dlz</strong></span>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User statement in <code class="filename">named.conf</code>:
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<pre class="screen">
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User dlz example {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt database "dlopen driver.so <code class="option">args</code>";
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User search yes;
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User };
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </pre>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User This specifies a DLZ module to search when answering queries; the
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User module is implemented in <code class="filename">driver.so</code> and is
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User loaded at runtime by the dlopen DLZ driver. Multiple
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User <span class="command"><strong>dlz</strong></span> statements can be specified; when
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User answering a query, all DLZ modules with <code class="option">search</code>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User set to <code class="literal">yes</code> will be queried to find out if
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User they contain an answer for the query name; the best available
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User answer will be returned to the client.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User The <code class="option">search</code> option in the above example can be
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User omitted, because <code class="literal">yes</code> is the default value.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User If <code class="option">search</code> is set to <code class="literal">no</code>, then
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User this DLZ module is <span class="emphasis"><em>not</em></span> searched for the best
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User match when a query is received. Instead, zones in this DLZ must be
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt separately specified in a zone statement. This allows you to
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt configure a zone normally using standard zone option semantics,
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User but specify a different database back-end for storage of the
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User zone's data. For example, to implement NXDOMAIN redirection using
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User a DLZ module for back-end storage of redirection rules:
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="screen">
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User dlz other {
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User database "dlopen driver.so <code class="option">args</code>";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User search no;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User };
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User zone "." {
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User type redirect;
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User dlz other;
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User };
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </pre>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User</div>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<div class="section">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="titlepage"><div><div><h3 class="title">
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<a name="id-1.5.13.7"></a>Sample DLZ Driver</h3></div></div></div>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User For guidance in implementation of DLZ modules, the directory
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User <code class="filename">contrib/dlz/example</code> contains a basic
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt dynamically-linkable DLZ module--i.e., one which can be
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User loaded at runtime by the "dlopen" DLZ driver.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User The example sets up a single zone, whose name is passed
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User to the module as an argument in the <span class="command"><strong>dlz</strong></span>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User statement:
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<pre class="screen">
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User dlz other {
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User database "dlopen driver.so example.nil";
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User };
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </pre>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt In the above example, the module is configured to create a zone
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User "example.nil", which can answer queries and AXFR requests, and
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User accept DDNS updates. At runtime, prior to any updates, the zone
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User contains an SOA, NS, and a single A record at the apex:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<pre class="screen">
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User example.nil. 3600 IN SOA example.nil. hostmaster.example.nil. (
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User 123 900 600 86400 3600
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User )
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User example.nil. 3600 IN NS example.nil.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User example.nil. 1800 IN A 10.53.0.1
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </pre>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User<p>
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User The sample driver is capable of retrieving information about the
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User querying client, and altering its response on the basis of this
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User information. To demonstrate this feature, the example driver
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User responds to queries for "source-addr.<code class="option">zonename</code>&gt;/TXT"
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User with the source address of the query. Note, however, that this
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User record will *not* be included in AXFR or ANY responses. Normally,
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User this feature would be used to alter responses in some other fashion,
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User e.g., by providing different address records for a particular name
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User depending on the network from which the query arrived.
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Documentation of the DLZ module API can be found in
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User <code class="filename">contrib/dlz/example/README</code>. This directory also
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User contains the header file <code class="filename">dlz_minimal.h</code>, which
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User defines the API and should be included by any dynamically-linkable
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User DLZ module.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User</div>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User</div>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<div class="section">
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<a name="dyndb-info"></a>DynDB (Dynamic Database)</h2></div></div></div>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User DynDB is an extension to BIND 9 which, like DLZ
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User (see <a class="xref" href="Bv9ARM.ch04.html#dlz-info" title="DLZ (Dynamically Loadable Zones)">the section called &#8220;DLZ (Dynamically Loadable Zones)&#8221;</a>), allows zone data to be
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User retrieved from an external database. Unlike DLZ, a DynDB module
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User provides a full-featured BIND zone database interface. Where
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User DLZ translates DNS queries into real-time database lookups,
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User resulting in relatively poor query performance, and is unable
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User to handle DNSSEC-signed data due to its limited API, a DynDB
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User module can pre-load an in-memory database from the external
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User data source, providing the same performance and functionality
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User as zones served natively by BIND.
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User </p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User A DynDB module supporting LDAP has been created by Red Hat
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User and is available from
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User <a class="link" href="https://fedorahosted.org/bind-dyndb-ldap/" target="_top">https://fedorahosted.org/bind-dyndb-ldap/</a>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt A sample DynDB module for testing and developer guidance
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User is included with the BIND source code, in the directory
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User <code class="filename">bin/tests/system/dyndb/driver</code>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<div class="section">
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<div class="titlepage"><div><div><h3 class="title">
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<a name="id-1.5.14.5"></a>Configuring DynDB</h3></div></div></div>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User A DynDB database is configured with a <span class="command"><strong>dyndb</strong></span>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User statement in <code class="filename">named.conf</code>:
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User </p>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<pre class="screen">
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User dyndb example "driver.so" {
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User <em class="replaceable"><code>parameters</code></em>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User };
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User </pre>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User The file <code class="filename">driver.so</code> is a DynDB module which
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User implements the full DNS database API. Multiple
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User <span class="command"><strong>dyndb</strong></span> statements can be specified, to load
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User different drivers or multiple instances of the same driver.
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User Zones provided by a DynDB module are added to the view's zone
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User table, and are treated as normal authoritative zones when BIND
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User is responding to queries. Zone configuration is handled internally
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User by the DynDB module.
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User </p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User The <em class="replaceable"><code>parameters</code></em> are passed as an opaque
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User string to the DynDB module's initialization routine. Configuration
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User syntax will differ depending on the driver.
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User </p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User</div>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<div class="section">
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<div class="titlepage"><div><div><h3 class="title">
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<a name="id-1.5.14.6"></a>Sample DynDB Module</h3></div></div></div>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User For guidance in implementation of DynDB modules, the directory
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User <code class="filename">bin/tests/system/dyndb/driver</code>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User contains a basic DynDB module.
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User The example sets up two zones, whose names are passed
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User to the module as arguments in the <span class="command"><strong>dyndb</strong></span>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User statement:
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User </p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<pre class="screen">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User dyndb sample "sample.so" { example.nil. arpa. };
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User </pre>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User In the above example, the module is configured to create a zone
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User "example.nil", which can answer queries and AXFR requests, and
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User accept DDNS updates. At runtime, prior to any updates, the zone
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User contains an SOA, NS, and a single A record at the apex:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User<pre class="screen">
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User example.nil. 86400 IN SOA example.nil. example.nil. (
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User 0 28800 7200 604800 86400
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User )
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User example.nil. 86400 IN NS example.nil.
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User example.nil. 86400 IN A 127.0.0.1
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User </pre>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User When the zone is updated dynamically, the DynDB module will determine
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User whether the updated RR is an address (i.e., type A or AAAA) and if
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User so, it will automatically update the corresponding PTR record in a
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User reverse zone. (Updates are not stored permanently; all updates are
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews lost when the server is restarted.)
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater </p>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater</div>
cbf7f1435f332b31f51a98611ccbfcd07c42c032Automatic Updater</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="section">
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User<div class="titlepage"><div><div><h2 class="title" style="clear: both">
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews<a name="ipv6"></a>IPv6 Support in <acronym class="acronym">BIND</acronym> 9</h2></div></div></div>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews<p>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <acronym class="acronym">BIND</acronym> 9 fully supports all currently
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews defined forms of IPv6 name to address and address to name
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews lookups. It will also use IPv6 addresses to make queries when
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein running on an IPv6 capable system.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein For forward lookups, <acronym class="acronym">BIND</acronym> 9 supports
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User only AAAA records. RFC 3363 deprecated the use of A6 records,
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews and client-side support for A6 records was accordingly removed
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein from <acronym class="acronym">BIND</acronym> 9.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein However, authoritative <acronym class="acronym">BIND</acronym> 9 name servers still
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews load zone files containing A6 records correctly, answer queries
5d564da348e890e42f63eebf2dced9a05b41f4fbTinderbox User for A6 records, and accept zone transfer for a zone containing A6
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews records.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews </p>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews<p>
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews For IPv6 reverse lookups, <acronym class="acronym">BIND</acronym> 9 supports
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews the traditional "nibble" format used in the
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews <span class="emphasis"><em>ip6.arpa</em></span> domain, as well as the older, deprecated
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews <span class="emphasis"><em>ip6.int</em></span> domain.
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews Older versions of <acronym class="acronym">BIND</acronym> 9
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein supported the "binary label" (also known as "bitstring") format,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User but support of binary labels has been completely removed per
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein RFC 3363.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt Many applications in <acronym class="acronym">BIND</acronym> 9 do not understand
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the binary label format at all any more, and will return an
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User error if given.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein In particular, an authoritative <acronym class="acronym">BIND</acronym> 9
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User name server will not load a zone file containing binary labels.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews<p>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews For an overview of the format and structure of IPv6 addresses,
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews see <a class="xref" href="Bv9ARM.ch11.html#ipv6addresses" title="IPv6 addresses (AAAA)">the section called &#8220;IPv6 addresses (AAAA)&#8221;</a>.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="section">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="titlepage"><div><div><h3 class="title">
3eb9ec750c9088869170dda63e8899b2ba462823Mark Andrews<a name="id-1.5.15.6"></a>Address Lookups Using AAAA Records</h3></div></div></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User The IPv6 AAAA record is a parallel to the IPv4 A record,
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews and, unlike the deprecated A6 record, specifies the entire
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews IPv6 address in a single record. For example,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews<pre class="programlisting">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$ORIGIN example.com.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userhost 3600 IN AAAA 2001:db8::1
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User</pre>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User Use of IPv4-in-IPv6 mapped addresses is not recommended.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User If a host has an IPv4 address, use an A record, not
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein a AAAA, with <code class="literal">::ffff:192.168.42.1</code> as
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the address.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="section">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="titlepage"><div><div><h3 class="title">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<a name="id-1.5.15.7"></a>Address to Name Lookups Using Nibble Format</h3></div></div></div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein When looking up an address in nibble format, the address
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein components are simply reversed, just as in IPv4, and
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater <code class="literal">ip6.arpa.</code> is appended to the
ac93437301f55ed69bf85883a497a75598c628f9Automatic Updater resulting name.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein For example, the following would provide reverse name lookup for
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User a host with address
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User <code class="literal">2001:db8::1</code>.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User </p>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<pre class="programlisting">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 14400 IN PTR (
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein host.example.com. )
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</pre>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</div>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<div class="navfooter">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<hr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<table width="100%" summary="Navigation footer">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td width="40%" align="left">
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews<a accesskey="p" href="Bv9ARM.ch03.html">Prev</a>�</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td width="20%" align="center">�</td>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td width="40%" align="right">�<a accesskey="n" href="Bv9ARM.ch05.html">Next</a>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein</td>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt</tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<tr>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<td width="40%" align="left" valign="top">Chapter�3.�Name Server Configuration�</td>
<td width="20%" align="center"><a accesskey="h" href="Bv9ARM.html">Home</a></td>
<td width="40%" align="right" valign="top">�Chapter�5.�The <acronym class="acronym">BIND</acronym> 9 Lightweight Resolver</td>
</tr>
</table>
</div>
<p xmlns:db="http://docbook.org/ns/docbook" style="text-align: center;">BIND 9.11.0pre-alpha</p>
</body>
</html>