<?xml version="1.0"?>
<?rfc compact="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes" ?>
<?rfc toc="yes" ?>
<!DOCTYPE rfc>
<rfc ipr="trust200902" submissionType="IETF" category="std" docName="draft-andrews-dnsop-pd-reverse-03">
  <front>
    <title abbrev="IP6.ARPA with Prefix Delegation">Automated Delegation of IP6.ARPA reverse zones with Prefix Delegation</title>
    <author initials="M." surname="Andrews" fullname="M. Andrews">
      <organization abbrev="ISC">Internet Systems Consortium</organization>
      <address>
        <postal>
          <street>PO Box 360</street>
          <city>Newmarket</city>
          <region>NH</region>
          <code>03857</code>
          <country>US</country>
        </postal>
        <email>marka@isc.org</email>
      </address>
    </author>
    <date day="25" month="July" year="2024"/>
    <abstract>
      <t>
        This document describes a method to automate the delegation of
        IP6.ARPA reverse zones when performing Prefix Delegations.
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" title="Introduction">
      <t>
	This document describes a method to automate the delegation
	of IP6.ARPA reverse zones when performing Prefix Delegations.
      </t> <t>
	This will allow home users and small businesses to have
	IP6.ARPA zones without manual intervention on the part of
	the ISP.
      </t>
    </section>
    <section anchor="method" title="Method">
      <t>
	1) CPE device generates a RSA key pair and stores this in non-volatile
	memory.
      </t> <t>
	2) CPE device generates a DHCPv6 Prefix Delegation <xref target="RFC3633"/>
	request which includes a KEY-RDATA option (code point TBA), which
	contains a the rdata of a DNS KEY record containing a RSASHA256
	key using the public components of the previously generated RSA
	key pair.
      </t> <t>
	3) DHCP server updates DNS server based on the prefix it is
	delegating and the KEY-RDATA, using TSIG <xref target="RFC2845"/>
	for authentication, and responds with prefix.  If this is a
	new prefix delegation, it will clear out all the old DNS
	records as part of the delegation process.  If there are
	multiple prefixes being delegated the ISP's DNS server will be
	updated for all of them.  If the delegated prefix is not nibble
	aligned then the server will update all the reverse apex names that
	cover the address space, i.e. 1, 2, 4 or 8 KEY records will
	be added all with the same rdata contents.
      </t> <t>
	4) CPE device configures the nameserver built into it to
	serve the reverse of the delegated prefixes.   Alternatively
	it may configure other nameservers to serve these zones,
	however the method to do that is out of scope for this
	document.
      </t> <t>
	5) CPE device generates a DNS UPDATE <xref target="RFC2136"/> which
	delegates the reverse name space to itself and others if they
	have been configured. It uses SIG(0) <xref target="RFC2931"/>
        to sign the request, with owner name matching the reverse of the
        delegated prefix.
      </t> <t>
	6) The ISP's DNS server is configured to accept self-signed
	requests (the owner name used in the SIG(0) signature matches
	the owner name of the data to be updated).  It examines the
	request, looks at the KEY record added by the DHCPv6 server,
	and decides whether the request is valid.
      </t>
    </section>
    <section title="Example">
      <t>
	 If 2001:DB8:1:4::/62 is delegated then KEY records for
      </t>
      <figure>
        <artwork>
4.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA KEY ...
5.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA KEY ...
6.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA KEY ...
7.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA KEY ...
        </artwork>
      </figure>
      <t>
	will be added.  The CPE device will configure the nameservers
	to serve all of the following zones
      </t>
      <figure>
        <artwork>
4.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA
5.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA
6.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA
7.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA
        </artwork>
      </figure>
      <t>
	then will send individual UPDATE messages to delegate each of
	the reverse zones.
      </t>
      <figure>
        <artwork>
% nsupdate -k K4.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA
update add 4.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA NS ...
send
% nsupdate -k K5.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA
update add 5.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA NS ...
send
% nsupdate -k K6.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA 
update add 6.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA NS ...
send
% nsupdate -k K7.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA
update add 7.0.0.0.1.0.0.0.8.B.D.0.1.0.0.2.IP6.ARPA NS ...
send
        </artwork>
      </figure>
      <t>
        Named would be configured to accept dynamic updates from
        both the CPE devices and from the DHCP server.
      </t>
      <figure>
        <artwork>
zone 8.B.D.0.1.0.0.2.IP6.ARPA {
    type primary;
    file "8.B.D.0.1.0.0.2.IP6.ARPA.db";
    update-policy {
        // allow 2 KEY, 10 NS and 8 DS records to be added
        grant * self . KEY(2) NS(10) DS(8);
	// allow the DHCP server add the KEY and cleanup
        grant dhcp-server-key subzone KEY NS DS;
    };
    ...
};
        </artwork>
      </figure>
    </section>
    <section anchor="iana" title="IANA Considerations">
       <t>
	 Allocate a DHCPv6 code point for KEY-RDATA.
       </t>
    </section>
    <section anchor="security" title="Security Considerations">
      <t>
	The UPDATE requests are all signed.  This is a proven method
	for securing UPDATE requests in the DNS.
      </t>
      <t>
	As a RSA key is being used there is no issue with key material
	being sent in the clear.
      </t>
      <t>
	Only the CPE device and the ISP itself is capable of creating, 
	updating or destroying the delegation.
      </t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      <reference anchor="RFC2136">
	<front>
	  <title>Dynamic Updates in the Domain Name System (DNS UPDATE)</title>
          <author initials="P." surname="Vixie" fullname="P. Vixie"/>
          <author initials="S." surname="Thomson" fullname="S. Thomson"/>
          <author initials="Y." surname="Rekhter" fullname="Y. Rekhter"/>
          <author initials="J." surname="Bound" fullname="J. Bound"/>
          <date month="April" year="1997" />
        </front>
        <seriesInfo name="RFC" value="2136" />
      </reference>
      <reference anchor="RFC2845">
	<front>
	  <title>Secret Key Transaction Authentication for DNS (TSIG)</title>
          <author initials="P." surname="Vixie" fullname="P. Vixie"/>
          <author initials="O." surname="Gudmundsson" fullname="O. Gudmundsson"/>
          <author initials="D." surname="Eastlake" fullname="D. Eastlake 3rd"/>
          <author initials="B." surname="Wellington" fullname="B. Wellington"/>
          <date month="May" year="2000" />
        </front>
        <seriesInfo name="RFC" value="2845" />
      </reference>
      <reference anchor="RFC2931">
	<front>
	  <title>Secret Key Transaction Authentication for DNS (TSIG)</title>
          <author initials="D." surname="Eastlake" fullname="D. Eastlake 3rd"/>
          <date month="September" year="2000" />
        </front>
        <seriesInfo name="RFC" value="2931" />
      </reference>
      <reference anchor="RFC3633">
	<front>
	  <title>IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6</title>
          <author initials="O." surname="Troan" fullname="O. Troan"/>
          <author initials="R." surname="Droms" fullname="R. Droms"/>
          <date month="December" year="2003" />
        </front>
        <seriesInfo name="RFC" value="3633" />
      </reference>
    </references>
  </back>
</rfc>
