rfc9872v1.txt | rfc9872.txt | |||
---|---|---|---|---|
skipping to change at line 101 ¶ | skipping to change at line 101 ¶ | |||
[RFC8305]). | [RFC8305]). | |||
* Perform local DNS64 [RFC6147] functions. | * Perform local DNS64 [RFC6147] functions. | |||
* Support applications relying on IPv4 address referral | * Support applications relying on IPv4 address referral | |||
(Section 3.2.2 of [RFC7225]). | (Section 3.2.2 of [RFC7225]). | |||
Dynamic PREF64 discovery is useful to keep the NAT64 prefix | Dynamic PREF64 discovery is useful to keep the NAT64 prefix | |||
configuration up-to-date, particularly for unmanaged endpoints or | configuration up-to-date, particularly for unmanaged endpoints or | |||
endpoints that move between networks. [RFC7050] introduces the first | endpoints that move between networks. [RFC7050] introduces the first | |||
DNS64-based mechanism for PREF64 discovery based on [RFC7051] | DNS64-based mechanism for PREF64 discovery per the analysis described | |||
analysis. However, subsequent methods have been developed to address | in [RFC7051]. However, subsequent methods have been developed to | |||
the [RFC7050] limitations. | address the limitations of the mechanism described in [RFC7050]. | |||
For instance, [RFC8781] defines a Neighbor Discovery [RFC4861] option | For instance, [RFC8781] defines a Neighbor Discovery [RFC4861] option | |||
for Router Advertisements (RAs) to convey PREF64 information to | for Router Advertisements (RAs) to convey PREF64 information to | |||
hosts. This approach offers several advantages (Section 3 of | hosts. This approach offers several advantages (Section 3 of | |||
[RFC8781]), including fate sharing with other host network | [RFC8781]), including fate sharing with other host network | |||
configuration parameters. | configuration parameters. | |||
Due to fundamental shortcomings of the [RFC7050] mechanism | Due to fundamental shortcomings of the mechanism defined in [RFC7050] | |||
(Section 4), [RFC8781] is the preferred solution for new deployments. | (see Section 4 for more details), [RFC8781] describes the preferred | |||
Implementations should strive for consistent PREF64 acquisition | solution for new deployments. Implementations should strive for | |||
methods. The DNS64-based mechanism of [RFC7050] should be employed | consistent PREF64 acquisition methods. The DNS64-based mechanism of | |||
only when RA-based PREF64 delivery is unavailable or as a fallback | [RFC7050] should be employed only when RA-based PREF64 delivery is | |||
for legacy systems incapable of processing the PREF64 RA Option. | unavailable or as a fallback for legacy systems incapable of | |||
processing the PREF64 RA Option. | ||||
2. Terminology | 2. Terminology | |||
DNS64: A mechanism for synthesizing AAAA records from A records, | DNS64: A mechanism for synthesizing AAAA records from A records, | |||
defined in [RFC6147]. | defined in [RFC6147]. | |||
NAT64: A mechanism for translating IPv6 packets to IPv4 packets, and | NAT64: A mechanism for translating IPv6 packets to IPv4 packets, and | |||
vice versa. The translation is done by translating the packet | vice versa. The translation is done by translating the packet | |||
headers according to the IP/ICMP Translation Algorithm defined in | headers according to the IP/ICMP Translation Algorithm defined in | |||
[RFC7915]. NAT64 translators can operate in stateful mode | [RFC7915]. NAT64 translators can operate in stateful mode | |||
[RFC6144] or stateless mode [RFC6877] (e.g., customer-side | [RFC6144] or stateless mode [RFC6877] (e.g., customer-side | |||
translator (CLAT)). This document uses "NAT64" as a generalized | translator (CLAT)). This document uses "NAT64" as a generalized | |||
term for a translator, which uses the stateless IP/ICMP | term for a translator, which uses the stateless IP/ICMP | |||
Translation Algorithm defined in [RFC7915] and operates within a | Translation Algorithm defined in [RFC7915] and operates within a | |||
framework for IPv4/IPv6 translation described in [RFC6144]. | framework for IPv4/IPv6 translation described in [RFC6144]. | |||
PREF64 (Pref64::/n or NAT64 prefix): An IPv6 prefix used for IPv6 | PREF64: Pref64::/n or NAT64 prefix. An IPv6 prefix used for IPv6 | |||
address synthesis and for translating network addresses and | address synthesis and for translating network addresses and | |||
protocols from IPv6 clients to IPv4 servers using the algorithm | protocols from IPv6 clients to IPv4 servers using the algorithm | |||
defined in [RFC6052]. | defined in [RFC6052]. | |||
Router Advertisement (RA): A packet used by Neighbor Discovery | RA: Router Advertisement. A packet used by Neighbor Discovery | |||
[RFC4861] and SLAAC to advertise the presence of the routers, | [RFC4861] and SLAAC to advertise the presence of the routers, | |||
together with other IPv6 configuration information. | together with other IPv6 configuration information. | |||
SLAAC: Stateless Address Autoconfiguration [RFC4862]. | SLAAC: Stateless Address Autoconfiguration [RFC4862]. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Recommendations for PREF64 Discovery | 3. Recommendations for PREF64 Discovery | |||
3.1. Deployment Recommendations for Endpoints | 3.1. Deployment Recommendations for Endpoints | |||
Endpoints SHOULD attempt to obtain PREF64 information from RAs per | Endpoints SHOULD attempt to obtain PREF64 information from RAs per | |||
[RFC8781], instead of using the [RFC7050] method. In the absence of | [RFC8781], instead of using the method described in [RFC7050]. In | |||
the PREF64 information in RAs, an endpoint MAY choose to fall back to | the absence of the PREF64 information in RAs, an endpoint MAY choose | |||
the mechanism defined in [RFC7050]. This recommendation to prefer | to fall back to the mechanism defined in [RFC7050]. This | |||
the [RFC8781] mechanism over the one defined in [RFC7050] is | recommendation to prefer the mechanism defined in [RFC8781] over the | |||
consistent with Section 5.1 of [RFC8781]. | one defined in [RFC7050] is consistent with Section 5.1 of [RFC8781]. | |||
3.2. Deployment Recommendations for Operators | 3.2. Deployment Recommendations for Operators | |||
Network operators deploying NAT64 SHOULD provide PREF64 information | Network operators deploying NAT64 SHOULD provide PREF64 information | |||
in Router Advertisements per [RFC8781]. | in Router Advertisements per [RFC8781]. | |||
3.2.1. Mobile Network Considerations | 3.2.1. Mobile Network Considerations | |||
While [RFC8781] support is widely integrated into modern operating | While support for the option specified in [RFC8781] is widely | |||
systems on mobile endpoints, equipment deployed in mobile network | integrated into modern operating systems on mobile endpoints, | |||
environments often lacks abilities to include the PREF64 Option into | equipment deployed in mobile network environments often lacks | |||
RAs. Therefore, the immediate deployment and enablement of PREF64 by | abilities to include the PREF64 Option into RAs. Therefore, the | |||
mobile operators may not currently be feasible and the | immediate deployment and enablement of PREF64 by mobile operators may | |||
recommendations outlined in this document are not presently | not currently be feasible and the recommendations outlined in this | |||
applicable to mobile network operators. These environments are | document are not presently applicable to mobile network operators. | |||
encouraged to incorporate [RFC8781] when made practical by | These environments are encouraged to incorporate the option specified | |||
infrastructure upgrades or software stack feature additions. | in [RFC8781] when made practical by infrastructure upgrades or | |||
software stack feature additions. | ||||
3.2.2. Migration Considerations | 3.2.2. Migration Considerations | |||
Transitioning from the [RFC7050] heuristic to using the [RFC8781] | Transitioning from the heurisitic procedure in [RFC7050] to using the | |||
approach might require a period of time where both mechanisms | approach in [RFC8781] might require a period of time where both | |||
coexist. How long this may take depends on the endpoint footprint, | mechanisms coexist. How long this may take depends on the endpoint | |||
particularly the presence and number of endpoints running outdated | footprint, particularly the presence and number of endpoints running | |||
operating systems that do not support [RFC8781]. Operators are | outdated operating systems that do not support the option in | |||
advised to take those factors into account prior to removing support | [RFC8781]. Operators are advised to take those factors into account | |||
for the [RFC7050] heuristic, noting that it is still safe to add | prior to removing support for the heurisitc procedure in [RFC7050], | |||
support for the [RFC8781] approach since endpoints that support it | noting that it is still safe to add support for the approach in | |||
will always prefer it over [RFC7050] if they follow RFC requirements. | [RFC8781] since endpoints that support it will always prefer it over | |||
[RFC7050] if they follow RFC requirements. | ||||
Migrating away from DNS64-based discovery also reduces dependency on | Migrating away from DNS64-based discovery also reduces dependency on | |||
DNS64 in general, thereby eliminating DNSSEC and DNS64 | DNS64 in general, thereby eliminating DNSSEC and DNS64 | |||
incompatibility concerns (Section 6.2 of [RFC6147]). | incompatibility concerns (Section 6.2 of [RFC6147]). | |||
4. Existing Issues with RFC 7050 | 4. Existing Issues with RFC 7050 | |||
DNS-based discovery of the NAT64 prefix introduces some challenges, | DNS-based discovery of the NAT64 prefix introduces some challenges, | |||
which make this approach less preferable than the latest developed | which make this approach less preferable than the latest developed | |||
alternatives (such as the PREF64 RA Option [RFC8781]). This section | alternatives (such as the PREF64 RA Option [RFC8781]). This section | |||
outlines the key issues associated with [RFC7050] with a focus on | outlines the key issues associated with [RFC7050] with a focus on | |||
those not discussed in [RFC7050] or in the analysis of solutions for | those not discussed in [RFC7050] or in the analysis of solutions for | |||
hosts to discover the NAT64 prefix [RFC7051]. | hosts to discover the NAT64 prefix [RFC7051]. | |||
Signalling PREF64 in the RA option addresses all issues outlined in | Signalling PREF64 in the RA Option addresses all issues outlined in | |||
this section (see Section 3 of [RFC8781] for details). | this section (see Section 3 of [RFC8781] for details). | |||
4.1. Dependency on Network-Provided Recursive Resolvers | 4.1. Dependency on Network-Provided Recursive Resolvers | |||
Fundamentally, the presence of the NAT64 and the exact value of the | Fundamentally, the NAT64 function and the exact value of the prefix | |||
prefix used for the translation are network-specific attributes. | used for the translation are network-specific attributes. Therefore, | |||
Therefore, [RFC7050] requires the endpoint discovering the prefix to | [RFC7050] requires the endpoint discovering the prefix to use the | |||
use the DNS64 resolvers provided by the network. If the device or an | DNS64 resolvers provided by the network. If the device or an | |||
application is configured to use other recursive resolvers or runs a | application is configured to use other recursive resolvers or runs a | |||
local recursive resolver, the corresponding name resolution APIs and | local recursive resolver, the corresponding name resolution APIs and | |||
libraries are required to recognize 'ipv4only.arpa.' as a special | libraries are required to recognize 'ipv4only.arpa.' as a special | |||
name and give it special treatment. This issue and remediation | name and give it special treatment. This issue and remediation | |||
approach are discussed in [RFC8880]. However, it has been observed | approach are discussed in [RFC8880]. However, it has been observed | |||
that very few [RFC7050] implementations support the [RFC8880] | that very few implementations of the method described in [RFC7050] | |||
requirements for special treatment of 'ipv4only.arpa.'. As a result, | support the requirements specified in [RFC8880] for special treatment | |||
configuring such systems and applications to use resolvers other than | of 'ipv4only.arpa.'. As a result, configuring such systems and | |||
the one provided by the network breaks the PREF64 discovery, leading | applications to use resolvers other than the one provided by the | |||
to degraded user experience. | network breaks the PREF64 discovery, leading to degraded user | |||
experience. | ||||
VPN applications may override the endpoint's DNS configuration, for | VPN applications may override the endpoint's DNS configuration, for | |||
example, by configuring enterprise DNS servers as the node's | example, by configuring enterprise DNS servers as the node's | |||
recursive resolvers and forcing all name resolution through the VPN. | recursive resolvers and forcing all name resolution through the VPN. | |||
These enterprise DNS servers typically lack DNS64 functionality and | These enterprise DNS servers typically lack DNS64 functionality and | |||
therefore cannot provide information about the PREF64 used within the | therefore cannot provide information about the PREF64 used within the | |||
local network. If the VPN is configured in so-called "split | local network. If the VPN is configured in so-called "split | |||
tunneling" mode (when only a subset of network traffic is routed into | tunneling" mode (when only a subset of network traffic is routed into | |||
the VPN tunnel), endpoints may not discover the necessary PREF64, | the VPN tunnel), endpoints may not discover the necessary PREF64, | |||
which negatively impacts their connectivity on IPv6-only networks. | which negatively impacts their connectivity on IPv6-only networks. | |||
If both the network-provided DNS64 and the endpoint's resolver happen | If both the network-provided DNS64 and the endpoint's resolver happen | |||
to utilize the Well-Known Prefix (64:ff9b::/96) [RFC6052], the | to utilize the Well-Known Prefix (64:ff9b::/96) [RFC6052], the | |||
endpoint would end up using a PREF64 that's valid for the current | endpoint would end up using a PREF64 that's valid for the current | |||
network. However, if the endpoint changes its network attachment, it | network. However, if the endpoint changes its network attachment, it | |||
can't detect if the new network lacks NAT64 entirely or uses a | can't detect if the new network lacks NAT64 entirely or uses a | |||
network-specific prefix (NSP) [RFC6144] for NAT64. | network-specific prefix (NSP) [RFC6144] for NAT64. | |||
Signalling PREF64 in an RA option decouples the PREF64 discovery from | Signalling PREF64 in an RA Option decouples the PREF64 discovery from | |||
the host's DNS resolver configuration. | the host's DNS resolver configuration. | |||
4.2. Network Stack Initialization Delay | 4.2. Network Stack Initialization Delay | |||
When using SLAAC, an IPv6 host typically requires a single RA to | When using SLAAC, an IPv6 host typically requires a single RA to | |||
acquire its network configuration. For IPv6-only endpoints, timely | acquire its network configuration. For IPv6-only endpoints, timely | |||
PREF64 discovery is critical, particularly for those performing local | PREF64 discovery is critical, particularly for those performing local | |||
DNS64 or NAT64 functions, such as CLAT [RFC6877]. Until a PREF64 is | DNS64 or NAT64 functions, such as CLAT [RFC6877]. Until a PREF64 is | |||
obtained, the endpoint's IPv4-only applications and communication to | obtained, the endpoint's IPv4-only applications and communication to | |||
IPv4-only destinations are impaired. The mechanism defined in | IPv4-only destinations are impaired. The mechanism defined in | |||
skipping to change at line 329 ¶ | skipping to change at line 333 ¶ | |||
security challenges, which are discussed below. | security challenges, which are discussed below. | |||
4.5.1. Definition of Secure Channel | 4.5.1. Definition of Secure Channel | |||
[RFC7050] requires a node's communication channel with a DNS64 server | [RFC7050] requires a node's communication channel with a DNS64 server | |||
to be a "secure channel", which it defines to mean "a communication | to be a "secure channel", which it defines to mean "a communication | |||
channel a node has between itself and a DNS64 server protecting DNS | channel a node has between itself and a DNS64 server protecting DNS | |||
protocol-related messages from interception and tampering". This | protocol-related messages from interception and tampering". This | |||
need is redundant when another communication mechanism of | need is redundant when another communication mechanism of | |||
IPv6-related configuration, specifically RAs, can already be defended | IPv6-related configuration, specifically RAs, can already be defended | |||
against tampering, for example, by enabling RA-Guard [RFC6105]. | against tampering, for example, by enabling RA-Guard [RFC6105]. When | |||
Requiring nodes to implement two defense mechanisms when only one is | the mechanism defined in [RFC8781] is used in place of the one | |||
necessary when [RFC8781] is used in place of [RFC7050] creates an | defined in [RFC7050], nodes only need to implement one defense | |||
unnecessary risk. | mechanism; requiring nodes to implement two defense mechanisms | |||
creates an unnecessary risk. | ||||
4.5.2. Secure Channel Example of IPsec | 4.5.2. Secure Channel Example of IPsec | |||
One of the two examples that [RFC7050] defines to qualify a | One of the two examples that [RFC7050] defines to qualify a | |||
communication channel with a DNS64 server is the use of an "IPsec- | communication channel with a DNS64 server is the use of an "IPsec- | |||
based virtual private network (VPN) tunnel". As of the time of this | based virtual private network (VPN) tunnel". As of the time of this | |||
writing, this is not supported as a practice by any common operating | writing, this is not supported as a practice by any common operating | |||
system DNS client. While they could, there have also since been | system DNS client. While they could, there have also since been | |||
multiple mechanisms defined for performing DNS-specific encryption, | multiple mechanisms defined for performing DNS-specific encryption, | |||
such as those defined in [RFC9499], that would be more appropriately | such as those defined in [RFC9499], that would be more appropriately | |||
skipping to change at line 430 ¶ | skipping to change at line 435 ¶ | |||
[RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. | [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. | |||
Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, | Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, | |||
DOI 10.17487/RFC6105, February 2011, | DOI 10.17487/RFC6105, February 2011, | |||
<https://www.rfc-editor.org/info/rfc6105>. | <https://www.rfc-editor.org/info/rfc6105>. | |||
[RFC6144] Baker, F., Li, X., Bao, C., and K. Yin, "Framework for | [RFC6144] Baker, F., Li, X., Bao, C., and K. Yin, "Framework for | |||
IPv4/IPv6 Translation", RFC 6144, DOI 10.17487/RFC6144, | IPv4/IPv6 Translation", RFC 6144, DOI 10.17487/RFC6144, | |||
April 2011, <https://www.rfc-editor.org/info/rfc6144>. | April 2011, <https://www.rfc-editor.org/info/rfc6144>. | |||
[RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, "Stateful | ||||
NAT64: Network Address and Protocol Translation from IPv6 | ||||
Clients to IPv4 Servers", RFC 6146, DOI 10.17487/RFC6146, | ||||
April 2011, <https://www.rfc-editor.org/info/rfc6146>. | ||||
[RFC6147] Bagnulo, M., Sullivan, A., Matthews, P., and I. van | [RFC6147] Bagnulo, M., Sullivan, A., Matthews, P., and I. van | |||
Beijnum, "DNS64: DNS Extensions for Network Address | Beijnum, "DNS64: DNS Extensions for Network Address | |||
Translation from IPv6 Clients to IPv4 Servers", RFC 6147, | Translation from IPv6 Clients to IPv4 Servers", RFC 6147, | |||
DOI 10.17487/RFC6147, April 2011, | DOI 10.17487/RFC6147, April 2011, | |||
<https://www.rfc-editor.org/info/rfc6147>. | <https://www.rfc-editor.org/info/rfc6147>. | |||
[RFC6877] Mawatari, M., Kawashima, M., and C. Byrne, "464XLAT: | [RFC6877] Mawatari, M., Kawashima, M., and C. Byrne, "464XLAT: | |||
Combination of Stateful and Stateless Translation", | Combination of Stateful and Stateless Translation", | |||
RFC 6877, DOI 10.17487/RFC6877, April 2013, | RFC 6877, DOI 10.17487/RFC6877, April 2013, | |||
<https://www.rfc-editor.org/info/rfc6877>. | <https://www.rfc-editor.org/info/rfc6877>. | |||
End of changes. 13 change blocks. | ||||
54 lines changed or deleted | 54 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |