| 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/ | ||||