| rfc8880xml2.original.xml | rfc8880.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <!-- Check output with <http://tools.ietf.org/tools/idnits/> --> | ||||
| <!-- used by XSLT processors --> | ||||
| <!-- For a complete list and description of processing instructions (PIs), | ||||
| please see http://xml.resource.org/authoring/README.html. --> | ||||
| <!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds | ||||
| might want to use. | ||||
| (Here they are set differently than their defaults in xml2rfc v1.35) --> | ||||
| <!-- give errors regarding ID-nits and DTD validation --> | ||||
| <?rfc strict="yes" ?> | ||||
| <!-- control the table of contents (ToC) --> | ||||
| <!-- generate a ToC --> | ||||
| <?rfc toc="yes"?> | ||||
| <!-- the number of levels of subsections in ToC. default: 3 --> | ||||
| <?rfc tocdepth="1"?> | ||||
| <!-- control references --> | ||||
| <!-- use anchors instead of numbers for refs, i.e, [RFC2119] instead of [1] --> | ||||
| <?rfc symrefs="yes"?> | ||||
| <!-- sort the reference entries alphabetically --> | ||||
| <?rfc sortrefs="no" ?> | ||||
| <!-- control vertical white space | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| (using these PIs as follows is recommended by the RFC Editor) --> | ||||
| <!-- do not start each main section on a new page --> | ||||
| <?rfc compact="yes" ?> | ||||
| <!-- keep one blank line between list items --> | ||||
| <?rfc subcompact="no" ?> | ||||
| <!-- encourage use of "xml2rfc" tool --> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" | |||
| <?rfc rfcprocack="yes" ?> | category="std" consensus="true" | |||
| <!-- end of list of popular I-D processing instructions --> | docName="draft-cheshire-sudn-ipv4only-dot-arpa-17" number="8880" | |||
| ipr="trust200902" updates="7050" obsoletes="" xml:lang="en" | ||||
| tocInclude="true" tocDepth="3" symRefs="true" sortRefs="false" | ||||
| version="3"> | ||||
| <rfc category="std" docName="draft-cheshire-sudn-ipv4only-dot-arpa-17" ipr="trus t200902" updates="7050"> | ||||
| <front> | <front> | |||
| <title abbrev="Special Name ipv4only.arpa">Special Use Domain Name 'ipv4only | <title abbrev="Special Name ipv4only.arpa">Special Use Domain Name | |||
| .arpa'</title> | 'ipv4only.arpa'</title> | |||
| <seriesInfo name="RFC" value="8880"/> | ||||
| <author initials='S.' surname='Cheshire' fullname='Stuart Cheshire'> | <author initials="S." surname="Cheshire" fullname="Stuart Cheshire"> | |||
| <organization>Apple Inc.</organization> | <organization>Apple Inc.</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>One Apple Park Way</street> | <street>One Apple Park Way</street> | |||
| <city>Cupertino</city> | <city>Cupertino</city> | |||
| <region>California</region> | <region>California</region> | |||
| <code>95014</code> | <code>95014</code> | |||
| <country>USA</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <phone>+1 (408) 996-1010</phone> | <phone>+1 (408) 996-1010</phone> | |||
| <email>cheshire@apple.com</email> | <email>cheshire@apple.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="David Schinazi" surname="Schinazi" initials="D."> | ||||
| <author fullname='David Schinazi' surname='Schinazi' initials='D.'> | ||||
| <organization>Google LLC</organization> | <organization>Google LLC</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>1600 Amphitheatre Parkway</street> | <street>1600 Amphitheatre Parkway</street> | |||
| <city>Mountain View</city> | <city>Mountain View</city> | |||
| <region>California</region> | <region>California</region> | |||
| <code>94043</code> | <code>94043</code> | |||
| <country>USA</country> | <country>United States of America</country> | |||
| </postal> | </postal> | |||
| <email>dschinazi.ietf@gmail.com</email> | <email>dschinazi.ietf@gmail.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="August" year="2020"/> | ||||
| <date day='19' month='March' year='2020'/> | <keyword>IPv6</keyword> | |||
| <keyword>NAT64</keyword> | ||||
| <keyword>DNS64</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>The specification for | <t>NAT64 (Network Address and Protocol Translation from IPv6 | |||
| how a client discovers its local network's NAT64 prefix (RFC7050) | Clients to IPv4 Servers) allows client devices using IPv6 to | |||
| defines the special name 'ipv4only.arpa' for this purpose, | communicate with servers that have only IPv4 connectivity.</t> | |||
| but in its Domain Name Reservation Considerations section | <t>The specification for how a client discovers its local network's | |||
| that specification indicates that the name actually has | NAT64 prefix (RFC 7050) defines the special name | |||
| no particularly special properties that would require special handling, | 'ipv4only.arpa' for this purpose. | |||
| and does not request IANA to record | However, in its Domain Name Reservation | |||
| the name in the Special-Use Domain Names registry.</t> | Considerations section (Section 8.1), | |||
| that specification (RFC 7050) indicates that the name | ||||
| <t>Consequently, despite the well articulated special purpose of the name, | actually has no particularly special properties that would require | |||
| special handling.</t> | ||||
| <t>Consequently, despite the well-articulated special purpose of the | ||||
| name, | ||||
| 'ipv4only.arpa' was not recorded in the | 'ipv4only.arpa' was not recorded in the | |||
| Special-Use Domain Names registry | Special-Use Domain Names registry | |||
| as a name with special properties.</t> | as a name with special properties.</t> | |||
| <t>This document updates RFC 7050. | ||||
| <t>This document describes the special treatment required, | It describes the special treatment required and | |||
| formally declares the special properties of the name, | formally declares the special properties of the name. | |||
| adds similar declarations for the corresponding reverse mapping names, | It also adds similar declarations for the corresponding reverse mapping | |||
| and updates RFC7050.</t> | names.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <?rfc needLines="22" ?> | ||||
| <section title="Introduction"> | ||||
| <t>The specification for | ||||
| <xref target="RFC7050">how a client discovers its local network's NAT64 pr | ||||
| efix</xref> | ||||
| defines the special name 'ipv4only.arpa' for this purpose, | ||||
| but in its Domain Name Reservation Considerations section | ||||
| that specification 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 <xref target="SUDN">Special-Use Domain Names registry</xre | ||||
| f>.</t> | ||||
| <t>Consequently, despite the well articulated special purpose of the name, | <section numbered="true" toc="default"> | |||
| <name>Introduction</name> | ||||
| <t><xref target="RFC6146" format="default">NAT64 | ||||
| (Network Address and Protocol Translation from IPv6 | ||||
| Clients to IPv4 Servers)</xref> | ||||
| allows client devices using IPv6 to | ||||
| communicate with servers that have only IPv4 connectivity.</t> | ||||
| <t><xref target="RFC6147" format="default">DNS64 | ||||
| (DNS Extensions for Network Address Translation from IPv6 | ||||
| Clients to IPv4 Servers)</xref> | ||||
| 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.</t> | ||||
| <t>The specification for <xref target="RFC7050" format="default">how a | ||||
| client discovers its local network's NAT64 prefix</xref> defines the | ||||
| special name 'ipv4only.arpa' for this purpose, but in its Domain Name | ||||
| Reservation Considerations section (Section 8.1), | ||||
| that specification <xref target="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 <xref | ||||
| target="SUDN" format="default">Special-Use Domain Names | ||||
| registry</xref>.</t> | ||||
| <t>Consequently, despite the well-articulated special purpose of the | ||||
| name, | ||||
| 'ipv4only.arpa' was not recorded in the | 'ipv4only.arpa' was not recorded in the | |||
| <xref target="SUDN">Special-Use Domain Names registry</xref> | <xref target="SUDN" format="default">Special-Use Domain Names | |||
| registry</xref> | ||||
| as a name with special properties.</t> | as a name with special properties.</t> | |||
| <t>This omission was discussed in the document | ||||
| <t>This omission was discussed in | <xref target="RFC8244" format="default">"Special-Use Domain Names | |||
| <xref target="RFC8244">the Special-Use Domain Names Problem Statement</xre | Problem Statement"</xref>.</t> | |||
| f>.</t> | ||||
| <?rfc needLines="24" ?> | ||||
| <t>As a result of this omission, in cases where software needs | <t>As a result of this omission, in cases where software needs | |||
| to give this name special treatment in order for it to work correctly, | to give this name special treatment in order for it to work correctly, | |||
| there was no clear mandate authorizing software authors to implement that | there was no clear mandate authorizing software authors to implement | |||
| that | ||||
| special treatment. Software implementers were left with the choice | special treatment. Software implementers were left with the choice | |||
| between not implementing the special behavior necessary for the name | between not implementing the special behavior necessary for the name | |||
| queries to work correctly, or implementing the special behavior | queries to work correctly or implementing the special behavior | |||
| and being accused of being noncompliant with some RFC.</t> | and being accused of being noncompliant with IETF DNS | |||
| specifications.</t> | ||||
| <t>This document describes the special treatment required, | <t>This document describes the special treatment required, | |||
| formally declares the special properties of the name, | formally declares the special properties of the name, | |||
| and adds similar declarations for the corresponding reverse mapping names. | and adds similar declarations for the corresponding reverse mapping | |||
| </t> | names.</t> | |||
| <section anchor="terminology" numbered="true" toc="default"> | ||||
| <name>Conventions and Terminology</name> | ||||
| <t> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
| "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
| NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
| to be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| <section anchor="terminology" title="Conventions and Terminology"> | ||||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY",<vspace | ||||
| /> | ||||
| and "OPTIONAL" in this document are to be interpreted as described<vspac | ||||
| e /> | ||||
| in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in<vspace /> | ||||
| all capitals, as shown here.</t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <name>Reasons to Declare 'ipv4only.arpa' as Special</name> | ||||
| <section title="Specialness of 'ipv4only.arpa'"> | <t>The hostname 'ipv4only.arpa' is peculiar in that it was never | |||
| <t>The hostname 'ipv4only.arpa' is peculiar in that it was never intended | intended | |||
| to be treated like a normal hostname.</t> | to be treated like a normal hostname.</t> | |||
| <t>A typical client never has any reason to look up the IPv4 address | ||||
| <t>A typical client never has any reason to look up the IPv4 address recor | records for 'ipv4only.arpa': no normal user is ever trying to view a | |||
| ds for 'ipv4only.arpa'. | website hosted at that domain name or trying to send email to an email | |||
| No normal user is ever trying to view a web site hosted at that domain nam | address at that domain name. The name 'ipv4only.arpa' is already known, | |||
| e, | <xref target="RFC7050" format="default">by IETF specification</xref>, to | |||
| or trying to send email to an email address at that domain name. | have exactly two IPv4 address records: 192.0.0.170 and 192.0.0.171. No | |||
| The name 'ipv4only.arpa' is already known, <xref target="RFC7050">by IETF | client ever has to look up the name in order to learn those two | |||
| specification</xref>, | addresses.</t> | |||
| 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 address | ||||
| es.</t> | ||||
| <t>In contrast, clients often look up the IPv6 AAAA address records for | <t>In contrast, clients often look up the IPv6 AAAA address records for | |||
| 'ipv4only.arpa', which is contrary to general DNS expectations, given | 'ipv4only.arpa', which is contrary to general DNS expectations, given | |||
| that it is already known, <xref target="RFC7050">by IETF specification</xr | that it is already known, <xref target="RFC7050" format="default">by | |||
| ef>, | IETF specification</xref>, that 'ipv4only.arpa' is an IPv4-only name, | |||
| that 'ipv4only.arpa' is an IPv4-only name, which has no IPv6 AAAA address | and it has no IPv6 AAAA address records. And yet, clients expect to | |||
| records. | ||||
| And yet, clients expect to | ||||
| receive, and do in fact receive, positive answers for these IPv6 AAAA | receive, and do in fact receive, positive answers for these IPv6 AAAA | |||
| address records that apparently should not exist.</t> | address records that apparently should not exist.</t> | |||
| <t>This odd query behavior comes not because clients are using DNS to | ||||
| <?rfc needLines="3" ?> | learn | |||
| <t>This odd query behaviour comes not because clients are using DNS to lea | legitimate answers from the name's legitimate authoritative | |||
| rn | server, but because the DNS protocol has, in effect, been co-opted as an | |||
| legitimate answers from the name's legitimate authoritative server. | improvised | |||
| Instead, the DNS protocol has, in effect, been co-opted as an improvised | client-to-middlebox communication protocol to look for a DNS64/NAT64 | |||
| client-to-middlebox communication protocol, to look for a DNS64/NAT64 | <xref target="RFC6147" format="default"/> <xref target="RFC6146" | |||
| <xref target="RFC6146"/> <xref target="RFC6147"/> | format="default"/> | |||
| gateway and, if one is present, | gateway and, if one is present, | |||
| to request that it disclose the prefix it is using for IPv6 address synthe | to request that it disclose the prefix it is using for IPv6 address | |||
| sis.</t> | synthesis.</t> | |||
| <t>This use of specially crafted DNS queries as an improvised | <t>This use of specially crafted DNS queries as an improvised | |||
| client-to-middlebox communication protocol has a number of specific | client-to-middlebox communication protocol has a number of specific | |||
| consequences, outlined below, which client software needs to take | consequences, outlined below, which client software needs to take into | |||
| into account if the queries are to produce the desired results, | account if the queries are to produce the desired results. This | |||
| particularly when used on a multi-homed host, or when a VPN tunnel is in u | is particularly true | |||
| se. | when used on a multihomed host or when a VPN tunnel is in use. The | |||
| The name 'ipv4only.arpa' is most definitely a special name, | name 'ipv4only.arpa' is most definitely a special name and needs to be | |||
| and needs to be listed in IANA's registry along with | listed in IANA's registry along with <xref target="SUDN" | |||
| <xref target="SUDN">other DNS names that have special uses</xref>.</t> | format="default">other DNS names that have special uses</xref>.</t> | |||
| <?rfc needLines="4" ?> | ||||
| </section> | </section> | |||
| <section title="Consequences of 'ipv4only.arpa' not being declared special"> | <section numbered="true" toc="default"> | |||
| <t>As a result of <xref target="RFC7050">the original specification</xref> | <name>Consequences of 'ipv4only.arpa' Not Being Declared Special</name> | |||
| <t>As a result of <xref target="RFC7050" format="default">the original | ||||
| specification</xref> | ||||
| not formally declaring 'ipv4only.arpa' to have special properties, | not formally declaring 'ipv4only.arpa' to have special properties, | |||
| there was no clear mandate for DNS software to treat this name specially. | there was no clear mandate for DNS software to treat this name | |||
| specially. | ||||
| In particular, this lack of mandate for special treatment is relevant | In particular, this lack of mandate for special treatment is relevant | |||
| (a) to the name resolution APIs and libraries on client devices, and | (a) to the name resolution APIs and libraries on client devices and | |||
| (b) to DNS64 <xref target="RFC6147"/> implementations. | (b) to DNS64 <xref target="RFC6147" format="default"/> implementations. | |||
| These two aspects are discussed in more detail below.</t> | These two aspects are discussed in more detail below.</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Consequences for Name Resolution APIs and Libraries"> | <name>Consequences for Name Resolution APIs and Libraries</name> | |||
| <t>A serious problem can occur with DNS64/NAT64 when a device is configu | <t>A serious problem can occur with DNS64/NAT64 when a device is | |||
| red to | configured to | |||
| use a recursive resolver other than the one it learned from the network. | use a recursive resolver other than the one it learned from the | |||
| </t> | network.</t> | |||
| <t>A device joining a NAT64 | <t>A device joining a NAT64 | |||
| network will learn the recursive resolver recommended for that network, | network will learn the recursive resolver recommended for that | |||
| typically | network, typically | |||
| via <xref target="RFC8106">IPv6 Router Advertisement Options for DNS Con | via <xref target="RFC8106" format="default">IPv6 Router Advertisement | |||
| figuration</xref> | Options</xref> | |||
| or via <xref target="RFC3646">DNS Configuration options for DHCPv6</xref | or via <xref target="RFC3646" format="default">DHCPv6</xref>. | |||
| >. | On a NAT64 network, it is essential that the client use the | |||
| On a NAT64 network it is essential that the client use the | DNS64 recursive resolver recommended for that network, since only that | |||
| DNS64 recursive resolver recommended for that network, since only that r | recursive resolver can | |||
| ecursive resolver can | be relied upon to know the appropriate prefix(es) to use for | |||
| be relied upon to know the appropriate prefix(es) to use for synthesizin | synthesizing IPv6 | |||
| g IPv6 | ||||
| addresses that will be acceptable to that NAT64 gateway.</t> | addresses that will be acceptable to that NAT64 gateway.</t> | |||
| <t>However, it is becoming increasingly common for users to manually | ||||
| <t>However, it is becoming increasingly common for users to manually ove | override their | |||
| rride their | default DNS configuration because they wish to use some other public | |||
| default DNS configuration because they wish to use some other public rec | recursive | |||
| ursive | resolver on the Internet, which may offer better speed, reliability, | |||
| resolver on the Internet, which may offer better speed, better reliabili | or privacy than the local network's default recursive resolver. | |||
| ty, | At the time of writing, examples of widely known public recursive | |||
| or better privacy than the local network's default recursive resolver. | resolver services | |||
| At the time of writing, examples of widely known public recursive resolv | ||||
| er services | ||||
| include | include | |||
| <xref target="DNS1">Cloudflare Public DNS</xref>, | <xref target="DNS1" format="default">Cloudflare Public DNS</xref>, | |||
| <xref target="DNS8">Google Public DNS</xref>, and | <xref target="DNS8" format="default">Google Public DNS</xref>, and | |||
| <xref target="DNS9">Quad9</xref>.</t> | <xref target="DNS9" format="default">Quad9</xref>.</t> | |||
| <t>Another common scenario is the use of corporate or personal VPN clien | <t>Another common scenario is the use of corporate or personal VPN client | |||
| t software. | software. | |||
| Both for privacy reasons, and also because | ||||
| the local network's recursive resolver will typically | ||||
| be unable to provide answers for the company's private internal host nam | ||||
| es, | ||||
| so VPN client software overrides the | ||||
| local network's default configuration, | ||||
| to divert some or all DNS requests to the company's own private internal | ||||
| recursive resolver, reached through the VPN tunnel. | ||||
| 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 devi | ||||
| ce is currently attached. | ||||
| It is clear that a single recursive resolver cannot meet both needs. | ||||
| The local network's recursive resolver cannot give answers for some | ||||
| company's private internal host names, and some company's private intern | ||||
| al | ||||
| recursive resolver cannot give correctly synthesized IPv6 addresses | ||||
| suitable for the local network's NAT64 gateway.</t> | ||||
| <t>Note that multiple NAT64 services may be simultaneously available to | Both for privacy reasons and because the local network's recursive resolver | |||
| a client. | will typically be unable to provide answers for the company's private internal | |||
| For example, the local network may | host names, VPN client software usually overrides the local network's default | |||
| provide NAT64 service (to allow a IPv6-only client device to access IPv4 | configuration to divert some or all DNS requests so that they go to the | |||
| -only Internet services), | company's own private internal recursive resolver instead of to the default | |||
| while at the same time | recursive resolver the client learned from its local network. (The company's | |||
| a corporate VPN may also | own private internal recursive resolvers typically have addresses that are | |||
| provide NAT64 service (to allow a client connecting via an IPv6-only VPN | themselves reached through the VPN tunnel, not via the public Internet.) | |||
| tunnel to access IPv4-only corporate services). | ||||
| The NAT64 address synthesis prefixes for the two NAT64 services may be d | ||||
| ifferent. | ||||
| 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.</t> | ||||
| <t>The conflict here arises because DNS is being used for two unrelated | As with the case described above of public recursive resolver services, the | |||
| purposes. | company's private internal recursive resolver cannot be expected to be able to | |||
| The first purpose is retrieving data from a (nominally) global database | 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.</t> | ||||
| <t>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.</t> | ||||
| <t>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. | generally retrieving the IP address(es) associated with a hostname. | |||
| The second purpose is using the DNS protocol as a middlebox communicatio | The second purpose is using the DNS protocol as a middlebox | |||
| n | communication | |||
| protocol, to interrogate the local network infrastructure to discover | protocol, to interrogate the local network infrastructure to discover | |||
| the IPv6 prefix(es) in use by the local NAT64 gateway for address synthe | the IPv6 prefix(es) in use by the local NAT64 gateway for address | |||
| sis.</t> | synthesis.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Consequences for DNS64 Implementations"> | <name>Consequences for DNS64 Implementations</name> | |||
| <t>As a result of there being no mandate for special treatment, | <t>As a result of there being no mandate for special treatment, | |||
| queries for 'ipv4only.arpa' had to be handled normally, | queries for 'ipv4only.arpa' had to be handled normally, | |||
| resulting in DNS64 gateways performing unnecessary | resulting in DNS64 gateways performing unnecessary | |||
| IPv6 address record queries (DNS qtype "AAAA", always returning negative | queries to the authoritative 'arpa' name servers, both | |||
| responses) and | unnecessary IPv6 address record queries (DNS qtype "AAAA", always | |||
| IPv4 address record queries (DNS qtype "A", always returning the same po | returning negative responses) and | |||
| sitive responses) | unnecessary IPv4 address record queries (DNS qtype "A", always | |||
| to the authoritative 'arpa' name servers.</t> | returning the same positive responses).</t> | |||
| <t>Having DNS64 gateways around the world issue these queries | ||||
| <t>Having DNS64 gateways around the world issue these queries generated | generated | |||
| additional load on the authoritative 'arpa' name servers, which was | additional load on the authoritative 'arpa' name servers, which was | |||
| redundant when the name 'ipv4only.arpa' is defined, <xref target="RFC705 | redundant when the name 'ipv4only.arpa' is defined, <xref | |||
| 0">by IETF specification</xref>, | target="RFC7050" format="default">by IETF specification</xref>, | |||
| to have exactly two IPv4 address records, 192.0.0.170 and 192.0.0.171, | to have exactly two IPv4 address records, 192.0.0.170 and 192.0.0.171, | |||
| and no other IPv4 or IPv6 address records.</t> | and no other IPv4 or IPv6 address records.</t> | |||
| <t>Also, at times, for reasons that remain | <t>Also, at times, for reasons that remain | |||
| unclear, the authoritative 'arpa' name servers have been observed to be | unclear, the authoritative 'arpa' name servers have been observed to | |||
| slow or unresponsive. | be slow or unresponsive. | |||
| The failures of these 'ipv4only.arpa' queries result in unnecessary fail | The failures of these 'ipv4only.arpa' queries result in unnecessary | |||
| ures | failures | |||
| of the DNS64 gateways and of the client devices that depend on them for | of the DNS64 gateways and of the client devices that depend on them | |||
| <xref target="RFC6147">DNS64</xref> address synthesis.</t> | for | |||
| <xref target="RFC6147" format="default">DNS64</xref> address | ||||
| <t>Even when the authoritative 'arpa' name servers are operating correct | synthesis.</t> | |||
| ly, | <t>Even when the authoritative 'arpa' name servers are operating | |||
| having to perform an unnecessary query to obtain an answer that is alrea | correctly, | |||
| dy | having to perform an unnecessary query to obtain an answer that is | |||
| already | ||||
| known in advance can add precious milliseconds of delay, | known in advance can add precious milliseconds of delay, | |||
| affecting user experience on the client devices waiting | affecting user experience on the client devices waiting | |||
| for those synthesized replies.</t> | for those synthesized replies.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Remedies"> | <name>Remedies</name> | |||
| <t>This document leverages operational experience to update the | <t>This document leverages operational experience to update the <xref | |||
| <xref target="RFC6761">Domain Name Reservation Considerations</xref> secti | target="RFC6761" format="default">Domain Name Reservation Considerations | |||
| on of | section</xref> of <xref target="RFC7050" format="default">the earlier | |||
| <xref target="RFC7050">the earlier specification</xref> | prefix discovery | |||
| with one that more | specification</xref> with one that more accurately lists the actual | |||
| accurately lists the actual special properties of the name 'ipv4only.arpa' | special properties of the name 'ipv4only.arpa', so that software can | |||
| , | legitimately implement the correct behavior necessary for better | |||
| so that software can legitimately implement the correct behavior necessary | performance, better reliability, and correct operation.</t> | |||
| for better performance, better reliability, and correct operation.</t> | <t>These changes affect two bodies of software: (a) the name resolution | |||
| APIs and libraries on client devices, and (b) DNS64 implementations.</t> | ||||
| <t>These changes affect two bodies of software, | <t>The new special rules specified in this document for name resolution | |||
| (a) the name resolution APIs and libraries on client devices, and | APIs and libraries | |||
| (b) DNS64 implementations.</t> | ||||
| <t>The new special rules specified in this document for name resolution AP | ||||
| Is and libraries | ||||
| state how they | state how they | |||
| should select which recursive resolver to query to learn the IPv6 address | should select which recursive resolver to query to learn the IPv6 | |||
| address | ||||
| synthesis prefix in use on a particular physical or virtual interface. | synthesis prefix in use on a particular physical or virtual interface. | |||
| Specifically: When querying for the name 'ipv4only.arpa', | Specifically, when querying for the name 'ipv4only.arpa', | |||
| name resolution APIs and libraries should use the | name resolution APIs and libraries should use the | |||
| recursive resolver recommended by the network for the interface in questio | recursive resolver recommended by the network for the interface in | |||
| n, rather than | question rather than | |||
| a recursive resolver configured manually, | a recursive resolver configured manually, | |||
| a recursive resolver configured by VPN software, or | a recursive resolver configured by VPN software, or | |||
| a full-service recursive resolver running on the local host. | a full-service recursive resolver running on the local host. | |||
| Superficially this might seem like a security issue, since | Superficially, this might seem like a security issue, since | |||
| the user might have explicitly configured the particular DNS resolver they | the user might have explicitly configured the particular DNS resolver | |||
| they | ||||
| wish to use, and rather than using that, the name resolution code | wish to use, and rather than using that, the name resolution code | |||
| ignores the user's stated preference and uses untrusted input received fro | ignores the user's stated preference and uses untrusted input received | |||
| m the network instead. | from the network instead. | |||
| However, the 'ipv4only.arpa' query is not really a DNS query in the usual | However, the 'ipv4only.arpa' query is not really a DNS query in the | |||
| sense; | usual sense; | |||
| even though it may look like a DNS query, it is actually an improvised | even though it may look like a DNS query, it is actually an improvised | |||
| client-to-middlebox communication protocol in disguise. | client-to-middlebox communication protocol in disguise. | |||
| For NAT64 to work at all, | For NAT64 to work at all, | |||
| it is necessary for the interface on which NAT64 translation is being | it is necessary for the interface on which NAT64 translation is being | |||
| performed to tell the host the address of the DNS64 recursive resolver | 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. | the host must use to learn the NAT64 prefix being used by that NAT64. | |||
| This is typically done | This is typically done | |||
| via <xref target="RFC8106">IPv6 Router Advertisement Options for DNS Confi | via <xref target="RFC8106" format="default">IPv6 Router Advertisement | |||
| guration</xref> | Options for DNS Configuration</xref> | |||
| or via <xref target="RFC3646">DNS Configuration options for DHCPv6</xref>. | or via <xref target="RFC3646" format="default">DNS Configuration options | |||
| for DHCPv6</xref>. | ||||
| </t> | </t> | |||
| <t>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.</t> | ||||
| <t>A useful property of the way <xref target="RFC7050" | ||||
| format="default">NAT64 Prefix Discovery</xref> 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. | ||||
| <t>The new special rules specified in this document for DNS64 implementati | <!-- show stuart what we did with the commas.--> | |||
| ons recommend that they avoid | Clients could send their special queries for 'ipv4only.arpa' to an | |||
| performing run-time network queries for values that are known to be fixed | ipv4only-unaware DNS64 gateway, and, as a side effect of its usual query | |||
| by specification.</t> | processing (after a query to IANA’s servers), the DNS64 gateway would | |||
| then generate the correct synthesized response. | ||||
| <t>A useful property of the way | </t> | |||
| <xref target="RFC7050">NAT64 Prefix Discovery</xref> | ||||
| 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 deploy | ||||
| ed, | ||||
| 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 | ||||
| (after a query to IANA's servers) | ||||
| the DNS64 gateway would then generate the correct synthesized response.</t | ||||
| > | ||||
| <t>While this was a useful transition strategy to enable rapid adoption, | <t>While this was a useful transition strategy to enable rapid adoption, | |||
| it is not the ideal end situation. | it is not the ideal end situation. | |||
| For better performance, better reliability, and lower load in IANA's serve | For better performance, better reliability, and lower load in IANA's | |||
| rs, | servers, | |||
| it is preferable for DNS64 gateways to be aware of the special | it is preferable for DNS64 gateways to be aware of the special | |||
| 'ipv4only.arpa' name so that they can avoid issuing unnecessary queries. | 'ipv4only.arpa' name so that they can avoid issuing unnecessary queries. | |||
| Network operators who wish to provide reliable, high performance service t | Network operators who wish to provide reliable, high-performance service | |||
| o | to | |||
| their customers are motivated to prefer DNS64 gateways that recognize | their customers are motivated to prefer DNS64 gateways that recognize | |||
| the special 'ipv4only.arpa' name and apply the appropriate optimizations.< | the special 'ipv4only.arpa' name and apply the appropriate | |||
| /t> | optimizations.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t>One of the known concerns with DNS64 is that | <t>One of the known concerns with DNS64 is that | |||
| it conflicts with DNSSEC. If DNSSEC is used to assert cryptographically th | it conflicts with DNSSEC. If DNSSEC is used to assert cryptographically | |||
| at a name | that a name | |||
| has no IPv6 AAAA records, then this interferes with using DNS64 address sy | has no IPv6 AAAA records, then this interferes with using DNS64 address | |||
| nthesis | synthesis | |||
| to assert that those nonexistent IPv6 AAAA records do exist.</t> | to tell a client that those nonexistent IPv6 AAAA records do exist.</t> | |||
| <t><xref target="RFC6147" sectionFormat="of" section="3">the DNS64 | ||||
| <t>Section 3 of the <xref target="RFC6147">DNS64 specification</xref> | specification</xref> | |||
| discusses this: | discusses this: | |||
| <figure><artwork> | </t> | |||
| ... 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.</artwork></figure></t> | ||||
| <t>The <xref target="RFC7050">NAT64 Prefix Discovery specification</xref> | <blockquote> | |||
| provides the mechanism for the query initiator to learn the NAT64 prefix | ... DNS64 receives a query with the DO bit set and the CD bit set. In this | |||
| so that it can do its own validation and DNS64 synthesis as described abov | case, the DNS64 is supposed to pass on all the data it gets to the query | |||
| e. | initiator. This case will not work with DNS64, unless the validating resolver | |||
| With this mechanism the client can | is prepared to do DNS64 itself. | |||
| (i) interrogate the local DNS64/NAT64 gateway with an 'ipv4only.arpa' | </blockquote> | |||
| query to learn the IPv6 address synthesis prefix, | ||||
| (ii) query for the (signed) IPv4 address records itself, 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/N | ||||
| AT64 gateway | ||||
| with the validated DNSSEC-signed data learned from the global Domain Name | ||||
| System.</t> | ||||
| <t>It is conceivable that over time, if DNSSEC adoption continues to grow, | <t>The <xref target="RFC7050" format="default">NAT64 Prefix Discovery | |||
| the | specification</xref> 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.</t> | ||||
| <t>It is conceivable that, over time, if DNSSEC adoption continues to | ||||
| grow, the | ||||
| majority of clients could move to this validate-and-synthesize-locally | majority of clients could move to this validate-and-synthesize-locally | |||
| model, which reduces the DNS64 machinery to the vestigial role of | model, which reduces the DNS64 machinery to the vestigial role of | |||
| simply responding to the 'ipv4only.arpa' query to report the local | simply responding to the 'ipv4only.arpa' query to report the local | |||
| IPv6 address synthesis prefix. In no case does the client care what | IPv6 address synthesis prefix. | |||
| answer(s) the authoritative 'arpa' name servers might give for that query. | 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 | The 'ipv4only.arpa' query is being used purely as a local | |||
| client-to-middlebox communication message.</t> | client-to-middlebox communication message.</t> | |||
| <t>This validate-and-synthesize-locally | ||||
| <t>This approach is even more attractive if it does not create | approach is even more attractive if it does not create | |||
| an additional dependency on the authoritative 'arpa' name | an additional dependency on the authoritative 'arpa' name | |||
| servers to answer a query that is unnecessary | servers to answer a query that is unnecessary | |||
| because the DNS64/NAT64 gateway already knows the answer | because the DNS64/NAT64 gateway already knows the answer | |||
| before it even issues the query. Avoiding this unnecessary | before it even issues the query. Avoiding this unnecessary | |||
| query improves performance and reliability for the client, | query improves performance and reliability for the client | |||
| and reduces unnecessary load for the authoritative 'arpa' name servers.</t | and reduces unnecessary load for the authoritative 'arpa' name | |||
| > | servers.</t> | |||
| <t>Hardcoding the known answers for | ||||
| <t>Hard-coding the known answers for | ||||
| 'ipv4only.arpa' IPv4 address record queries (DNS qtype "A") in | 'ipv4only.arpa' IPv4 address record queries (DNS qtype "A") in | |||
| recursive resolvers also reduces the risk of malicious devices | recursive resolvers also reduces the risk of malicious devices | |||
| intercepting those queries and returning incorrect answers. | intercepting those queries and returning incorrect answers. | |||
| Because the 'ipv4only.arpa' zone has to be an insecure delegation (see bel | Because the 'ipv4only.arpa' zone has to be an insecure delegation (see | |||
| ow) | below), | |||
| DNSSEC cannot be used to protect these answers from tampering | DNSSEC cannot be used to protect these answers from tampering | |||
| by malicious devices on the path.</t> | by malicious devices on the path.</t> | |||
| <t>With respect to the question of whether 'ipv4only.arpa' should be | <t>With respect to the question of whether 'ipv4only.arpa' should be a | |||
| a secure or insecure delegation, we need to consider | secure or insecure delegation, we need to consider two paths of | |||
| two paths of information flow through the network: | information flow through the network:</t> | |||
| The path from the server authoritative for 'ipv4only.arpa' to the DNS64 re | ||||
| cursive resolver, | ||||
| and the path from the DNS64 recursive resolver to the ultimate client.</t> | ||||
| <t>The path from the authoritative server to the DNS64 recursive resolver | <ol> | |||
| (queries for IPv4 address records) | <li>The path from the server authoritative for 'ipv4only.arpa' to the | |||
| need not be protected by DNSSEC, because the DNS64 recursive resolver | DNS64 recursive resolver | |||
| already knows, by specification, what the answers are. | </li> | |||
| In principle, if this were a secure delegation, and 'ipv4only.arpa' were | <li>The path from the DNS64 recursive resolver to the ultimate client | |||
| a signed zone, then the path from the authoritative server to the DNS64 | </li> | |||
| recursive resolver would still work, but DNSSEC is not necessary here. | </ol> | |||
| Run-time cryptographic signatures are not needed to verify compile-time co | ||||
| nstants. | ||||
| Validating the signatures could only serve to introduce potential failures | ||||
| into the system for minimal benefit.</t> | ||||
| <t>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.</t> | ||||
| <t>The path from the DNS64 recursive resolver to the ultimate client | <t>The path from the DNS64 recursive resolver to the ultimate client | |||
| (queries for IPv6 address records) | (queries for IPv6 address records) | |||
| *cannot* be protected by DNSSEC, because the DNS64 recursive resolver | *cannot* be protected by DNSSEC because the DNS64 recursive resolver | |||
| is synthesizing IPv6 address answers, and does not possess the DNSSEC secr | is synthesizing IPv6 address answers and does not possess the DNSSEC | |||
| et | secret | |||
| key required to sign those answers.</t> | key required to sign those answers.</t> | |||
| <t>Consequently, the 'ipv4only.arpa' zone <bcp14>MUST</bcp14> be an | ||||
| <t>Consequently, the 'ipv4only.arpa' zone MUST be an insecure delegation, | insecure delegation | |||
| to give DNS64/NAT64 gateways the freedom to synthesize answers to those | to give DNS64/NAT64 gateways the freedom to synthesize answers to those | |||
| queries at will, without the answers being rejected by DNSSEC-capable | queries at will, without the answers being rejected by DNSSEC-capable | |||
| resolvers. | resolvers. | |||
| DNSSEC-capable resolvers that follow this specification | DNSSEC-capable resolvers that follow this specification | |||
| MUST NOT attempt to validate answers received in response to | <bcp14>MUST NOT</bcp14> attempt to validate answers received in response | |||
| to | ||||
| queries for the IPv6 AAAA address records for 'ipv4only.arpa'. | queries for the IPv6 AAAA address records for 'ipv4only.arpa'. | |||
| Note that the name 'ipv4only.arpa' has no use outside of being | 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 | 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 | address synthesis prefix, so the lack of DNSSEC security for that name | |||
| not a problem. | is not a problem. | |||
| </t> | </t> | |||
| <t>The original <xref target="RFC7050" format="default">NAT64 Prefix | ||||
| <t>The original <xref target="RFC7050">NAT64 Prefix Discovery specificatio | Discovery specification</xref> | |||
| n</xref> | ||||
| stated, incorrectly: | stated, incorrectly: | |||
| <figure><artwork> | </t> | |||
| 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.</artwork></figur | ||||
| e></t> | ||||
| <t>This document updates <xref target="RFC7050">the previous specification | <blockquote> | |||
| </xref> | A signed "ipv4only.arpa." allows validating DNS64 servers (see [RFC6147] | |||
| to correct that error. The 'ipv4only.arpa' zone MUST be an insecure delega | Section 3, Case 5, for example) to detect malicious AAAA resource records. | |||
| tion.</t> | Therefore, the zone serving the well-known name has to be protected with | |||
| DNSSEC. | ||||
| </blockquote> | ||||
| <t>This document updates <xref target="RFC7050" format="default">the | ||||
| previous specification</xref> | ||||
| to correct that error. The 'ipv4only.arpa' zone <bcp14>MUST</bcp14> be | ||||
| an insecure delegation.</t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="IANA Considerations"> | <name>IANA Considerations</name> | |||
| <t>IANA has created an insecure delegation for 'ipv4only.arpa' | ||||
| <?rfc subcompact="yes" ?> | to allow DNS64 recursive resolvers to create synthesized AAAA answers | |||
| within that zone.</t> | ||||
| <t>[Once published] IANA has created an insecure delegation for 'ipv4only. | <t>IANA has recorded the following names in the | |||
| arpa' | <xref target="SUDN" format="default">Special-Use Domain Names | |||
| to allow DNS64 recursive resolvers to create synthesized AAAA answers with | registry</xref>: | |||
| in that zone.</t> | ||||
| <t>IANA has recorded the following names in the<vspace /> | ||||
| <xref target="SUDN">Special-Use Domain Names registry</xref>: | ||||
| <list style='empty'> | ||||
| <t>ipv4only.arpa.</t> | ||||
| <t>170.0.0.192.in&nbhy;addr.arpa.</t> | ||||
| <t>171.0.0.192.in&nbhy;addr.arpa.</t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <ul empty="true" spacing="compact"> | ||||
| <t>IANA has recorded the following IPv4 addresses in the<vspace /> | <li>ipv4only.arpa.</li> | |||
| <xref target="SUv4">IPv4 Special-Purpose Address Registry</xref>: | <li>170.0.0.192.in&nbhy;addr.arpa.</li> | |||
| <list style='empty'> | <li>171.0.0.192.in&nbhy;addr.arpa.</li> | |||
| <t>192.0.0.170</t> | </ul> | |||
| <t>192.0.0.171</t> | <t>IANA has recorded the following IPv4 addresses in the | |||
| </list> | <xref target="SUv4" format="default">IANA IPv4 Special-Purpose Address | |||
| Registry</xref>: | ||||
| </t> | </t> | |||
| <ul empty="true" spacing="compact"> | ||||
| <?rfc subcompact="no" ?> | <li>192.0.0.170</li> | |||
| <li>192.0.0.171</li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section title="Domain Name Reservation Considerations"> | <section numbered="true" toc="default"> | |||
| <name>Domain Name Reservation Considerations</name> | ||||
| <section title="Special Use Domain Name 'ipv4only.arpa'"> | <section numbered="true" toc="default"> | |||
| <t>The name 'ipv4only.arpa' is defined, <xref target="RFC7050">by IETF s | <name>Special Use Domain Name 'ipv4only.arpa'</name> | |||
| pecification</xref>, to have | <t>The name 'ipv4only.arpa' is defined, <xref target="RFC7050" | |||
| format="default">by IETF specification</xref>, to have | ||||
| two IPv4 address records with rdata 192.0.0.170 and 192.0.0.171.</t> | two IPv4 address records with rdata 192.0.0.170 and 192.0.0.171.</t> | |||
| <t>When queried via a <xref target="RFC6147" format="default">DNS64 | ||||
| <t>When queried via a <xref target="RFC6147">DNS64</xref> recursive reso | recursive resolver</xref>, the name | |||
| lver, the name | ||||
| 'ipv4only.arpa' is also defined to have IPv6 AAAA records, | 'ipv4only.arpa' is also defined to have IPv6 AAAA records, | |||
| with rdata synthesized from a combination of the NAT64 IPv6 prefix(es) | 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. | and the IPv4 addresses 192.0.0.170 and 192.0.0.171. | |||
| This can return more than one pair of IPv6 addresses | This can return more than one pair of IPv6 addresses | |||
| if there are multiple NAT64 prefixes.</t> | if there are multiple NAT64 prefixes.</t> | |||
| <t>The name 'ipv4only.arpa' has no other IPv4 or IPv6 address | ||||
| <t>The name 'ipv4only.arpa' has no other IPv4 or IPv6 address records.<v | records. | |||
| space /> | ||||
| There are no subdomains of 'ipv4only.arpa'. All names falling below | There are no subdomains of 'ipv4only.arpa'. All names falling below | |||
| 'ipv4only.arpa' are defined to be nonexistent (NXDOMAIN).</t> | 'ipv4only.arpa' are defined to be nonexistent (NXDOMAIN).</t> | |||
| <t>The name 'ipv4only.arpa' is special to | ||||
| </t> | ||||
| <t>The name 'ipv4only.arpa' is special to<vspace /> | <ol type="a"> | |||
| (a) client software wishing to perform DNS64 address synthesis,<vspace / | <li>client software wishing to perform DNS64 address synthesis, | |||
| > | </li> | |||
| (b) APIs responsible for retrieving the correct information, and<vspace | <li>APIs responsible for retrieving the correct information, and | |||
| /> | </li> | |||
| (c) the DNS64 recursive resolver responding to such requests.<vspace /> | <li>the DNS64 recursive resolver responding to such requests. | |||
| These three considerations are listed in items 2, 3 and 4 below:</t> | </li> | |||
| </ol> | ||||
| <t> | <t> These three considerations are listed in items 2, 3, and 4 | |||
| <list style="numbers"> | below:</t> | |||
| <t>Normal users should never have reason to encounter the 'ipv4only. | <ol spacing="normal" type="1"> | |||
| arpa' domain name. | <li>Normal users should never have reason to encounter the | |||
| If they do, they should expect queries for 'ipv4only.arpa' to result | 'ipv4only.arpa' domain name. | |||
| in | If they do, they should expect queries for 'ipv4only.arpa' to | |||
| <xref target="RFC7050">the answers required by the specification</xr | result in | |||
| ef>. | <xref target="RFC7050" format="default">the answers required by | |||
| Normal users have no need to know that 'ipv4only.arpa' is special.</ | the specification</xref>. | |||
| t> | Normal users have no need to know that 'ipv4only.arpa' is | |||
| special.</li> | ||||
| <t>Application software may explicitly use the name 'ipv4only.arpa' | <li>Application software may explicitly use the name 'ipv4only.arpa' | |||
| for DNS64/NAT64 | for DNS64/NAT64 | |||
| address synthesis, and expect to get | address synthesis and expect to get | |||
| <xref target="RFC7050">the answers required by the specification</xr | <xref target="RFC7050" format="default">the answers required by | |||
| ef>. | the specification</xref>. | |||
| If application software encounters the name 'ipv4only.arpa' in the n | If application software encounters the name 'ipv4only.arpa' in the | |||
| ormal | normal | |||
| course of handling user input, the application software should resol | course of handling user input, the application software should | |||
| ve | resolve | |||
| that name as usual and need not treat it in any special way.</t> | that name as usual and need not treat it in any special way.</li> | |||
| <li> | ||||
| <t>Name resolution APIs and libraries MUST recognize | <t>Name resolution APIs and libraries <bcp14>MUST</bcp14> | |||
| 'ipv4only.arpa' as special and MUST give it special treatment. | recognize | |||
| <vspace blankLines="1"/> | 'ipv4only.arpa' as special and <bcp14>MUST</bcp14> give it special | |||
| Learning a network's NAT64 prefix is by its nature an interface-spec | treatment. | |||
| ific | </t> | |||
| operation, and the special DNS query used to learn this interface-sp | <t> | |||
| ecific | Learning a network's NAT64 prefix is, by its nature, an | |||
| NAT64 prefix MUST be sent to the | interface-specific | |||
| DNS recursive resolver address(es) the client learned via the config | operation, and the special DNS query used to learn this | |||
| uration | interface-specific | |||
| NAT64 prefix <bcp14>MUST</bcp14> be sent to the | ||||
| DNS recursive resolver address(es) the client learned via the | ||||
| configuration | ||||
| machinery for that specific client interface. | machinery for that specific client interface. | |||
| The NAT64 prefix is a per-interface property, not a per-device prope | The NAT64 prefix is a per-interface property, not a per-device | |||
| rty. | property. | |||
| <vspace blankLines="1"/> | ||||
| Regardless of any manual client DNS configuration, DNS overrides | ||||
| configured by VPN client software, or any other mechanisms that infl | ||||
| uence | ||||
| the choice of the client's recursive resolver address(es) | ||||
| (including client devices that run their own local recursive resolve | ||||
| r 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 inte | ||||
| rface in question | ||||
| via <xref target="RFC8106">IPv6 Router Advertisement Options for DNS | ||||
| Configuration</xref>, | ||||
| <xref target="RFC3646">DNS Configuration options for DHCPv6</xref>, | ||||
| or other configuration mechanisms. | ||||
| Because DNS queries for 'ipv4only.arpa' are actually a special middl | ||||
| ebox | ||||
| 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 <xref target="RFC7050">NAT64 Prefix Discovery mechanism</xref>. | ||||
| <vspace blankLines="1"/> | ||||
| One implication of this is that, on multi-homed 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 answe | ||||
| rs may be received, | ||||
| and DNS64 answers are only valid for the interface on which they wer | ||||
| e received. | ||||
| On multi-homed devices (including devices that support VPN), | ||||
| name resolution APIs that do not include interface parameters will n | ||||
| ot 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. | ||||
| <vspace blankLines="1"/> | ||||
| DNSSEC-capable resolvers MUST NOT attempt to validate answers receiv | ||||
| ed | ||||
| in response to queries for the IPv6 AAAA address records for 'ipv4on | ||||
| ly.arpa', | ||||
| since, by definition, any such answers are generated by the local ne | ||||
| twork's | ||||
| DNS64/NAT64 gateway, not the authoritative server responsible for th | ||||
| at name. | ||||
| </t> | </t> | |||
| <t> | ||||
| <?rfc needLines="5" ?> | Regardless of any manual client DNS configuration, DNS overrides | |||
| <t>For the purposes of this section, recursive resolvers fall into t | configured by VPN client software, or any other mechanisms that | |||
| wo categories. | influence the choice of the client's recursive resolver | |||
| The first category is traditional recursive resolvers, which include | address(es) (including client devices that run their own local | |||
| s | recursive resolver and use the loopback address as their | |||
| *forwarding* recursive resolvers, as commonly implemented in residen | configured recursive resolver address), all queries for | |||
| tial home gateways, | 'ipv4only.arpa' and any subdomains of that name | |||
| <bcp14>MUST</bcp14> be sent to the recursive resolver learned from | ||||
| the network interface in question via <xref target="RFC8106" | ||||
| format="default">IPv6 Router Advertisement Options for DNS | ||||
| Configuration</xref>, <xref target="RFC3646" format="default">DNS | ||||
| Configuration options for DHCPv6</xref>, 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 | ||||
| <xref target="RFC7050" format="default">NAT64 Prefix Discovery | ||||
| mechanism</xref>. | ||||
| </t> | ||||
| <t> | ||||
| 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 | ||||
| <bcp14>MUST</bcp14> 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. | ||||
| </t> | ||||
| <t> | ||||
| DNSSEC-capable resolvers <bcp14>MUST NOT</bcp14> 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. | ||||
| </t> | ||||
| </li> | ||||
| <li> | ||||
| <t>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. | and *iterative* recursive resolvers, as commonly deployed by ISPs. | |||
| More information on these terms can be found in <xref target="RFC849 | The second category is DNS64 recursive resolvers, whose purpose is | |||
| 9">DNS Terminology</xref>. | to synthesize IPv6 address records. | |||
| The second category is DNS64 recursive resolvers, whose purpose is t | These may be *forwarding* DNS64 recursive resolvers or *iterative* | |||
| o synthesize IPv6 address records. | DNS64 recursive resolvers, | |||
| These may be *forwarding* DNS64 recursive resolvers or *iterative* D | and they work in partnership with a companion NAT64 gateway to | |||
| NS64 recursive resolvers, | communicate the appropriate | |||
| and they work in partnership with a companion NAT64 gateway to commu | ||||
| nicate the appropriate | ||||
| NAT64 address synthesis prefix to clients. | NAT64 address synthesis prefix to clients. | |||
| <vspace blankLines="1" /> | More information on these terms can be found in | |||
| Traditional forwarding recursive resolvers SHOULD NOT recognize 'ipv | <xref target="RFC8499" format="default">the DNS Terminology | |||
| 4only.arpa' | document</xref>. | |||
| as special or give that name, or subdomains of that name, any specia | </t> | |||
| l treatment. | <t> | |||
| The rationale for this is that a traditional forwarding recursive re | Traditional forwarding recursive resolvers <bcp14>SHOULD | |||
| solver, | NOT</bcp14> recognize 'ipv4only.arpa' | |||
| such as built in to a residential home gateway, may itself be downst | as special or give that name, or subdomains of that name, any | |||
| ream of a DNS64 recursive resolver. | special treatment. | |||
| Passing through the 'ipv4only.arpa' queries to the upstream DNS64 re | The rationale for this is that a traditional forwarding recursive | |||
| cursive resolver will allow | 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. | the correct NAT64 prefix to be discovered. | |||
| <vspace blankLines="1" /> | </t> | |||
| <t> | ||||
| Traditional iterative recursive resolvers that are not explicitly | Traditional iterative recursive resolvers that are not explicitly | |||
| configured to synthesize IPv6 prefixes on behalf of a companion NAT6 | configured to synthesize IPv6 prefixes on behalf of a companion | |||
| 4 gateway | NAT64 gateway | |||
| need not recognize 'ipv4only.arpa' as special or take any special ac | need not recognize 'ipv4only.arpa' as special or take any special | |||
| tion. | action. | |||
| <vspace blankLines="1" /> | </t> | |||
| Forwarding or iterative recursive resolvers | <t> | |||
| that have been explicitly configured to perform DNS64 address synthe | Forwarding or iterative recursive resolvers that have been | |||
| sis | explicitly configured to perform DNS64 address synthesis in | |||
| in support of a companion NAT64 gateway (i.e, "DNS64 recursive resol | support of a companion NAT64 gateway (i.e., "DNS64 recursive | |||
| vers") | resolvers") <bcp14>MUST</bcp14> recognize 'ipv4only.arpa' as | |||
| MUST recognize 'ipv4only.arpa' as special. | special. The authoritative name servers for 'ipv4only.arpa' | |||
| The authoritative name servers for 'ipv4only.arpa' cannot be | cannot be expected to know the local network's NAT64 address | |||
| expected to know the local network's NAT64 address synthesis prefix, | synthesis prefix, so consulting the authoritative name servers for | |||
| so consulting the authoritative name servers for IPv6 address record | IPv6 address records for 'ipv4only.arpa' is futile. All DNS64 | |||
| s for 'ipv4only.arpa' is futile. | recursive resolvers <bcp14>MUST</bcp14> recognize 'ipv4only.arpa' | |||
| All DNS64 recursive resolvers MUST recognize 'ipv4only.arpa' (and al | (and all of its subdomains) as special, and they <bcp14>MUST | |||
| l of its subdomains) as special, | NOT</bcp14> attempt to look up NS records for 'ipv4only.arpa' or | |||
| and MUST NOT attempt to look up NS records for 'ipv4only.arpa', | otherwise query authoritative name servers in an attempt to | |||
| or otherwise query authoritative name servers in an attempt to resol | resolve this name. Instead, DNS64 recursive resolvers | |||
| ve this name. | <bcp14>MUST</bcp14> act as authoritative for this zone, by | |||
| Instead, DNS64 recursive resolvers MUST act | generating immediate responses for all queries for 'ipv4only.arpa' | |||
| as authoritative for this zone, by generating immediate responses fo | (and any subdomain of 'ipv4only.arpa'), with the one exception of | |||
| r all queries | queries for the DS record. Queries for the DS record are resolved | |||
| for 'ipv4only.arpa' (and any subdomain of 'ipv4only.arpa'), with the | the usual way to allow a client to securely verify that the | |||
| one | 'ipv4only.arpa' zone has an insecure delegation. Note that this | |||
| exception of queries for the DS record. | exception is not expected to receive widespread usage, since any | |||
| Queries for the DS record are resolved the usual way to allow a clie | client compliant with this specification already knows that | |||
| nt | 'ipv4only.arpa' is an insecure delegation and will not attempt | |||
| to securely verify that the 'ipv4only.arpa' zone has an insecure del | DNSSEC validation for this name. | |||
| egation. | </t> | |||
| Note that this exception is not expected to receive widespread usage | <t> | |||
| , | DNS64 recursive resolvers <bcp14>MUST</bcp14> generate | |||
| since any client compliant with this specification already knows tha | the 192.0.0.170 and 192.0.0.171 responses for IPv4 address queries | |||
| t | (DNS qtype "A"), | |||
| 'ipv4only.arpa' is an insecure delegation and will not attempt DNSSE | the appropriate synthesized IPv6 address record responses for IPv6 | |||
| C validation for this name. | address queries (DNS qtype "AAAA"), | |||
| <vspace blankLines="1" /> | and a negative ("no error no answer") response for | |||
| DNS64 recursive resolvers MUST generate | all other query types except DS. | |||
| the 192.0.0.170 and 192.0.0.171 responses for IPv4 address queries ( | </t> | |||
| DNS qtype "A"), | <t> | |||
| the appropriate synthesized IPv6 address record responses for IPv6 a | For all subdomains of 'ipv4only.arpa', DNS64 recursive resolvers | |||
| ddress queries (DNS qtype "AAAA"), | <bcp14>MUST</bcp14> generate immediate NXDOMAIN responses. | |||
| and a negative ("no error no answer") response for al | All names falling below 'ipv4only.arpa' are defined to be | |||
| l other query types except DS. | nonexistent. | |||
| <vspace blankLines="1" /> | </t> | |||
| For all subdomains of 'ipv4only.arpa', DNS64 recursive resolvers MUS | <t> | |||
| T generate immediate NXDOMAIN responses. | An example configuration for BIND 9 showing how to achieve the | |||
| All names falling below 'ipv4only.arpa' are defined to be nonexisten | desired result | |||
| t. | ||||
| <vspace blankLines="1" /> | ||||
| An example configuration for BIND 9 showing how to achieve the desir | ||||
| ed result | ||||
| is given in <xref target="app-a" format="none">Appendix A</xref>. | is given in <xref target="app-a" format="none">Appendix A</xref>. | |||
| <vspace blankLines="1" /> | ||||
| Note that this is *not* a locally served zone in the usual sense of | ||||
| that term | ||||
| <xref target="RFC6303"/> because this rule applies *only* to DNS64 r | ||||
| ecursive resolvers, | ||||
| not to forwarding DNS recursive resolvers. | ||||
| </t> | </t> | |||
| <t> | ||||
| <t>Authoritative name server software need not recognize | Note that this is *not* a locally served zone in the usual sense | |||
| 'ipv4only.arpa' as special or handle it in any special way.</t> | of that term | |||
| <xref target="RFC6303" format="default"/> because this rule | ||||
| <t>Generally speaking, operators of authoritative name servers need | applies *only* to DNS64 recursive resolvers, | |||
| not know anything about the name 'ipv4only.arpa', just as they do no | not to traditional forwarding or iterative recursive resolvers. | |||
| t 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 answer | ||||
| s | ||||
| within that zone. Making the 'ipv4only.arpa' zone a secure delegatio | ||||
| n would make it impossible | ||||
| for DNS64 recursive resolvers to create synthesized AAAA answers tha | ||||
| t | ||||
| will be accepted by DNSSEC validating clients, thereby defeating the | ||||
| entire purpose of the 'ipv4only.arpa' name. | ||||
| </t> | </t> | |||
| </li> | ||||
| <t>DNS Registries/Registrars need not know anything about | <li>Authoritative name server software need not recognize | |||
| 'ipv4only.arpa' as special or handle it in any special way.</li> | ||||
| <li>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' <bcp14>MUST</bcp14> have | ||||
| the required records, and <bcp14>MUST</bcp14> 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. | ||||
| </li> | ||||
| <li>DNS Registries/Registrars need not know anything about | ||||
| the name 'ipv4only.arpa', just as they do not need to know | the name 'ipv4only.arpa', just as they do not need to know | |||
| anything about any other name they are not responsible for.</t> | anything about any other name they are not responsible for.</li> | |||
| </list> | </ol> | |||
| </t> | </section> | |||
| <?rfc needLines="25" ?> | <section numbered="true" toc="default"> | |||
| </section> | <name>Names '170.0.0.192.in&nbhy;addr.arpa' and | |||
| '171.0.0.192.in&nbhy;addr.arpa'</name> | ||||
| <section title="Names '170.0.0.192.in&nbhy;addr.arpa' and '171.0.0.192.in& | <t>Since the IPv4 addresses 192.0.0.170 and 192.0.0.171 are defined to | |||
| nbhy;addr.arpa'"> | be special, and are listed in the <xref target="SUv4" | |||
| <t>Since the IPv4 addresses 192.0.0.170 and 192.0.0.171 are defined | format="default">IANA IPv4 Special-Purpose Address Registry</xref>, | |||
| to be special, and are listed in the | the | |||
| <xref target="SUv4">IPv4 Special-Purpose Address Registry</xref>, | corresponding reverse mapping names in the in&nbhy;addr.arpa domain | |||
| the corresponding reverse mapping names in the in&nbhy;addr.arpa domain | ||||
| are similarly special.</t> | are similarly special.</t> | |||
| <t>The name '170.0.0.192.in&nbhy;addr.arpa' is defined, <xref | ||||
| target="RFC7050" format="default">by IETF specification</xref>, to | ||||
| have only one DNS record, type PTR, with rdata 'ipv4only.arpa'.</t> | ||||
| <t>The name '171.0.0.192.in&nbhy;addr.arpa' is defined, <xref | ||||
| target="RFC7050" format="default">by IETF specification</xref>, to | ||||
| have only one DNS record, type PTR, with rdata 'ipv4only.arpa'.</t> | ||||
| <t>There are no subdomains of '170.0.0.192.in&nbhy;addr.arpa' or | ||||
| '171.0.0.192.in&nbhy;addr.arpa'. All names falling below these names | ||||
| are defined to be nonexistent (NXDOMAIN).</t> | ||||
| <t>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: | ||||
| <t>The name '170.0.0.192.in&nbhy;addr.arpa' is defined, <xref target="RF | ||||
| C7050">by IETF specification</xref>, | ||||
| to have only one DNS record, type PTR, with rdata 'ipv4only.arpa'.</t> | ||||
| <t>The name '171.0.0.192.in&nbhy;addr.arpa' is defined, <xref target="RF | ||||
| C7050">by IETF specification</xref>, | ||||
| to have only one DNS record, type PTR, with rdata 'ipv4only.arpa'.</t> | ||||
| <t>There are no subdomains of '170.0.0.192.in&nbhy;addr.arpa' or '171.0. | ||||
| 0.192.in&nbhy;addr.arpa'. | ||||
| All names falling below these names are defined to be nonexistent (NXDOM | ||||
| AIN).</t> | ||||
| <t>Practically speaking these two names are rarely used, but to the exte | ||||
| nt that | ||||
| they may be, they are special only to resolver APIs and libraries, as | ||||
| described in item 3 below: | ||||
| <list style="numbers"> | ||||
| <t>Normal users should never have reason to encounter these two reve | ||||
| rse 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 a | ||||
| re special.</t> | ||||
| <t>Application software SHOULD NOT recognize these two reverse mappi | ||||
| ng | ||||
| names as special, and SHOULD NOT treat them differently.<vspace /> | ||||
| For example, if the user were to issue the Unix command "host 1 | ||||
| 92.0.0.170" | ||||
| then the "host" command should call the name resolution API or libra | ||||
| ry as usual and display the | ||||
| result that is returned.</t> | ||||
| <t>Name resolution APIs and libraries SHOULD recognize these two rev | ||||
| erse | ||||
| mapping names as special and generate the required responses locally | ||||
| . | ||||
| For the names '170.0.0.192.in&nbhy;addr.arpa' and '171.0.0.192.in&nb | ||||
| hy;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 define | ||||
| d to be nonexistent. | ||||
| <vspace blankLines="1" /> | ||||
| This local self-contained generation of these responses is to avoid | ||||
| placing unnecessary load on the authoritative 'in&nbhy;addr.arpa' na | ||||
| me servers.</t> | ||||
| <?rfc needLines="12" ?> | ||||
| <t>Recursive resolvers SHOULD NOT recognize these two reverse mappin | ||||
| g | ||||
| names as special and SHOULD NOT, by default, give them any special t | ||||
| reatment.</t> | ||||
| <t>Authoritative name server software need not recognize | ||||
| these two reverse mapping names as special or handle them in any spe | ||||
| cial way.</t> | ||||
| <t>Generally speaking, most operators of authoritative name servers | ||||
| need | ||||
| not know anything about these two reverse mapping names, just as the | ||||
| y 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 r | ||||
| everse mapping names | ||||
| need to be aware that these names are special, and require fixed ans | ||||
| wers specified by IETF specification.</t> | ||||
| <t>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.</t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <ol spacing="normal" type="1"> | ||||
| <li>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.</li> | ||||
| <li> | ||||
| <t>Application software <bcp14>SHOULD NOT</bcp14> recognize these | ||||
| two reverse mapping names as special and <bcp14>SHOULD | ||||
| NOT</bcp14> 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.</t> | ||||
| </li> | ||||
| <li> | ||||
| <t>Name resolution APIs and libraries <bcp14>SHOULD</bcp14> | ||||
| recognize these two reverse mapping names as special and generate | ||||
| the required responses locally. For the names | ||||
| '170.0.0.192.in&nbhy;addr.arpa' and | ||||
| '171.0.0.192.in&nbhy;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. | ||||
| </t> | ||||
| <t> | ||||
| This local self-contained generation of these responses is to | ||||
| avoid | ||||
| placing unnecessary load on the authoritative 'in&nbhy;addr.arpa' | ||||
| name servers.</t> | ||||
| </li> | ||||
| <li>Recursive resolvers <bcp14>SHOULD NOT</bcp14> recognize these | ||||
| two reverse mapping | ||||
| names as special and <bcp14>SHOULD NOT</bcp14>, by default, give | ||||
| them any special treatment.</li> | ||||
| <li>Authoritative name server software need not recognize | ||||
| these two reverse mapping names as special or handle them in any | ||||
| special way.</li> | ||||
| <li>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.</li> | ||||
| <li>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.</li> | ||||
| </ol> | ||||
| <?rfc needLines="27" ?> | <section numbered="true" toc="default"> | |||
| <section title="ip6.arpa Reverse Mapping PTR Records"> | <name>ip6.arpa Reverse Mapping PTR Records</name> | |||
| <t>For all IPv6 addresses synthesized by a DNS64 recursive resolver, | <t>For all IPv6 addresses synthesized by a DNS64 recursive resolver, | |||
| the DNS64 recursive resolver is responsible for | the DNS64 recursive resolver is responsible for | |||
| synthesizing the appropriate 'ip6.arpa' reverse mapping PTR records to | synthesizing the appropriate 'ip6.arpa' reverse mapping PTR records | |||
| o, | too, | |||
| if it chooses to provide reverse mapping PTR records. | if it chooses to provide reverse mapping PTR records. | |||
| The same applies to the synthesized IPv6 addresses corresponding | The same applies to the synthesized IPv6 addresses corresponding | |||
| to the IPv4 addresses 192.0.0.170 and 192.0.0.171.</t> | to the IPv4 addresses 192.0.0.170 and 192.0.0.171.</t> | |||
| <t>Generally, a DNS64 recursive resolver synthesizes | ||||
| <t>Generally a DNS64 recursive resolver synthesizes | ||||
| appropriate 'ip6.arpa' reverse mapping PTR records by extracting | appropriate 'ip6.arpa' reverse mapping PTR records by extracting | |||
| the embedded IPv4 address from the encoded IPv6 address, | the embedded IPv4 address from the encoded IPv6 address, | |||
| performing a reverse mapping PTR query for that IPv4 address, | performing a reverse mapping PTR query for that IPv4 address, | |||
| and then synthesizing a corresponding 'ip6.arpa' reverse mapping | and then synthesizing a corresponding 'ip6.arpa' reverse mapping | |||
| PTR record containing the same rdata.</t> | PTR record containing the same rdata.</t> | |||
| <?rfc needLines="20" ?> | ||||
| <t>In the case of synthesized IPv6 addresses corresponding | <t>In the case of synthesized IPv6 addresses corresponding | |||
| to the IPv4 addresses 192.0.0.170 and 192.0.0.171, | to the IPv4 addresses 192.0.0.170 and 192.0.0.171, | |||
| the DNS64 recursive resolver does not issue reverse mapping queries | the DNS64 recursive resolver does not issue reverse mapping queries | |||
| for those IPv4 addresses, but instead, according to rule 3 above, | for those IPv4 addresses, but instead, according to rule 3 above, | |||
| immediately returns the answer 'ipv4only.arpa'.</t> | immediately returns the answer 'ipv4only.arpa'.</t> | |||
| <t>In the case of a client that uses the 'ipv4only.arpa' query to | ||||
| <t>In the case of a client that uses the 'ipv4only.arpa' query to disc | discover the | |||
| over the | IPv6 prefixes in use by the local NAT64 gateway, and then proceeds | |||
| IPv6 prefixes in use by the local NAT64 gateway, and then proceeds to | to perform | |||
| perform | its own address synthesis locally (which has benefits such as | |||
| its own address synthesis locally (which has benefits such as allowing | allowing DNSSEC validation), | |||
| DNSSEC validation), | that client <bcp14>MUST</bcp14> also synthesize 'ip6.arpa' reverse | |||
| that client MUST also synthesize 'ip6.arpa' reverse mapping PTR | mapping PTR | |||
| records for those discovered prefix(es), according to the rules above: | records for those discovered prefix(es), according to the rules | |||
| above: | ||||
| When a client's name resolution APIs and libraries receive a request | 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 tha | to look up an 'ip6.arpa' reverse mapping PTR record for an address | |||
| t | that | |||
| falls within one of the discovered NAT64 address synthesis prefixes, | falls within one of the discovered NAT64 address synthesis prefixes, | |||
| the software extracts the embedded IPv4 address and then, | the software extracts the embedded IPv4 address and then, | |||
| for IPv4 addresses 192.0.0.170 and 192.0.0.171, returns the fixed answ | for IPv4 addresses 192.0.0.170 and 192.0.0.171, returns the fixed | |||
| er 'ipv4only.arpa', | answer 'ipv4only.arpa', | |||
| and for all other IPv4 addresses performs a reverse mapping PTR query | and for all other IPv4 addresses, performs a reverse mapping PTR | |||
| for | query for | |||
| the IPv4 address, and then synthesizes a corresponding 'ip6.arpa' | the IPv4 address and then synthesizes a corresponding 'ip6.arpa' | |||
| reverse mapping PTR record containing the same rdata.</t> | reverse mapping PTR record containing the same rdata.</t> | |||
| <?rfc needLines="38" ?> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="Acknowledgements" title="Acknowledgements"> | ||||
| <t>Thanks to Jouni Korhonen, Teemu Savolainen, and Dan Wing, for devising | ||||
| the <xref target="RFC7050">NAT64 Prefix Discovery mechanism</xref>, | ||||
| and for their feedback on this document.</t> | ||||
| <t>Thanks to Geoff Huston for his feedback on this document.</t> | ||||
| <t>Thanks to Erik Kline for pointing out that the in&nbhy;addr.arpa names | ||||
| are special too.</t> | ||||
| <t>Thanks to Mark Andrews for conclusively pointing out the reasons why th | ||||
| e 'ipv4only.arpa' | ||||
| zone must be an insecure delegation in order for the | ||||
| <xref target="RFC7050">NAT64 Prefix Discovery mechanism</xref> to work, | ||||
| and many other very helpful comments.</t> | ||||
| <t>Thanks particularly to Lorenzo Colitti for an especially spirited hallw | ||||
| ay discussion at | ||||
| IETF 96 in Berlin, which lead directly to significant improvements in how | ||||
| this | ||||
| document presents the issues.</t> | ||||
| <t>Thanks to Scott Bradner, Bernie Volz, Barry Leiba, Mirja Kühlewind, Sur | ||||
| esh Krishnan, | ||||
| Benjamin Kaduk, Roman Danyliw, Éric Vyncke and the other IESG reviewers fo | ||||
| r their thoughtful feedback.</t> | ||||
| <t>Thanks to Dave Thaler and Warren Kumari for generously helping | ||||
| shepherd this document through the publication process.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <?rfc needLines="38" ?> | <references> | |||
| <references title="Normative References"> | <name>References</name> | |||
| <?rfc include="reference.RFC.2119" ?> | <references> | |||
| <?rfc include="reference.RFC.3646" ?> | <name>Normative References</name> | |||
| <?rfc include="reference.RFC.6146" ?> | <xi:include | |||
| <?rfc include="reference.RFC.6147" ?> | href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | |||
| <?rfc include="reference.RFC.6761" ?> | 2119.xml"/> | |||
| <?rfc include="reference.RFC.7050" ?> | <xi:include | |||
| <?rfc include="reference.RFC.8106" ?> | href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | |||
| <?rfc include="reference.RFC.8174" ?> | 3646.xml"/> | |||
| </references> | <xi:include | |||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| <references title="Informative References"> | 6146.xml"/> | |||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 6147.xml"/> | ||||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 6761.xml"/> | ||||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 7050.xml"/> | ||||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 8106.xml"/> | ||||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 8174.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 6303.xml"/> | ||||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 8244.xml"/> | ||||
| <xi:include | ||||
| href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | ||||
| 8499.xml"/> | ||||
| <?rfc include="reference.RFC.6303" ?> | <reference anchor="SUDN" | |||
| <?rfc include="reference.RFC.8244" ?> | target="https://www.iana.org/assignments/special-use-domain-na | |||
| <?rfc include="reference.RFC.8499" ?> | mes/"> | |||
| <front> | ||||
| <title>Special-Use Domain Names</title> | ||||
| <author> | ||||
| <organization>IANA | ||||
| </organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="SUDN" | <reference anchor="SUv4" | |||
| target="https://www.iana.org/assignments/special-use-domain-names/"> | target="https://www.iana.org/assignments/iana-ipv4-special-reg | |||
| <front> | istry/"> | |||
| <title>Special-Use Domain Names Registry</title> | <front> | |||
| <author/> | <title>IANA IPv4 Special-Purpose Address Registry</title> | |||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="SUv4" | <author> | |||
| target="https://www.iana.org/assignments/iana-ipv4-special-registry/"> | <organization>IANA | |||
| <front> | </organization> | |||
| <title>IANA IPv4 Special-Purpose Address Registry</title> | </author> | |||
| <author/> | </front> | |||
| <date/> | </reference> | |||
| </front> | ||||
| </reference> | ||||
| <reference anchor="DNS1" | <reference anchor="DNS1" target="https://1.1.1.1/"> | |||
| target="https://1.1.1.1/"> | <front> | |||
| <front> | <title>1.1.1.1 - The free app that makes your Internet | |||
| <title>1.1.1.1 - The free app that makes your Internet safer</title> | safer.</title> | |||
| <author/> | <author> | |||
| <date/> | <organization>Cloudflare | |||
| </front> | </organization> | |||
| </reference> | </author> | |||
| </front> | ||||
| </reference> | ||||
| <reference anchor="DNS8" | <reference anchor="DNS8" | |||
| target="https://developers.google.com/speed/public-dns/"> | target="https://developers.google.com/speed/public-dns/"> | |||
| <front> | <front> | |||
| <title>Google Public DNS</title> | <title>Google Public DNS</title> | |||
| <author/> | <author> | |||
| <date/> | <organization>Google | |||
| </front> | </organization> | |||
| </reference> | </author> | |||
| </front> | ||||
| </reference> | ||||
| <reference anchor="DNS9" | <reference anchor="DNS9" target="https://quad9.net/"> | |||
| target="https://quad9.net/"> | <front> | |||
| <front> | <title>Internet Security and Privacy In a Few Easy Steps</title> | |||
| <title>Quad9 - Internet Security and Privacy In a Few Easy Steps</titl | <author> | |||
| e> | <organization>Quad9 | |||
| <author/> | </organization> | |||
| <date/> | </author> | |||
| </front> | ||||
| </reference> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="app-a" numbered="true" toc="default"> | ||||
| <?rfc needLines="40" ?> | <name>Example BIND 9 Configuration</name> | |||
| <section anchor="app-a" title="Example BIND 9 Configuration"> | ||||
| <t>A BIND 9 recursive resolver can be configured to | <t>A BIND 9 recursive resolver can be configured to | |||
| act as authoritative for the necessary DNS64 names as described below.</t> | act as authoritative for the necessary DNS64 names as described | |||
| below.</t> | ||||
| <t>In /etc/named.conf the following line is added: | <t>In /etc/named.conf, the following line is added: | |||
| <figure><artwork> | </t> | |||
| zone "ipv4only.arpa" { type master; file "ipv4only"; };</artwork>< | ||||
| /figure></t> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| zone "ipv4only.arpa" { type master; file "ipv4only"; };]]></artwor | ||||
| k> | ||||
| <t>The file /var/named/ipv4only is created with the following content: | <t>The file /var/named/ipv4only is created with the following content: | |||
| <figure><artwork> | </t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| $TTL 86400 ; Default TTL 24 hours | $TTL 86400 ; Default TTL 24 hours | |||
| @ IN SOA nameserver.example. admin.nameserver.example. ( | @ IN SOA nameserver.example. admin.nameserver.example. ( | |||
| 2016052400 ; Serial | 2016052400 ; Serial | |||
| 7200 ; Refresh ( 7200 = 2 hours) | 7200 ; Refresh ( 7200 = 2 hours) | |||
| 3600 ; Retry ( 3600 = 1 hour) | 3600 ; Retry ( 3600 = 1 hour) | |||
| 15724800 ; Expire (15724800 = 6 months) | 15724800 ; Expire (15724800 = 6 months) | |||
| 60 ; Minimum | 60 ; Minimum | |||
| ) | ) | |||
| @ IN NS nameserver.example. | @ IN NS nameserver.example. | |||
| @ IN A 192.0.0.170 | @ IN A 192.0.0.170 | |||
| @ IN A 192.0.0.171 | @ 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.170 ; If not using Well-Known Prefix | |||
| @ IN AAAA 64:ff9b::192.0.0.171 ; place chosen NAT64 prefix here</artwork></fi | @ IN AAAA 64:ff9b::192.0.0.171 ; place chosen NAT64 prefix here]]></artwork> | |||
| gure></t> | </section> | |||
| <section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t>Thanks to <contact fullname="Jouni Korhonen"/>, <contact | ||||
| fullname="Teemu Savolainen"/>, and <contact fullname="Dan Wing"/>, for | ||||
| devising the <xref | ||||
| target="RFC7050" format="default">NAT64 Prefix Discovery | ||||
| mechanism</xref> and for their feedback on this document.</t> | ||||
| <t>Thanks to <contact fullname="Geoff Huston"/> for his feedback on this | ||||
| document.</t> | ||||
| <t>Thanks to <contact fullname="Erik Kline"/> for pointing out that the | ||||
| in&nbhy;addr.arpa names are special, too.</t> | ||||
| <t>Thanks to <contact fullname="Mark Andrews"/> for conclusively | ||||
| pointing out the reasons why the 'ipv4only.arpa' zone must be an | ||||
| insecure delegation in order for the <xref target="RFC7050" | ||||
| format="default">NAT64 Prefix Discovery mechanism</xref> to | ||||
| work and for | ||||
| many other very helpful comments.</t> | ||||
| <t>Thanks particularly to <contact fullname="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.</t> | ||||
| <t>Thanks to <contact fullname="Scott Bradner"/>, <contact | ||||
| fullname="Bernie Volz"/>, <contact fullname="Barry Leiba"/>, <contact | ||||
| fullname="Mirja Kuehlewind"/>, <contact fullname="Suresh Krishnan"/>, | ||||
| <contact fullname="Benjamin Kaduk"/>, <contact fullname="Roman | ||||
| Danyliw"/>, <contact fullname="Eric Vyncke"/>, and the | ||||
| other IESG reviewers for their thoughtful feedback.</t> | ||||
| <t>Thanks to <contact fullname="Dave Thaler"/> and <contact | ||||
| fullname="Warren Kumari"/> for generously helping shepherd this document | ||||
| through the publication process.</t> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 124 change blocks. | ||||
| 830 lines changed or deleted | 817 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||