diff options
Diffstat (limited to 'doc/rfc/rfc8880.txt')
-rw-r--r-- | doc/rfc/rfc8880.txt | 896 |
1 files changed, 896 insertions, 0 deletions
diff --git a/doc/rfc/rfc8880.txt b/doc/rfc/rfc8880.txt new file mode 100644 index 0000000..b55c9c3 --- /dev/null +++ b/doc/rfc/rfc8880.txt @@ -0,0 +1,896 @@ + + + + +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 |