RFC 8880: Special Use Domain Name 'ipv4only.arpa'
- S. Cheshire,
- D. Schinazi
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
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://
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://
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
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
In contrast, clients often look up the IPv6 AAAA address records for
'ipv4only
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
This use of specially crafted DNS queries as an improvised
client
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
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
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
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
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
5. Security Considerations
One of the known concerns with DNS64 is that
it conflicts with DNSSEC. If DNSSEC is used to assert cryptographical
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
This validate
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:¶
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
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]:¶
IANA has recorded the following IPv4 addresses in the IANA IPv4 Special-Purpose Address Registry [SUv4]:¶
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
The name 'ipv4only.arpa' is special to¶
These three considerations are listed in items 2, 3, and 4 below:¶
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
The name '171
There are no subdomains of '170
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:¶
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
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
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 , , <https:///RFC2119 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 , , <https:///RFC3646 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 , , <https:///RFC6146 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 , , <https:///RFC6147 www >..rfc -editor .org /info /rfc6147 - [RFC6761]
-
Cheshire, S. and M. Krochmal, "Special-Use Domain Names", RFC 6761, DOI 10
.17487 , , <https:///RFC6761 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 , , <https:///RFC7050 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 , , <https:///RFC8106 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 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174
8.2. Informative References
- [RFC6303]
-
Andrews, M., "Locally Served DNS Zones", BCP 163, RFC 6303, DOI 10
.17487 , , <https:///RFC6303 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 , , <https:///RFC8244 www >..rfc -editor .org /info /rfc8244 - [RFC8499]
-
Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS Terminology", BCP 219, RFC 8499, DOI 10
.17487 , , <https:///RFC8499 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
The file
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.¶