



Internet Engineering Task Force (IETF)                       S. Cheshire
Request for Comments: 8880                                    Apple Inc.
Updates: 7050                                                D. Schinazi
Category: Standards Track                                     Google LLC
ISSN: 2070-1721                                              August 2020


                Special Use Domain Name 'ipv4only.arpa'

Abstract

   NAT64 (Network Address and Protocol Translation from IPv6 Clients to
   IPv4 Servers) allows client devices using IPv6 to communicate with
   servers that have only IPv4 connectivity.

   The specification for how a client discovers its local network's
   NAT64 prefix (RFC 7050) defines the special name 'ipv4only.arpa' for
   this purpose.  However, in its Domain Name Reservation Considerations
   section (Section 8.1), that specification (RFC 7050) indicates that
   the name actually has no particularly special properties that would
   require special handling.

   Consequently, despite the well-articulated special purpose of the
   name, 'ipv4only.arpa' was not recorded in the Special-Use Domain
   Names registry as a name with special properties.

   This document updates RFC 7050.  It describes the special treatment
   required and formally declares the special properties of the name.
   It also adds similar declarations for the corresponding reverse
   mapping names.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc8880.

Copyright Notice

   Copyright (c) 2020 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction
     1.1.  Conventions and Terminology
   2.  Reasons to Declare 'ipv4only.arpa' as Special
   3.  Consequences of 'ipv4only.arpa' Not Being Declared Special
     3.1.  Consequences for Name Resolution APIs and Libraries
     3.2.  Consequences for DNS64 Implementations
   4.  Remedies
   5.  Security Considerations
   6.  IANA Considerations
   7.  Domain Name Reservation Considerations
     7.1.  Special Use Domain Name 'ipv4only.arpa'
     7.2.  Names '170.0.0.192.in-addr.arpa' and
           '171.0.0.192.in-addr.arpa'
       7.2.1.  ip6.arpa Reverse Mapping PTR Records
   8.  References
     8.1.  Normative References
     8.2.  Informative References
   Appendix A.  Example BIND 9 Configuration
   Acknowledgements
   Authors' Addresses

1.  Introduction

   NAT64 (Network Address and Protocol Translation from IPv6 Clients to
   IPv4 Servers) [RFC6146] allows client devices using IPv6 to
   communicate with servers that have only IPv4 connectivity.

   DNS64 (DNS Extensions for Network Address Translation from IPv6
   Clients to IPv4 Servers) [RFC6147] facilitates use of NAT64 by
   clients by generating synthesized IPv6 addresses for IPv4 servers
   that have no IPv6 address of their own, or by communicating the local
   network's NAT64 prefix to clients so that they can perform the IPv6
   address synthesis themselves.

   The specification for how a client discovers its local network's
   NAT64 prefix [RFC7050] defines the special name 'ipv4only.arpa' for
   this purpose, but in its Domain Name Reservation Considerations
   section (Section 8.1), that specification [RFC7050] indicates that
   the name actually has no particularly special properties that would
   require special handling and does not request IANA to record the name
   in the Special-Use Domain Names registry [SUDN].

   Consequently, despite the well-articulated special purpose of the
   name, 'ipv4only.arpa' was not recorded in the Special-Use Domain
   Names registry [SUDN] as a name with special properties.

   This omission was discussed in the document "Special-Use Domain Names
   Problem Statement" [RFC8244].

   As a result of this omission, in cases where software needs to give
   this name special treatment in order for it to work correctly, there
   was no clear mandate authorizing software authors to implement that
   special treatment.  Software implementers were left with the choice
   between not implementing the special behavior necessary for the name
   queries to work correctly or implementing the special behavior and
   being accused of being noncompliant with IETF DNS specifications.

   This document describes the special treatment required, formally
   declares the special properties of the name, and adds similar
   declarations for the corresponding reverse mapping names.

1.1.  Conventions and Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

2.  Reasons to Declare 'ipv4only.arpa' as Special

   The hostname 'ipv4only.arpa' is peculiar in that it was never
   intended to be treated like a normal hostname.

   A typical client never has any reason to look up the IPv4 address
   records for 'ipv4only.arpa': no normal user is ever trying to view a
   website hosted at that domain name or trying to send email to an
   email address at that domain name.  The name 'ipv4only.arpa' is
   already known, by IETF specification [RFC7050], to have exactly two
   IPv4 address records: 192.0.0.170 and 192.0.0.171.  No client ever
   has to look up the name in order to learn those two addresses.

   In contrast, clients often look up the IPv6 AAAA address records for
   'ipv4only.arpa', which is contrary to general DNS expectations, given
   that it is already known, by IETF specification [RFC7050], that
   'ipv4only.arpa' is an IPv4-only name, and it has no IPv6 AAAA address
   records.  And yet, clients expect to receive, and do in fact receive,
   positive answers for these IPv6 AAAA address records that apparently
   should not exist.

   This odd query behavior comes not because clients are using DNS to
   learn legitimate answers from the name's legitimate authoritative
   server, but because the DNS protocol has, in effect, been co-opted as
   an improvised client-to-middlebox communication protocol to look for
   a DNS64/NAT64 [RFC6147] [RFC6146] gateway and, if one is present, to
   request that it disclose the prefix it is using for IPv6 address
   synthesis.

   This use of specially crafted DNS queries as an improvised client-to-
   middlebox communication protocol has a number of specific
   consequences, outlined below, which client software needs to take
   into account if the queries are to produce the desired results.  This
   is particularly true when used on a multihomed host or when a VPN
   tunnel is in use.  The name 'ipv4only.arpa' is most definitely a
   special name and needs to be listed in IANA's registry along with
   other DNS names that have special uses [SUDN].

3.  Consequences of 'ipv4only.arpa' Not Being Declared Special

   As a result of the original specification [RFC7050] not formally
   declaring 'ipv4only.arpa' to have special properties, there was no
   clear mandate for DNS software to treat this name specially.  In
   particular, this lack of mandate for special treatment is relevant
   (a) to the name resolution APIs and libraries on client devices and
   (b) to DNS64 [RFC6147] implementations.  These two aspects are
   discussed in more detail below.

3.1.  Consequences for Name Resolution APIs and Libraries

   A serious problem can occur with DNS64/NAT64 when a device is
   configured to use a recursive resolver other than the one it learned
   from the network.

   A device joining a NAT64 network will learn the recursive resolver
   recommended for that network, typically via IPv6 Router Advertisement
   Options [RFC8106] or via DHCPv6 [RFC3646].  On a NAT64 network, it is
   essential that the client use the DNS64 recursive resolver
   recommended for that network, since only that recursive resolver can
   be relied upon to know the appropriate prefix(es) to use for
   synthesizing IPv6 addresses that will be acceptable to that NAT64
   gateway.

   However, it is becoming increasingly common for users to manually
   override their default DNS configuration because they wish to use
   some other public recursive resolver on the Internet, which may offer
   better speed, reliability, or privacy than the local network's
   default recursive resolver.  At the time of writing, examples of
   widely known public recursive resolver services include Cloudflare
   Public DNS [DNS1], Google Public DNS [DNS8], and Quad9 [DNS9].

   Another common scenario is the use of corporate or personal VPN
   client software.  Both for privacy reasons and because the local
   network's recursive resolver will typically be unable to provide
   answers for the company's private internal host names, VPN client
   software usually overrides the local network's default configuration
   to divert some or all DNS requests so that they go to the company's
   own private internal recursive resolver instead of to the default
   recursive resolver the client learned from its local network.  (The
   company's own private internal recursive resolvers typically have
   addresses that are themselves reached through the VPN tunnel, not via
   the public Internet.)  As with the case described above of public
   recursive resolver services, the company's private internal recursive
   resolver cannot be expected to be able to synthesize IPv6 addresses
   correctly for use with the local network's NAT64 gateway, because the
   company's private internal recursive resolver is unlikely to be aware
   of the NAT64 prefix in use on the NAT64 network to which the client
   device is currently attached.  It is clear that a single recursive
   resolver cannot meet both needs.  The local network's recursive
   resolver cannot be expected to give answers for some unknown
   company's private internal host names, and a company's private
   internal recursive resolver cannot be expected to give correctly
   synthesized IPv6 addresses suitable for some unknown local network's
   NAT64 gateway.

   Note that multiple NAT64 services may be simultaneously available to
   a client.  For example, the local network may provide NAT64 service
   (to allow an IPv6-only client device to access IPv4-only Internet
   services), while at the same time, a corporate VPN may also provide
   NAT64 service (to allow a client connecting via an IPv6-only VPN
   tunnel to access IPv4-only corporate services).  The NAT64 address
   synthesis prefixes for the two NAT64 services may be different.  In
   this case, it is essential that the NAT64 address synthesis prefix
   used on the local network be the prefix learned from the local
   network's recursive resolver, and the NAT64 address synthesis prefix
   used on the VPN tunnel be the prefix learned from the VPN tunnel's
   recursive resolver.

   The difficulty here arises because DNS is being used for two
   unrelated purposes.  The first purpose is retrieving data from a
   (nominally) global database, generally retrieving the IP address(es)
   associated with a hostname.  The second purpose is using the DNS
   protocol as a middlebox communication protocol, to interrogate the
   local network infrastructure to discover the IPv6 prefix(es) in use
   by the local NAT64 gateway for address synthesis.

3.2.  Consequences for DNS64 Implementations

   As a result of there being no mandate for special treatment, queries
   for 'ipv4only.arpa' had to be handled normally, resulting in DNS64
   gateways performing unnecessary queries to the authoritative 'arpa'
   name servers, both unnecessary IPv6 address record queries (DNS qtype
   "AAAA", always returning negative responses) and unnecessary IPv4
   address record queries (DNS qtype "A", always returning the same
   positive responses).

   Having DNS64 gateways around the world issue these queries generated
   additional load on the authoritative 'arpa' name servers, which was
   redundant when the name 'ipv4only.arpa' is defined, by IETF
   specification [RFC7050], to have exactly two IPv4 address records,
   192.0.0.170 and 192.0.0.171, and no other IPv4 or IPv6 address
   records.

   Also, at times, for reasons that remain unclear, the authoritative
   'arpa' name servers have been observed to be slow or unresponsive.
   The failures of these 'ipv4only.arpa' queries result in unnecessary
   failures of the DNS64 gateways and of the client devices that depend
   on them for DNS64 [RFC6147] address synthesis.

   Even when the authoritative 'arpa' name servers are operating
   correctly, having to perform an unnecessary query to obtain an answer
   that is already known in advance can add precious milliseconds of
   delay, affecting user experience on the client devices waiting for
   those synthesized replies.

4.  Remedies

   This document leverages operational experience to update the Domain
   Name Reservation Considerations section [RFC6761] of the earlier
   prefix discovery specification [RFC7050] with one that more
   accurately lists the actual special properties of the name
   'ipv4only.arpa', so that software can legitimately implement the
   correct behavior necessary for better performance, better
   reliability, and correct operation.

   These changes affect two bodies of software: (a) the name resolution
   APIs and libraries on client devices, and (b) DNS64 implementations.

   The new special rules specified in this document for name resolution
   APIs and libraries state how they should select which recursive
   resolver to query to learn the IPv6 address synthesis prefix in use
   on a particular physical or virtual interface.  Specifically, when
   querying for the name 'ipv4only.arpa', name resolution APIs and
   libraries should use the recursive resolver recommended by the
   network for the interface in question rather than a recursive
   resolver configured manually, a recursive resolver configured by VPN
   software, or a full-service recursive resolver running on the local
   host.  Superficially, this might seem like a security issue, since
   the user might have explicitly configured the particular DNS resolver
   they wish to use, and rather than using that, the name resolution
   code ignores the user's stated preference and uses untrusted input
   received from the network instead.  However, the 'ipv4only.arpa'
   query is not really a DNS query in the usual sense; even though it
   may look like a DNS query, it is actually an improvised client-to-
   middlebox communication protocol in disguise.  For NAT64 to work at
   all, it is necessary for the interface on which NAT64 translation is
   being performed to tell the host the address of the DNS64 recursive
   resolver the host must use to learn the NAT64 prefix being used by
   that NAT64.  This is typically done via IPv6 Router Advertisement
   Options for DNS Configuration [RFC8106] or via DNS Configuration
   options for DHCPv6 [RFC3646].

   The new special rules specified in this document for DNS64
   implementations recommend that they avoid performing run-time network
   queries for values that are known to be fixed by specification.

   A useful property of the way NAT64 Prefix Discovery [RFC7050] was
   originally specified was that it allowed for incremental deployment.
   Even if existing DNS64 gateways, that were unaware of the special
   'ipv4only.arpa' name, were already deployed, once IANA created the
   appropriate 'ipv4only.arpa' records, clients could begin to use the
   new facility immediately.  Clients could send their special queries
   for 'ipv4only.arpa' to an ipv4only-unaware DNS64 gateway, and, as a
   side effect of its usual query processing (after a query to IANA's
   servers), the DNS64 gateway would then generate the correct
   synthesized response.

   While this was a useful transition strategy to enable rapid adoption,
   it is not the ideal end situation.  For better performance, better
   reliability, and lower load in IANA's servers, it is preferable for
   DNS64 gateways to be aware of the special 'ipv4only.arpa' name so
   that they can avoid issuing unnecessary queries.  Network operators
   who wish to provide reliable, high-performance service to their
   customers are motivated to prefer DNS64 gateways that recognize the
   special 'ipv4only.arpa' name and apply the appropriate optimizations.

5.  Security Considerations

   One of the known concerns with DNS64 is that it conflicts with
   DNSSEC.  If DNSSEC is used to assert cryptographically that a name
   has no IPv6 AAAA records, then this interferes with using DNS64
   address synthesis to tell a client that those nonexistent IPv6 AAAA
   records do exist.

   Section 3 of the DNS64 specification [RFC6147] discusses this:

   |  ... DNS64 receives a query with the DO bit set and the CD bit set.
   |  In this case, the DNS64 is supposed to pass on all the data it
   |  gets to the query initiator.  This case will not work with DNS64,
   |  unless the validating resolver is prepared to do DNS64 itself.

   The NAT64 Prefix Discovery specification [RFC7050] provides the
   mechanism for the query initiator to learn the NAT64 prefix so that
   it can do its own validation and DNS64 synthesis as described above.
   With this mechanism, the client can (i) interrogate the local DNS64/
   NAT64 gateway (with an 'ipv4only.arpa' query) to learn the IPv6
   address synthesis prefix, (ii) query for the (signed) IPv4 address
   records for the desired hostname and validate the response, and then
   (iii) perform its own IPv6 address synthesis locally, combining the
   IPv6 address synthesis prefix learned from the local DNS64/NAT64
   gateway with the validated DNSSEC-signed data learned from the global
   Domain Name System.

   It is conceivable that, over time, if DNSSEC adoption continues to
   grow, the majority of clients could move to this validate-and-
   synthesize-locally model, which reduces the DNS64 machinery to the
   vestigial role of simply responding to the 'ipv4only.arpa' query to
   report the local IPv6 address synthesis prefix.  At the time of
   publication, network operators have been observed "in the wild"
   deploying NAT64 service with DNS recursive resolvers that reply to
   'ipv4only.arpa' queries but otherwise perform no other NAT64 address
   synthesis.  In no case does the client care what answer(s) the
   authoritative 'arpa' name servers might give for that query.  The
   'ipv4only.arpa' query is being used purely as a local client-to-
   middlebox communication message.

   This validate-and-synthesize-locally approach is even more attractive
   if it does not create an additional dependency on the authoritative
   'arpa' name servers to answer a query that is unnecessary because the
   DNS64/NAT64 gateway already knows the answer before it even issues
   the query.  Avoiding this unnecessary query improves performance and
   reliability for the client and reduces unnecessary load for the
   authoritative 'arpa' name servers.

   Hardcoding the known answers for 'ipv4only.arpa' IPv4 address record
   queries (DNS qtype "A") in recursive resolvers also reduces the risk
   of malicious devices intercepting those queries and returning
   incorrect answers.  Because the 'ipv4only.arpa' zone has to be an
   insecure delegation (see below), DNSSEC cannot be used to protect
   these answers from tampering by malicious devices on the path.

   With respect to the question of whether 'ipv4only.arpa' should be a
   secure or insecure delegation, we need to consider two paths of
   information flow through the network:

   1.  The path from the server authoritative for 'ipv4only.arpa' to the
       DNS64 recursive resolver

   2.  The path from the DNS64 recursive resolver to the ultimate client

   The path from the authoritative server to the DNS64 recursive
   resolver (queries for IPv4 address records) need not be protected by
   DNSSEC, because the DNS64 recursive resolver already knows, by
   specification, what the answers are.  In principle, if this were a
   secure delegation, and 'ipv4only.arpa' were a signed zone, then the
   path from the authoritative server to the DNS64 recursive resolver
   would still work, but DNSSEC is not necessary here.  Run-time
   cryptographic signatures are not needed to verify compile-time
   constants.  Validating the signatures could only serve to introduce
   potential failures into the system for minimal benefit.

   The path from the DNS64 recursive resolver to the ultimate client
   (queries for IPv6 address records) *cannot* be protected by DNSSEC
   because the DNS64 recursive resolver is synthesizing IPv6 address
   answers and does not possess the DNSSEC secret key required to sign
   those answers.

   Consequently, the 'ipv4only.arpa' zone MUST be an insecure delegation
   to give DNS64/NAT64 gateways the freedom to synthesize answers to
   those queries at will, without the answers being rejected by DNSSEC-
   capable resolvers.  DNSSEC-capable resolvers that follow this
   specification MUST NOT attempt to validate answers received in
   response to queries for the IPv6 AAAA address records for
   'ipv4only.arpa'.  Note that the name 'ipv4only.arpa' has no use
   outside of being used for this special DNS pseudo-query used to learn
   the DNS64/NAT64 address synthesis prefix, so the lack of DNSSEC
   security for that name is not a problem.

   The original NAT64 Prefix Discovery specification [RFC7050] stated,
   incorrectly:

   |  A signed "ipv4only.arpa." allows validating DNS64 servers (see
   |  [RFC6147] Section 3, Case 5, for example) to detect malicious AAAA
   |  resource records.  Therefore, the zone serving the well-known name
   |  has to be protected with DNSSEC.

   This document updates the previous specification [RFC7050] to correct
   that error.  The 'ipv4only.arpa' zone MUST be an insecure delegation.

6.  IANA Considerations

   IANA has created an insecure delegation for 'ipv4only.arpa' to allow
   DNS64 recursive resolvers to create synthesized AAAA answers within
   that zone.

   IANA has recorded the following names in the Special-Use Domain Names
   registry [SUDN]:

      ipv4only.arpa.
      170.0.0.192.in-addr.arpa.
      171.0.0.192.in-addr.arpa.

   IANA has recorded the following IPv4 addresses in the IANA IPv4
   Special-Purpose Address Registry [SUv4]:

      192.0.0.170
      192.0.0.171

7.  Domain Name Reservation Considerations

7.1.  Special Use Domain Name 'ipv4only.arpa'

   The name 'ipv4only.arpa' is defined, by IETF specification [RFC7050],
   to have two IPv4 address records with rdata 192.0.0.170 and
   192.0.0.171.

   When queried via a DNS64 recursive resolver [RFC6147], the name
   'ipv4only.arpa' is also defined to have IPv6 AAAA records, with rdata
   synthesized from a combination of the NAT64 IPv6 prefix(es) and the
   IPv4 addresses 192.0.0.170 and 192.0.0.171.  This can return more
   than one pair of IPv6 addresses if there are multiple NAT64 prefixes.

   The name 'ipv4only.arpa' has no other IPv4 or IPv6 address records.
   There are no subdomains of 'ipv4only.arpa'.  All names falling below
   'ipv4only.arpa' are defined to be nonexistent (NXDOMAIN).

   The name 'ipv4only.arpa' is special to

   a.  client software wishing to perform DNS64 address synthesis,

   b.  APIs responsible for retrieving the correct information, and

   c.  the DNS64 recursive resolver responding to such requests.

   These three considerations are listed in items 2, 3, and 4 below:

   1.  Normal users should never have reason to encounter the
       'ipv4only.arpa' domain name.  If they do, they should expect
       queries for 'ipv4only.arpa' to result in the answers required by
       the specification [RFC7050].  Normal users have no need to know
       that 'ipv4only.arpa' is special.

   2.  Application software may explicitly use the name 'ipv4only.arpa'
       for DNS64/NAT64 address synthesis and expect to get the answers
       required by the specification [RFC7050].  If application software
       encounters the name 'ipv4only.arpa' in the normal course of
       handling user input, the application software should resolve that
       name as usual and need not treat it in any special way.

   3.  Name resolution APIs and libraries MUST recognize 'ipv4only.arpa'
       as special and MUST give it special treatment.

       Learning a network's NAT64 prefix is, by its nature, an
       interface-specific operation, and the special DNS query used to
       learn this interface-specific NAT64 prefix MUST be sent to the
       DNS recursive resolver address(es) the client learned via the
       configuration machinery for that specific client interface.  The
       NAT64 prefix is a per-interface property, not a per-device
       property.

       Regardless of any manual client DNS configuration, DNS overrides
       configured by VPN client software, or any other mechanisms that
       influence the choice of the client's recursive resolver
       address(es) (including client devices that run their own local
       recursive resolver and use the loopback address as their
       configured recursive resolver address), all queries for
       'ipv4only.arpa' and any subdomains of that name MUST be sent to
       the recursive resolver learned from the network interface in
       question via IPv6 Router Advertisement Options for DNS
       Configuration [RFC8106], DNS Configuration options for DHCPv6
       [RFC3646], or other configuration mechanisms.  Because DNS
       queries for 'ipv4only.arpa' are actually a special middlebox
       communication protocol, it is essential that they go to the
       correct middlebox for the interface in question, and failure to
       honor this requirement would cause failure of the NAT64 Prefix
       Discovery mechanism [RFC7050].

       One implication of this is that, on multihomed devices (devices
       that allow more than one logical or physical IP interface to be
       active at the same time, e.g., cellular data and Wi-Fi, or one
       physical interface plus a VPN connection), clients MUST use
       interface-aware name resolution APIs.  On different (logical or
       physical) interfaces, different DNS64 answers may be received,
       and DNS64 answers are only valid for the interface on which they
       were received.  On multihomed devices (including devices that
       support VPN), name resolution APIs that do not include interface
       parameters will not work reliably with NAT64.  On single-homed
       devices, interface-unaware name resolution APIs are acceptable
       since when only one interface can be active at a time, there is
       no need to specify an interface.

       DNSSEC-capable resolvers MUST NOT attempt to validate answers
       received in response to queries for the IPv6 AAAA address records
       for 'ipv4only.arpa' since, by definition, any such answers are
       generated by the local network's DNS64/NAT64 gateway, not the
       authoritative server responsible for that name.

   4.  For the purposes of this section, recursive resolvers fall into
       two categories.  The first category is traditional recursive
       resolvers, which includes *forwarding* recursive resolvers, as
       commonly implemented in residential home gateways, and
       *iterative* recursive resolvers, as commonly deployed by ISPs.
       The second category is DNS64 recursive resolvers, whose purpose
       is to synthesize IPv6 address records.  These may be *forwarding*
       DNS64 recursive resolvers or *iterative* DNS64 recursive
       resolvers, and they work in partnership with a companion NAT64
       gateway to communicate the appropriate NAT64 address synthesis
       prefix to clients.  More information on these terms can be found
       in the DNS Terminology document [RFC8499].

       Traditional forwarding recursive resolvers SHOULD NOT recognize
       'ipv4only.arpa' as special or give that name, or subdomains of
       that name, any special treatment.  The rationale for this is that
       a traditional forwarding recursive resolver, such as built in to
       a residential home gateway, may itself be downstream of a DNS64
       recursive resolver.  Passing through the 'ipv4only.arpa' queries
       to the upstream DNS64 recursive resolver will allow the correct
       NAT64 prefix to be discovered.

       Traditional iterative recursive resolvers that are not explicitly
       configured to synthesize IPv6 prefixes on behalf of a companion
       NAT64 gateway need not recognize 'ipv4only.arpa' as special or
       take any special action.

       Forwarding or iterative recursive resolvers that have been
       explicitly configured to perform DNS64 address synthesis in
       support of a companion NAT64 gateway (i.e., "DNS64 recursive
       resolvers") MUST recognize 'ipv4only.arpa' as special.  The
       authoritative name servers for 'ipv4only.arpa' cannot be expected
       to know the local network's NAT64 address synthesis prefix, so
       consulting the authoritative name servers for IPv6 address
       records for 'ipv4only.arpa' is futile.  All DNS64 recursive
       resolvers MUST recognize 'ipv4only.arpa' (and all of its
       subdomains) as special, and they MUST NOT attempt to look up NS
       records for 'ipv4only.arpa' or otherwise query authoritative name
       servers in an attempt to resolve this name.  Instead, DNS64
       recursive resolvers MUST act as authoritative for this zone, by
       generating immediate responses for all queries for
       'ipv4only.arpa' (and any subdomain of 'ipv4only.arpa'), with the
       one exception of queries for the DS record.  Queries for the DS
       record are resolved the usual way to allow a client to securely
       verify that the 'ipv4only.arpa' zone has an insecure delegation.
       Note that this exception is not expected to receive widespread
       usage, since any client compliant with this specification already
       knows that 'ipv4only.arpa' is an insecure delegation and will not
       attempt DNSSEC validation for this name.

       DNS64 recursive resolvers MUST generate the 192.0.0.170 and
       192.0.0.171 responses for IPv4 address queries (DNS qtype "A"),
       the appropriate synthesized IPv6 address record responses for
       IPv6 address queries (DNS qtype "AAAA"), and a negative
       ("no error no answer") response for all other query types except
       DS.

       For all subdomains of 'ipv4only.arpa', DNS64 recursive resolvers
       MUST generate immediate NXDOMAIN responses.  All names falling
       below 'ipv4only.arpa' are defined to be nonexistent.

       An example configuration for BIND 9 showing how to achieve the
       desired result is given in Appendix A.

       Note that this is *not* a locally served zone in the usual sense
       of that term [RFC6303] because this rule applies *only* to DNS64
       recursive resolvers, not to traditional forwarding or iterative
       recursive resolvers.

   5.  Authoritative name server software need not recognize
       'ipv4only.arpa' as special or handle it in any special way.

   6.  Generally speaking, operators of authoritative name servers need
       not know anything about the name 'ipv4only.arpa', just as they do
       not need to know anything about any other names they are not
       responsible for.  Only the administrators of the 'arpa' namespace
       need to be aware of this name's purpose and how it should be
       configured.  In particular, 'ipv4only.arpa' MUST have the
       required records, and MUST be an insecure delegation, to allow
       DNS64 recursive resolvers to create synthesized AAAA answers
       within that zone.  Making the 'ipv4only.arpa' zone a secure
       delegation would make it impossible for DNS64 recursive resolvers
       to create synthesized AAAA answers that will be accepted by
       DNSSEC validating clients, thereby defeating the entire purpose
       of the 'ipv4only.arpa' name.

   7.  DNS Registries/Registrars need not know anything about the name
       'ipv4only.arpa', just as they do not need to know anything about
       any other name they are not responsible for.

7.2.  Names '170.0.0.192.in-addr.arpa' and '171.0.0.192.in-addr.arpa'

   Since the IPv4 addresses 192.0.0.170 and 192.0.0.171 are defined to
   be special, and are listed in the IANA IPv4 Special-Purpose Address
   Registry [SUv4], the corresponding reverse mapping names in the
   in-addr.arpa domain are similarly special.

   The name '170.0.0.192.in-addr.arpa' is defined, by IETF specification
   [RFC7050], to have only one DNS record, type PTR, with rdata
   'ipv4only.arpa'.

   The name '171.0.0.192.in-addr.arpa' is defined, by IETF specification
   [RFC7050], to have only one DNS record, type PTR, with rdata
   'ipv4only.arpa'.

   There are no subdomains of '170.0.0.192.in-addr.arpa' or
   '171.0.0.192.in-addr.arpa'.  All names falling below these names are
   defined to be nonexistent (NXDOMAIN).

   Practically speaking, these two names are rarely used, but to the
   extent that they may be, they are special only to resolver APIs and
   libraries, as described in item 3 below:

   1.  Normal users should never have reason to encounter these two
       reverse mapping names.  However, if they do, queries for these
       reverse mapping names should return the expected answer
       'ipv4only.arpa'.  Normal users have no need to know that these
       reverse mapping names are special.

   2.  Application software SHOULD NOT recognize these two reverse
       mapping names as special and SHOULD NOT treat them differently.
       For example, if the user were to issue the Unix command
       "host 192.0.0.170", then the "host" command should call the name
       resolution API or library as usual and display the result that is
       returned.

   3.  Name resolution APIs and libraries SHOULD recognize these two
       reverse mapping names as special and generate the required
       responses locally.  For the names '170.0.0.192.in-addr.arpa' and
       '171.0.0.192.in-addr.arpa', PTR queries yield the result
       'ipv4only.arpa'; all other query types yield a negative
       ("no error no answer") response.  For all subdomains of these two
       reverse mapping domains, all queries yield an NXDOMAIN response.
       All names falling below these two reverse mapping domains are
       defined to be nonexistent.

       This local self-contained generation of these responses is to
       avoid placing unnecessary load on the authoritative
       'in-addr.arpa' name servers.

   4.  Recursive resolvers SHOULD NOT recognize these two reverse
       mapping names as special and SHOULD NOT, by default, give them
       any special treatment.

   5.  Authoritative name server software need not recognize these two
       reverse mapping names as special or handle them in any special
       way.

   6.  Generally speaking, most operators of authoritative name servers
       need not know anything about these two reverse mapping names,
       just as they do not need to know anything about any other names
       they are not responsible for.  Only the operators of the
       authoritative name servers for these two reverse mapping names
       need to be aware that these names are special, and require fixed
       answers specified by IETF specification.

   7.  DNS Registries/Registrars need not know anything about these two
       reverse mapping names, just as they do not need to know anything
       about any other name they are not responsible for.

7.2.1.  ip6.arpa Reverse Mapping PTR Records

   For all IPv6 addresses synthesized by a DNS64 recursive resolver, the
   DNS64 recursive resolver is responsible for synthesizing the
   appropriate 'ip6.arpa' reverse mapping PTR records too, if it chooses
   to provide reverse mapping PTR records.  The same applies to the
   synthesized IPv6 addresses corresponding to the IPv4 addresses
   192.0.0.170 and 192.0.0.171.

   Generally, a DNS64 recursive resolver synthesizes appropriate
   'ip6.arpa' reverse mapping PTR records by extracting the embedded
   IPv4 address from the encoded IPv6 address, performing a reverse
   mapping PTR query for that IPv4 address, and then synthesizing a
   corresponding 'ip6.arpa' reverse mapping PTR record containing the
   same rdata.

   In the case of synthesized IPv6 addresses corresponding to the IPv4
   addresses 192.0.0.170 and 192.0.0.171, the DNS64 recursive resolver
   does not issue reverse mapping queries for those IPv4 addresses, but
   instead, according to rule 3 above, immediately returns the answer
   'ipv4only.arpa'.

   In the case of a client that uses the 'ipv4only.arpa' query to
   discover the IPv6 prefixes in use by the local NAT64 gateway, and
   then proceeds to perform its own address synthesis locally (which has
   benefits such as allowing DNSSEC validation), that client MUST also
   synthesize 'ip6.arpa' reverse mapping PTR records for those
   discovered prefix(es), according to the rules above: When a client's
   name resolution APIs and libraries receive a request to look up an
   'ip6.arpa' reverse mapping PTR record for an address that falls
   within one of the discovered NAT64 address synthesis prefixes, the
   software extracts the embedded IPv4 address and then, for IPv4
   addresses 192.0.0.170 and 192.0.0.171, returns the fixed answer
   'ipv4only.arpa', and for all other IPv4 addresses, performs a reverse
   mapping PTR query for the IPv4 address and then synthesizes a
   corresponding 'ip6.arpa' reverse mapping PTR record containing the
   same rdata.

8.  References

8.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3646]  Droms, R., Ed., "DNS Configuration options for Dynamic
              Host Configuration Protocol for IPv6 (DHCPv6)", RFC 3646,
              DOI 10.17487/RFC3646, December 2003,
              <https://www.rfc-editor.org/info/rfc3646>.

   [RFC6146]  Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful
              NAT64: Network Address and Protocol Translation from IPv6
              Clients to IPv4 Servers", RFC 6146, DOI 10.17487/RFC6146,
              April 2011, <https://www.rfc-editor.org/info/rfc6146>.

   [RFC6147]  Bagnulo, M., Sullivan, A., Matthews, P., and I. van
              Beijnum, "DNS64: DNS Extensions for Network Address
              Translation from IPv6 Clients to IPv4 Servers", RFC 6147,
              DOI 10.17487/RFC6147, April 2011,
              <https://www.rfc-editor.org/info/rfc6147>.

   [RFC6761]  Cheshire, S. and M. Krochmal, "Special-Use Domain Names",
              RFC 6761, DOI 10.17487/RFC6761, February 2013,
              <https://www.rfc-editor.org/info/rfc6761>.

   [RFC7050]  Savolainen, T., Korhonen, J., and D. Wing, "Discovery of
              the IPv6 Prefix Used for IPv6 Address Synthesis",
              RFC 7050, DOI 10.17487/RFC7050, November 2013,
              <https://www.rfc-editor.org/info/rfc7050>.

   [RFC8106]  Jeong, J., Park, S., Beloeil, L., and S. Madanapalli,
              "IPv6 Router Advertisement Options for DNS Configuration",
              RFC 8106, DOI 10.17487/RFC8106, March 2017,
              <https://www.rfc-editor.org/info/rfc8106>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

8.2.  Informative References

   [RFC6303]  Andrews, M., "Locally Served DNS Zones", BCP 163,
              RFC 6303, DOI 10.17487/RFC6303, July 2011,
              <https://www.rfc-editor.org/info/rfc6303>.

   [RFC8244]  Lemon, T., Droms, R., and W. Kumari, "Special-Use Domain
              Names Problem Statement", RFC 8244, DOI 10.17487/RFC8244,
              October 2017, <https://www.rfc-editor.org/info/rfc8244>.

   [RFC8499]  Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS
              Terminology", BCP 219, RFC 8499, DOI 10.17487/RFC8499,
              January 2019, <https://www.rfc-editor.org/info/rfc8499>.

   [SUDN]     IANA, "Special-Use Domain Names",
              <https://www.iana.org/assignments/special-use-domain-
              names/>.

   [SUv4]     IANA, "IANA IPv4 Special-Purpose Address Registry",
              <https://www.iana.org/assignments/iana-ipv4-special-
              registry/>.

   [DNS1]     Cloudflare, "1.1.1.1 - The free app that makes your
              Internet safer.", <https://1.1.1.1/>.

   [DNS8]     Google, "Google Public DNS",
              <https://developers.google.com/speed/public-dns/>.

   [DNS9]     Quad9, "Internet Security and Privacy In a Few Easy
              Steps", <https://quad9.net/>.

Appendix A.  Example BIND 9 Configuration

   A BIND 9 recursive resolver can be configured to act as authoritative
   for the necessary DNS64 names as described below.

   In /etc/named.conf, the following line is added:

      zone "ipv4only.arpa"            { type master; file "ipv4only"; };

   The file /var/named/ipv4only is created with the following content:

      $TTL 86400               ; Default TTL 24 hours
      @ IN SOA nameserver.example. admin.nameserver.example. (
               2016052400      ; Serial
               7200            ; Refresh ( 7200 = 2 hours)
               3600            ; Retry   ( 3600 = 1 hour)
               15724800        ; Expire  (15724800 = 6 months)
               60              ; Minimum
               )
      @ IN NS  nameserver.example.

      @ IN A    192.0.0.170
      @ IN A    192.0.0.171
      @ IN AAAA 64:ff9b::192.0.0.170 ; If not using Well-Known Prefix
      @ IN AAAA 64:ff9b::192.0.0.171 ; place chosen NAT64 prefix here

Acknowledgements

   Thanks to Jouni Korhonen, Teemu Savolainen, and Dan Wing, for
   devising the NAT64 Prefix Discovery mechanism [RFC7050] and for their
   feedback on this document.

   Thanks to Geoff Huston for his feedback on this document.

   Thanks to Erik Kline for pointing out that the in-addr.arpa names are
   special, too.

   Thanks to Mark Andrews for conclusively pointing out the reasons why
   the 'ipv4only.arpa' zone must be an insecure delegation in order for
   the NAT64 Prefix Discovery mechanism [RFC7050] to work and for many
   other very helpful comments.

   Thanks particularly to Lorenzo Colitti for an especially spirited
   hallway discussion at IETF 96 in Berlin, which lead directly to
   significant improvements in how this document presents the issues.

   Thanks to Scott Bradner, Bernie Volz, Barry Leiba, Mirja Kuehlewind,
   Suresh Krishnan, Benjamin Kaduk, Roman Danyliw, Eric Vyncke, and the
   other IESG reviewers for their thoughtful feedback.

   Thanks to Dave Thaler and Warren Kumari for generously helping
   shepherd this document through the publication process.

Authors' Addresses

   Stuart Cheshire
   Apple Inc.
   One Apple Park Way
   Cupertino, California 95014
   United States of America

   Phone: +1 (408) 996-1010
   Email: cheshire@apple.com


   David Schinazi
   Google LLC
   1600 Amphitheatre Parkway
   Mountain View, California 94043
   United States of America

   Email: dschinazi.ietf@gmail.com
