rfc6731v1.txt | rfc6731.txt | |||
---|---|---|---|---|
skipping to change at page 2, line 30 | skipping to change at page 2, line 30 | |||
3.3. VPN Scenario . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.3. VPN Scenario . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.4. Dual-Stack Accesses . . . . . . . . . . . . . . . . . . . 8 | 3.4. Dual-Stack Accesses . . . . . . . . . . . . . . . . . . . 8 | |||
4. Improved RDNSS Selection . . . . . . . . . . . . . . . . . . . 8 | 4. Improved RDNSS Selection . . . . . . . . . . . . . . . . . . . 8 | |||
4.1. Procedure for Prioritizing RDNSSes and Handling | 4.1. Procedure for Prioritizing RDNSSes and Handling | |||
Responses . . . . . . . . . . . . . . . . . . . . . . . . 8 | Responses . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.2. RDNSS Selection DHCPv6 Option . . . . . . . . . . . . . . 11 | 4.2. RDNSS Selection DHCPv6 Option . . . . . . . . . . . . . . 11 | |||
4.3. RDNSS Selection DHCPv4 Option . . . . . . . . . . . . . . 13 | 4.3. RDNSS Selection DHCPv4 Option . . . . . . . . . . . . . . 13 | |||
4.4. Scalability Considerations . . . . . . . . . . . . . . . . 15 | 4.4. Scalability Considerations . . . . . . . . . . . . . . . . 15 | |||
4.5. Limitations on Use . . . . . . . . . . . . . . . . . . . . 15 | 4.5. Limitations on Use . . . . . . . . . . . . . . . . . . . . 15 | |||
4.6. Coexistence of Various RDNSS Configuration Tools . . . . . 16 | 4.6. Coexistence of Various RDNSS Configuration Tools . . . . . 16 | |||
4.7. Considerations on Follow-Up Queries . . . . . . . . . . . 16 | 4.7. Considerations on Follow-Up Queries . . . . . . . . . . . 17 | |||
4.8. Closing Network Interfaces and Local Caches . . . . . . . 17 | 4.8. Closing Network Interfaces and Local Caches . . . . . . . 17 | |||
5. Example of a Node Behavior . . . . . . . . . . . . . . . . . . 17 | 5. Example of a Node Behavior . . . . . . . . . . . . . . . . . . 17 | |||
6. Considerations for Network Administrators . . . . . . . . . . 19 | 6. Considerations for Network Administrators . . . . . . . . . . 19 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | |||
8.1. Attack Vectors . . . . . . . . . . . . . . . . . . . . . . 20 | 8.1. Attack Vectors . . . . . . . . . . . . . . . . . . . . . . 20 | |||
8.2. Trust Levels of Network Interfaces . . . . . . . . . . . . 21 | 8.2. Trust Levels of Network Interfaces . . . . . . . . . . . . 21 | |||
8.3. Importance of Following the Algorithm . . . . . . . . . . 21 | 8.3. Importance of Following the Algorithm . . . . . . . . . . 21 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . . 21 | 9.1. Normative References . . . . . . . . . . . . . . . . . . . 21 | |||
skipping to change at page 3, line 7 | skipping to change at page 3, line 7 | |||
A.2. Search List Option for DNS Forward Lookup Decisions . . . 23 | A.2. Search List Option for DNS Forward Lookup Decisions . . . 23 | |||
A.3. More-Specific Routes for Reverse Lookup Decisions . . . . 24 | A.3. More-Specific Routes for Reverse Lookup Decisions . . . . 24 | |||
A.4. Longest Matching Prefix for Reverse Lookup Decisions . . . 24 | A.4. Longest Matching Prefix for Reverse Lookup Decisions . . . 24 | |||
Appendix B. DNSSEC and Multiple Answers Validating with | Appendix B. DNSSEC and Multiple Answers Validating with | |||
Different Trust Anchors . . . . . . . . . . . . . . . 24 | Different Trust Anchors . . . . . . . . . . . . . . . 24 | |||
Appendix C. Pseudocode for RDNSS Selection . . . . . . . . . . . 24 | Appendix C. Pseudocode for RDNSS Selection . . . . . . . . . . . 24 | |||
Appendix D. Acknowledgements . . . . . . . . . . . . . . . . . . 29 | Appendix D. Acknowledgements . . . . . . . . . . . . . . . . . . 29 | |||
1. Introduction | 1. Introduction | |||
A multi-interfaced node faces several problems a single-homed node | A multi-interfaced node (MIF node) faces several problems a single- | |||
does not encounter, as is described in [RFC6418]. This document | homed node does not encounter, as is described in [RFC6418]. This | |||
studies in detail the problems private namespaces might cause for | document studies in detail the problems private namespaces might | |||
multi-interfaced nodes and provides a solution. The node might be | cause for multi-interfaced nodes and provides a solution. The node | |||
implemented as a host or as a router. | might be implemented as a host or as a router. | |||
We start from the premise that network operators sometimes include | We start from the premise that network operators sometimes include | |||
private, but still globally unique, namespaces in the answers they | private, but still globally unique, namespaces in the answers they | |||
provide from Recursive DNS Servers (RDNSSes) and that those private | provide from Recursive DNS Servers (RDNSSes) and that those private | |||
namespaces are at least as useful to nodes as the answers from the | namespaces are at least as useful to nodes as the answers from the | |||
public DNS. When private namespaces are visible for a node, some | public DNS. When private namespaces are visible for a node, some | |||
RDNSSes have information other RDNSSes do not have. The node ought | RDNSSes have information other RDNSSes do not have. The node ought | |||
to be able to query the RDNSS that can resolve the query regardless | to be able to query the RDNSS that can resolve the query regardless | |||
of whether the answer comes from the public DNS or a private | of whether the answer comes from the public DNS or a private | |||
namespace. | namespace. | |||
skipping to change at page 3, line 45 | skipping to change at page 3, line 45 | |||
additional routing and source and destination address selection | additional routing and source and destination address selection | |||
policies (e.g., [RFC4191] and [RFC3442]. | policies (e.g., [RFC4191] and [RFC3442]. | |||
This document is organized in the following manner. Background | This document is organized in the following manner. Background | |||
information about problem descriptions and example deployment | information about problem descriptions and example deployment | |||
scenarios are included in Sections 2 and 3. Section 4 contains all | scenarios are included in Sections 2 and 3. Section 4 contains all | |||
normative descriptions for DHCP options and node behavior. | normative descriptions for DHCP options and node behavior. | |||
Section 4.4 contains informational considerations about scalability. | Section 4.4 contains informational considerations about scalability. | |||
Informative Section 5 illustrates behavior of a node implementing | Informative Section 5 illustrates behavior of a node implementing | |||
functionality described in Section 4. Section 6 contains normative | functionality described in Section 4. Section 6 contains normative | |||
guidelines related to creation of private namespaces. Informational | guidelines related to creation of private namespaces. The IANA | |||
Section 8 summarizes identified security considerations. | considerations are in Section 7. Informational Section 8 summarizes | |||
identified security considerations. | ||||
Appendix A describes best current practices that are possible with | Appendix A describes best current practices that are possible with | |||
tools preceding this document and that are possibilities on networks | tools preceding this document and that are possibilities on networks | |||
not supporting the solution described in this document. | not supporting the solution described in this document. Appendix B | |||
discusses a scenario where multiple answers are possible to validate, | ||||
but with different trust anchors. Appendix C illustrates with | ||||
pseudocode the functionality described in Section 4. | ||||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
2. Private Namespaces and Problems for Multi-Interfaced Nodes | 2. Private Namespaces and Problems for Multi-Interfaced Nodes | |||
This section describes two private namespace scenarios related to | This section describes two private namespace scenarios related to | |||
skipping to change at page 9, line 12 | skipping to change at page 9, line 12 | |||
A resolver SHALL build a preference list of RDNSSes it will contact | A resolver SHALL build a preference list of RDNSSes it will contact | |||
depending on the query. To build the list in an optimal way, a node | depending on the query. To build the list in an optimal way, a node | |||
SHALL ask, with the DHCP options defined in Sections 4.2 and the 4.3, | SHALL ask, with the DHCP options defined in Sections 4.2 and the 4.3, | |||
which RDNSSes of each network interface are most likely to be able to | which RDNSSes of each network interface are most likely to be able to | |||
successfully serve forward lookup requests matching to a specific | successfully serve forward lookup requests matching to a specific | |||
domain or reverse (PTR record) lookup requests matching to specific | domain or reverse (PTR record) lookup requests matching to specific | |||
network addresses (later referred as "network"). | network addresses (later referred as "network"). | |||
A resolver lacking more specific information can assume that all | A resolver lacking more specific information can assume that all | |||
information is available from any RDNSS of any network interface. | information is available from any RDNSS of any network interface. | |||
The RDNSSes learned by other RDNSS address configuration methods MUST | The RDNSSes learned by other RDNSS address configuration methods can | |||
be handled as default, the medium, preference default RDNSSes (see | be considered as default RDNSSes, but preference-wise, they MUST be | |||
also Section 4.6). | handled as medium preference RDNSSes (see also Section 4.6). | |||
When a DNS query needs to be made, the resolver MUST give highest | When a DNS query needs to be made, the resolver MUST give highest | |||
preference to the RDNSSes explicitly known to serve a matching domain | preference to the RDNSSes explicitly known to serve a matching domain | |||
or network. The resolver MUST take into account differences in trust | or network. The resolver MUST take into account differences in trust | |||
levels (see Section 8.2) of pieces of received RDNSS selection | levels (see Section 8.2) of pieces of received RDNSS selection | |||
information. The resolver MUST prefer RDNSSes of trusted interfaces. | information. The resolver MUST prefer RDNSSes of trusted interfaces. | |||
The RDNSSes of untrusted interfaces can be of highest preference only | The RDNSSes of untrusted interfaces can be of highest preference only | |||
if the trusted interfaces specifically configures low preference | if the trusted interfaces specifically configures low preference | |||
RDNSSes. The non-exhaustive list of cases in Figure 4 illustrates | RDNSSes. The non-exhaustive list of cases in Figure 4 illustrates | |||
how the different trust levels of received RDNSS selection | how the different trust levels of received RDNSS selection | |||
skipping to change at page 10, line 29 | skipping to change at page 10, line 29 | |||
--------------------------+------------------------+----------------- | --------------------------+------------------------+----------------- | |||
4. Low preference default | Medium preference | Default: | 4. Low preference default | Medium preference | Default: | |||
| default | B, then A | | default | B, then A | |||
Specific domains | | Specific: | Specific domains | | Specific: | |||
| | A, then B | | | A, then B | |||
--------------------------+------------------------+----------------- | --------------------------+------------------------+----------------- | |||
Figure 4: RDNSS Selection in the Case of Different Trust Levels | Figure 4: RDNSS Selection in the Case of Different Trust Levels | |||
Because DNSSEC provides cryptographic assurance of the integrity of | Because DNSSEC provides cryptographic assurance of the integrity of | |||
DNS data, data that can be validated under DNSSEC is necessarily to | DNS data, it is necessary to prefer data that can be validated under | |||
be preferred over data that cannot be. There are two ways that a | DNSSEC over data that cannot. There are two ways that a node can | |||
node can determine that data is valid under DNSSEC. The first is to | determine that data is valid under DNSSEC. The first is to perform | |||
perform DNSSEC validation itself. The second is to have a secure | DNSSEC validation itself. The second is to have a secure connection | |||
connection to an authenticated RDNSS and to rely on that RDNSS to | to an authenticated RDNSS and to rely on that RDNSS to perform DNSSEC | |||
perform DNSSEC validation (signaling that it has done so using the AD | validation (signaling that it has done so using the AD bit). DNSSEC | |||
bit). DNSSEC is necessary to detect forged responses, and without it | is necessary to detect forged responses, and without it any DNS | |||
any DNS response could be forged or altered. Unless the DNS | response could be forged or altered. Unless the DNS responses have | |||
responses have been validated with DNSSEC, a node cannot make a | been validated with DNSSEC, a node cannot make a decision to prefer | |||
decision to prefer data from any interface with any great assurance. | data from any interface with any great assurance. | |||
A node SHALL send requests to RDNSSes in the order defined by the | A node SHALL send requests to RDNSSes in the order defined by the | |||
preference list until an acceptable reply is received, all replies | preference list until an acceptable reply is received, all replies | |||
are received, or a timeout occurs. In the case of a requested name | are received, or a timeout occurs. In the case of a requested name | |||
matching to a specific domain or network rule accepted from any | matching to a specific domain or network rule accepted from any | |||
interface, a DNSSEC-aware resolver MUST NOT proceed with a reply that | interface, a DNSSEC-aware resolver MUST NOT proceed with a reply that | |||
cannot be validated using DNSSEC until all RDNSSes on the preference | cannot be validated using DNSSEC until all RDNSSes on the preference | |||
list have been contacted or timed out. This protects against | list have been contacted or timed out. This protects against | |||
possible redirection attacks. In the case of the requested name not | possible redirection attacks. In the case of the requested name not | |||
matching to any specific domain or network, the first received | matching to any specific domain or network, the first received | |||
skipping to change at page 16, line 20 | skipping to change at page 16, line 20 | |||
For RDNSS selection purposes, information received from all tools | For RDNSS selection purposes, information received from all tools | |||
MUST be combined together into a single list, as discussed in | MUST be combined together into a single list, as discussed in | |||
Section 4.1. | Section 4.1. | |||
It can happen that DHCPv4 and DHCPv6 are providing conflicting RDNSS | It can happen that DHCPv4 and DHCPv6 are providing conflicting RDNSS | |||
selection information on the same or on equally trusted interfaces. | selection information on the same or on equally trusted interfaces. | |||
In such a case, DHCPv6 MUST be preferred unless DHCPv4 is utilizing | In such a case, DHCPv6 MUST be preferred unless DHCPv4 is utilizing | |||
additional security frameworks for protecting the messages. | additional security frameworks for protecting the messages. | |||
The RDNSSes learned via tools other than OPTION_DNS_SERVER_SELECT | The RDNSSes learned via tools other than the DHCPv4 RDNSS Selection | |||
MUST be handled as default RDNSSes, with medium preference, when | option and the DHCPv6 OPTION_RDNSS_SELECTION MUST be handled as | |||
building a list of RDNSSes to talk to (see Section 4.1). | default RDNSSes, with medium preference, when building a list of | |||
RDNSSes to talk to (see Section 4.1). | ||||
The non-exhaustive list of possible other sources for RDNSS address | The non-exhaustive list of possible other sources for RDNSS address | |||
configuration are: | configuration are: | |||
(1) DHCPv6 OPTION_DNS_SERVERS defined in [RFC3646]. | (1) DHCPv6 OPTION_DNS_SERVERS defined in [RFC3646]. | |||
(2) DHCPv4 Domain Name Server Option defined in [RFC2132]. | (2) DHCPv4 Domain Server option defined in [RFC2132]. | |||
(3) IPv6 Router Advertisement RDNSS Option defined in [RFC6106]. | (3) IPv6 Router Advertisement RDNSS Option defined in [RFC6106]. | |||
When OPTION_RDNSS_SELECTION contains a default RDNSS address and | When the RDNSS selection option contains a default RDNSS address and | |||
other sources are providing RNDSS addresses, the resolver MUST make | other sources are providing RNDSS addresses, the resolver MUST make | |||
the decision about which one to prefer based on the RDNSS preference | the decision about which one to prefer based on the RDNSS preference | |||
field value. If OPTION_RDNSS_SELECTION defines medium preference, | field value. If the RDNSS selection option defines medium | |||
then the RDNSS from OPTION_RDNSS_SELECTION SHALL be selected. | preference, then the RDNSS from the RDNSS selection option SHALL be | |||
selected. | ||||
If multiple sources are providing same RDNSS(es) IP address(es), each | If multiple sources are providing same RDNSS(es) IP address(es), each | |||
address MUST be added to the RDNSS list only once. | address MUST be added to the RDNSS list only once. | |||
If a node had indicated support for OPTION_RDNSS_SELECTION in a | If a node had indicated support for OPTION_RDNSS_SELECTION in a | |||
DHCPv6 request, the DHCPv6 server MAY omit sending of | DHCPv6 request, the DHCPv6 server MAY omit sending of | |||
OPTION_DNS_SERVERS. This enables offloading use case where the | OPTION_DNS_SERVERS. This enables offloading use case where the | |||
network administrator wishes to only advertise low preference default | network administrator wishes to only advertise low preference default | |||
RDNSSes. | RDNSSes. | |||
skipping to change at page 19, line 9 | skipping to change at page 19, line 9 | |||
4. The node opens its second network interface 2. | 4. The node opens its second network interface 2. | |||
5. The node obtains domain 'domain2.example.com' and IPv6 network | 5. The node obtains domain 'domain2.example.com' and IPv6 network | |||
information, say '1.8.b.d.0.1.0.0.2.ip6.arpa' for the new | information, say '1.8.b.d.0.1.0.0.2.ip6.arpa' for the new | |||
interface 2 from the DHCPv6 server. | interface 2 from the DHCPv6 server. | |||
6. The node stores the learned domains and networks for later use. | 6. The node stores the learned domains and networks for later use. | |||
Figure 8 illustrates how a resolver uses the learned domain | Figure 8 illustrates how a resolver uses the learned domain | |||
information. Network information use for reverse lookups is not | information. Network information use for reverse lookups is not | |||
illustrated, but that would go as the Figure 7 example. | illustrated, but that would be similar to the example in Figure 8. | |||
Application Node RDNSS RDNSS | Application Node RDNSS RDNSS | |||
on interface 1 on interface 2 | on interface 1 on interface 2 | |||
| | | | | | | | | | |||
(1) |--Name REQ-->| | | | (1) |--Name REQ-->| | | | |||
| | | | | | | | | | |||
| +----------------+ | | | | +----------------+ | | | |||
(2) | | RDNSS | | | | (2) | | RDNSS | | | | |||
| | prioritization | | | | | | prioritization | | | | |||
| +----------------+ | | | | +----------------+ | | | |||
skipping to change at page 28, line 36 | skipping to change at page 28, line 36 | |||
/* Sort the RDNSSes into preference order. */ | /* Sort the RDNSSes into preference order. */ | |||
/* This is the function with which this pseudocode starts. */ | /* This is the function with which this pseudocode starts. */ | |||
bubble_sort_rdnsses( &rdnss_list[0], rdnsses, query ); | bubble_sort_rdnsses( &rdnss_list[0], rdnsses, query ); | |||
/* Go thourgh all RDNSSes or until valid response is found. */ | /* Go thourgh all RDNSSes or until valid response is found. */ | |||
for (i = 0; i < rdnsses; i++) | for (i = 0; i < rdnsses; i++) | |||
{ | { | |||
/* Use the highest preference RDNSS first. */ | /* Use the highest preference RDNSS first. */ | |||
response = send_and_vaidate_dns_query( rndss_list[i], query); | response = send_and_validate_dns_query( rndss_list[i], query); | |||
/* If DNSSEC validation is used. */ | /* Check if DNSSEC validation is in use, and if so, validate the | |||
received response. */ | ||||
if (dnssec_in_use) | if (dnssec_in_use) | |||
{ | { | |||
response = dnssec_validate(response); | response = dnssec_validate(response); | |||
/* If response is validated, use that. Otherwise, proceed to next | /* If response is validated, use that. Otherwise, proceed to next | |||
RDNSS. */ | RDNSS. */ | |||
if (response) return response; | if (response) return response; | |||
else continue; | else continue; | |||
} | } | |||
/* If acceptable response has been found, return it. */ | /* If acceptable response has been found, return it. */ | |||
if (response) return response; | if (response) return response; | |||
} | } | |||
return NULL; | ||||
return NULL; | ||||
} | } | |||
Appendix D. Acknowledgements | Appendix D. Acknowledgements | |||
The authors would like to thank the following people for their | The authors would like to thank the following people for their | |||
valuable feedback and improvement ideas: Mark Andrews, Jari Arkko, | valuable feedback and improvement ideas: Mark Andrews, Jari Arkko, | |||
Marcelo Bagnulo, Brian Carpenter, Stuart Cheshire, Lars Eggert, | Marcelo Bagnulo, Brian Carpenter, Stuart Cheshire, Lars Eggert, | |||
Stephan Farrell, Tomohiro Fujisaki, Brian Haberman, Peter Koch, | Stephan Farrell, Tomohiro Fujisaki, Brian Haberman, Peter Koch, | |||
Suresh Krishnan, Murray Kucherawy, Barry Leiba, Edward Lewis, Kurtis | Suresh Krishnan, Murray Kucherawy, Barry Leiba, Edward Lewis, Kurtis | |||
Lindqvist, Arifumi Matsumoto, Erik Nordmark, Steve Padgett, Fabien | Lindqvist, Arifumi Matsumoto, Erik Nordmark, Steve Padgett, Fabien | |||
End of changes. 15 change blocks. | ||||
33 lines changed or deleted | 40 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |