Bv9ARM.ch04.html revision 5b5f4cca7833343cac382387ad86ff573b185d17
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Advanced DNS Features</TITLE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="GENERATOR"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTITLE="BIND 9 Administrator Reference Manual"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinREL="PREVIOUS"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTITLE="Name Server Configuration"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTITLE="The BIND 9 Lightweight Resolver"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="chapter"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinBGCOLOR="#FFFFFF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinTEXT="#000000"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinLINK="#0000FF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinVLINK="#840084"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinALINK="#0000FF"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="NAVHEADER"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinSUMMARY="Header navigation table"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCELLPADDING="0"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCELLSPACING="0"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinALIGN="center"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>BIND 9 Administrator Reference Manual</TH
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinVALIGN="bottom"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinACCESSKEY="P"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinALIGN="center"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinVALIGN="bottom"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinALIGN="right"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinVALIGN="bottom"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinACCESSKEY="N"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="chapter"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Chapter 4. Advanced DNS Features</H1
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Table of Contents</B
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric LuceHREF="Bv9ARM.ch04.html#dynamic_update"
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce>Dynamic Update</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHREF="Bv9ARM.ch04.html#incremental_zone_transfers"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Incremental Zone Transfers (IXFR)</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Split DNS</A
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce>IPv6 Support in <ACRONYM
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric LuceCLASS="acronym"
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce>BIND</ACRONYM
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric LuceCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="notify"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>4.1. Notify</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="acronym"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>DNS</ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> NOTIFY is a mechanism that allows master
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinservers to notify their slave servers of changes to a zone's data. In
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinresponse to a <B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> from a master server, the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinslave will check to see that its version of the zone is the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincurrent version and, if not, initiate a zone transfer.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="acronym"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>DNS</ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinFor more information about
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>, see the description of the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> option in <A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHREF="Bv9ARM.ch06.html#boolean_options"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Section 6.2.16.1</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthe description of the zone option <B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>also-notify</B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHREF="Bv9ARM.ch06.html#zone_transfers"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Section 6.2.16.7</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinprotocol is specified in RFC 1996.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="dynamic_update"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>4.2. Dynamic Update</A
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
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein in RFC 2136.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Dynamic update is enabled on a zone-by-zone basis, by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein including an <B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>allow-update</B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>update-policy</B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> clause in the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> statement.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Updating of secure zones (zones using DNSSEC) follows
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein RFC 3007: RRSIG and NSEC records affected by updates are automatically
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein regenerated by the server using an online zone key.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein Update authorization is based
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein on transaction signatures and an explicit server policy.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect2"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect2"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="journal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>4.2.1. The journal file</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>All changes made to a zone using dynamic update are stored in the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein zone's journal file. This file is automatically created by the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein server when when the first dynamic update takes place. The name of
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein the journal file is formed by appending the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein extension <TT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein name of the corresponding zone file. The journal file is in a
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein binary format and should not be edited manually.</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
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein zone is updated frequently. Instead, the dump is delayed by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein up to 15 minutes, allowing additional updates to take place.</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 took
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein place after the last zone dump.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Changes that result from incoming incremental zone transfers are also
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein journalled in a similar way.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>The zone files of dynamic zones cannot normally be edited by
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein hand because they are not guaranteed to contain the most recent
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein dynamic changes - those are only in the journal file.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The only way to ensure that the zone file of a dynamic zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is up to date is to run <B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>rndc stop</B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>If you have to make changes to a dynamic zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein manually, the following procedure will work: Disable dynamic updates
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to the zone using
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>rndc freeze <VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="replaceable"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein This will also remove the zone's <TT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein and update the master file. Edit the zone file. Run
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>rndc unfreeze <VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="replaceable"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein to reload the changed zone and re-enable dynamic updates.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="incremental_zone_transfers"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>4.3. Incremental Zone Transfers (IXFR)</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>The incremental zone transfer (IXFR) protocol is a way for
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinslave servers to transfer only changed data, instead of having to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeintransfer the entire zone. The IXFR protocol is specified in RFC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHREF="Bv9ARM.ch09.html#proposed_standards"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Proposed Standards</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>When acting as a master, <ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="acronym"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>BIND</ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinsupports IXFR for those zones
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinwhere the necessary change history information is available. These
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininclude master zones maintained by dynamic update and slave zones
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinwhose data was obtained by IXFR. For manually maintained master
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinzones, and for slave zones obtained by performing a full zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeintransfer (AXFR), IXFR is supported only if the option
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>ixfr-from-differences</B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="userinput"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>When acting as a slave, <ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="acronym"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>BIND</ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinattempt to use IXFR unless
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinit is explicitly disabled. For more information about disabling
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinIXFR, see the description of the <B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>request-ixfr</B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> statement.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="AEN767"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>4.4. Split DNS</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Setting up different views, or visibility, of the DNS space to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininternal and external resolvers is usually referred to as a <SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> setup. There are several reasons an organization
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinwould want to set up its DNS this way.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>One common reason for setting up a DNS system this way is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto hide "internal" DNS information from "external" clients on the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinInternet. There is some debate as to whether or not this is actually useful.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinInternal DNS information leaks out in many ways (via email headers,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinfor example) and most savvy "attackers" can find the information
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthey need using other means.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Another common reason for setting up a Split DNS system is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto allow internal networks that are behind filters or in RFC 1918
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinspace (reserved IP space, as documented in RFC 1918) to resolve DNS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinon the Internet. Split DNS can also be used to allow mail from outside
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinback in to the internal network.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Here is an example of a split DNS setup:</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Let's say a company named <SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Example, Inc.</I
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhas several corporate sites that have an internal network with reserved
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinInternet Protocol (IP) space and an external demilitarized zone (DMZ),
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinor "outside" section of a network, that is available to the public.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Example, Inc.</I
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> wants its internal clients
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto be able to resolve external hostnames and to exchange mail with
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinpeople on the outside. The company also wants its internal resolvers
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto have access to certain internal-only zones that are not available
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinat all outside of the internal network.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>In order to accomplish this, the company will set up two sets
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinof name servers. One set will be on the inside network (in the reserved
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinIP space) and the other set will be on bastion hosts, which are "proxy"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinhosts that can talk to both sides of its network, in the DMZ.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>The internal servers will be configured to forward all queries,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinexcept queries for <TT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>, to the servers in the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinDMZ. These internal servers will have complete sets of information
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>To protect the <TT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthe internal name servers must be configured to disallow all queries
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto these domains from any external hosts, including the bastion
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>The external servers, which are on the bastion hosts, will
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinbe configured to serve the "public" version of the <TT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinThis could include things such as the host records for public servers
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinand mail exchange (MX) records (<TT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>In addition, the public <TT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinshould have special MX records that contain wildcard (`*') records
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinpointing to the bastion hosts. This is needed because external mail
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinservers do not have any other way of looking up how to deliver mail
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto those internal hosts. With the wildcard records, the mail will
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinbe delivered to the bastion host, which can then forward it on to
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininternal hosts.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Here's an example of a wildcard MX record:</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="programlisting"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Now that they accept mail on behalf of anything in the internal
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinnetwork, the bastion hosts will need to know how to deliver mail
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto internal hosts. In order for this to work properly, the resolvers on
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthe bastion hosts will need to be configured to point to the internal
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinname servers for DNS resolution.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Queries for internal hostnames will be answered by the internal
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinservers, and queries for external hostnames will be forwarded back
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinout to the DNS servers on the bastion hosts.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>In order for all this to work properly, internal clients will
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinneed to be configured to query <SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> the internal
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinname servers for DNS queries. This could also be enforced via selective
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinfiltering on the network.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>If everything has been set properly, <SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Example, Inc.</I
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininternal clients will now be able to:</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Look up any hostnames in the <VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Look up any hostnames in the <VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> domains.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Look up any hostnames on the Internet.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Exchange mail with internal AND external people.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Hosts on the Internet will be able to:</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Look up any hostnames in the <VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Exchange mail with anyone in the <VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Here is an example configuration for the setup we just
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein described above. Note that this is only configuration information;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein for information on how to configure your zone files, see <A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinHREF="Bv9ARM.ch03.html#sample_configuration"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Section 3.1</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>Internal DNS server config:</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="programlisting"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinacl internals { 172.16.72.0/24; 192.168.1.0/24; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinacl externals { <VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="varname"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>bastion-ips-go-here</VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein forward only;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein forwarders { // forward to external servers
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="varname"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>bastion-ips-go-here</VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { none; }; // sample allow-transfer (no one)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-query { internals; externals; }; // restrict query access
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-recursion { internals; }; // restrict recursion
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinzone "site1.example.com" { // sample master zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein type master;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein forwarders { }; // do normal iterative
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein // resolution (do not forward)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-query { internals; externals; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { internals; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinzone "site2.example.com" { // sample slave zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein masters { 172.16.72.3; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein forwarders { };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-query { internals; externals; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { internals; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein type master;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein forwarders { };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-query { internals; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { internals; }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein masters { 172.16.72.3; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein forwarders { };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-query { internals };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { internals; }
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>External (bastion host) DNS server config:</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="programlisting"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> acl internals { 172.16.72.0/24; 192.168.1.0/24; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinacl externals { bastion-ips-go-here; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { none; }; // sample allow-transfer (no one)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-query { internals; externals; }; // restrict query access
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-recursion { internals; externals; }; // restrict recursion
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinzone "site1.example.com" { // sample slave zone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein type master;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-query { any; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { internals; externals; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein masters { another_bastion_host_maybe; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-query { any; };
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein allow-transfer { internals; externals; }
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric LuceCLASS="filename"
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric Luce> (or equivalent) on
727f5b8846457a33d06f515a10a7e1aa849ddf18Andreas Gustafssonthe bastion host(s):</P
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric LuceCLASS="programlisting"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> search ...
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinnameserver 172.16.72.2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinnameserver 172.16.72.3
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinnameserver 172.16.72.4
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>4.5. TSIG</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>This is a short guide to setting up Transaction SIGnatures
33682c92e96b39c395cdb2c3feb8eb5914e7d5a8Andreas Gustafsson(TSIG) based transaction security in <ACRONYM
f293a69bcd1c1dd7bdac8f4102fc2398b9e475c8Eric LuceCLASS="acronym"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>BIND</ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>. It describes changes
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinto the configuration file as well as what changes are required for
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindifferent features, including the process of creating transaction
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinkeys and using transaction signatures with <ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="acronym"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>BIND</ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="acronym"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>BIND</ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> primarily supports TSIG for server to server communication.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinThis includes zone transfer, notify, and recursive query messages.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinResolvers based on newer versions of <ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="acronym"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>BIND</ACRONYM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> 8 have limited support
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>TSIG might be most useful for dynamic update. A primary
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein server for a dynamic zone should use access control to control
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein updates, but IP-based access control is insufficient.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein The cryptographic access control provided by TSIG
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein is far superior. The <B
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="command"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein program supports TSIG via the <VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="option"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="option"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein> command line options.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect2"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect2"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="AEN858"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>4.5.1. Generate Shared Keys for Each Pair of Hosts</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>A shared secret is generated to be shared between <SPAN
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="emphasis"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinAn arbitrary key name is chosen: "host1-host2.". The key name must
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinbe the same on both hosts.</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect3"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="sect3"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNAME="AEN863"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>4.5.1.1. Automatic Generation</A
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>The following command will generate a 128 bit (16 byte) HMAC-MD5
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinkey as described above. Longer keys are better, but shorter keys
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinare easier to read. Note that the maximum key length is 512 bits;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinkeys longer than that will be digested with MD5 to produce a 128
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="userinput"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>dnssec-keygen -a hmac-md5 -b 128 -n HOST host1-host2.</KBD
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein>The key is in the file <TT
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="filename"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinNothing directly uses this file, but the base-64 encoded string
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinfollowing "<VAR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="literal"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincan be extracted from the file and used as a shared secret:</P
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCLASS="programlisting"
HREF="Bv9ARM.ch06.html#dynamic_update_policies"
that the tools shipped with BIND 9.2.x and earlier are not compatible
HREF="Bv9ARM.ch09.html#ipv6addresses"
> $ORIGIN example.com.
> $ORIGIN 0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 14400 IN PTR host.example.com.
HREF="Bv9ARM.ch03.html"
HREF="Bv9ARM.html"
HREF="Bv9ARM.ch05.html"