idnits 2.17.00 (12 Aug 2021) /tmp/idnits25337/draft-ietf-ipsecme-split-dns-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (July 19, 2017) is 1767 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'TBD IANA' is mentioned on line 306, but not defined == Missing Reference: 'TBD' is mentioned on line 426, but not defined == Unused Reference: 'RFC5890' is defined on line 449, but no explicit reference was found in the text Summary: 0 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network T. Pauly 3 Internet-Draft Apple Inc. 4 Intended status: Standards Track P. Wouters 5 Expires: January 20, 2018 Red Hat 6 July 19, 2017 8 Split DNS Configuration for IKEv2 9 draft-ietf-ipsecme-split-dns-01 11 Abstract 13 This document defines two Configuration Payload Attribute Types for 14 the IKEv2 protocol that add support for private DNS domains. These 15 domains should be resolved using DNS servers reachable through an 16 IPsec connection, while leaving all other DNS resolution unchanged. 17 This approach of resolving a subset of domains using non-public DNS 18 servers is referred to as "Split DNS". 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at http://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on January 20, 2018. 37 Copyright Notice 39 Copyright (c) 2017 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 56 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 3. Protocol Exchange . . . . . . . . . . . . . . . . . . . . . . 3 58 3.1. Configuration Request . . . . . . . . . . . . . . . . . . 4 59 3.2. Configuration Reply . . . . . . . . . . . . . . . . . . . 4 60 3.3. Mapping DNS Servers to Domains . . . . . . . . . . . . . 5 61 3.4. Example Exchanges . . . . . . . . . . . . . . . . . . . . 5 62 3.4.1. Simple Case . . . . . . . . . . . . . . . . . . . . . 5 63 3.4.2. Requesting Domains and DNSSEC trust anchors . . . . . 6 64 4. Payload Formats . . . . . . . . . . . . . . . . . . . . . . . 6 65 4.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type . . . . 6 66 4.2. INTERNAL_DNSSEC_TA Configuration Attribute . . . . . . . 7 67 5. Split DNS Usage Guidelines . . . . . . . . . . . . . . . . . 7 68 6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 69 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 70 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 71 8.1. Normative References . . . . . . . . . . . . . . . . . . 10 72 8.2. Informative References . . . . . . . . . . . . . . . . . 10 73 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 75 1. Introduction 77 Split DNS is a common configuration for secure tunnels, such as 78 Virtual Private Networks in which host machines private to an 79 organization can only be resolved using internal DNS resolvers 80 [RFC2775]. In such configurations, it is often desirable to only 81 resolve hosts within a set of private domains using the tunnel, while 82 letting resolutions for public hosts be handled by a device's default 83 DNS configuration. 85 The Internet Key Exchange protocol version 2 [RFC7296] negotiates 86 configuration parameters using Configuration Payload Attribute Types. 87 This document defines two Configuration Payload Attribute Types that 88 add support for trusted Split DNS domains. 90 The INTERNAL_DNS_DOMAIN attribute type is used to convey one or more 91 DNS domains that should be resolved only using the provided DNS 92 nameserver IP addresses, causing these requests to use the IPsec 93 connection. 95 The INTERNAL_DNSSEC_TA attribute type is used to convey DNSSEC trust 96 anchors for those domains. 98 When only a subset of traffic is routed into a private network using 99 an IPsec SA, these Configuration Payload options can be used to 100 define which private domains should be resolved through the IPsec 101 connection without affecting the client's global DNS resolution. 103 For the purposes of this document, DNS resolution servers accessible 104 through an IPsec connection will be referred to as "internal DNS 105 servers", and other DNS servers will be referred to as "external DNS 106 servers". 108 A client using these configuration payloads will be able to request 109 and receive Split DNS configurations using the INTERNAL_DNS_DOMAIN 110 and INTERNAL_DNSSEC_TA configuration attributes. The client device 111 can use the internal DNS server(s) for any DNS queries within the 112 assigned domains. DNS queries for other domains should be send to 113 regular external DNS server. 115 1.1. Requirements Language 117 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 118 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 119 document are to be interpreted as described in RFC 2119 [RFC2119]. 121 2. Background 123 Split DNS is a common configuration for enterprise VPN deployments, 124 in which only one or a few private DNS domains are accessible and 125 resolvable via an IPsec based VPN connection. 127 Other tunnel-establishment protocols already support the assignment 128 of Split DNS domains. For example, there are proprietary extensions 129 to IKEv1 that allow a server to assign Split DNS domains to a client. 130 However, the IKEv2 standard does not include a method to configure 131 this option. This document defines a standard way to negotiate this 132 option for IKEv2. 134 3. Protocol Exchange 136 In order to negotiate which domains are considered internal to an 137 IKEv2 tunnel, initiators indicate support for Split DNS in their 138 CFG_REQUEST payloads, and responders assign internal domains (and 139 DNSSEC trust anchors) in their CFG_REPLY payloads. When Split DNS 140 has been negotiated, the existing DNS server configuration attributes 141 will be interpreted as internal DNS servers that can resolve 142 hostnames within the internal domains. 144 3.1. Configuration Request 146 To indicate support for Split DNS, an initiator includes one more 147 more INTERNAL_DNS_DOMAIN attributes as defined in Section 4 as part 148 of the CFG_REQUEST payload. If an INTERNAL_DNS_DOMAIN attribute is 149 included in the CFG_REQUEST, the initiator SHOULD also include one or 150 more INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the 151 CFG_REQUEST. 153 The INTERNAL_DNS_DOMAIN attribute sent by the initiator is usually 154 empty but MAY contain a suggested domain name. 156 The absence of INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST 157 payload indicates that the initiator does not support or is unwilling 158 to accept Split DNS configuration. 160 To indicate support for DNSSEC, an initiator includes one or more 161 INTERNAL_DNS_TA attributes as defined in Section 4 as part of the 162 CFG_REQUEST payload. If an INTERNAL_DNS_TA attriute is included in 163 the CFG_REQUEST, the initiator SHOULD also include one or more 164 INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST. 166 An initiator MAY convey its current DNSSEC trust anchors for the 167 domain specified in the INTERNAL_DNS_DOMAIN attribute. If it does 168 not wish to convey this information, it MUST use a length of 0. 170 The absence of INTERNAL_DNS_TA attributes in the CFG_REQUEST payload 171 indicates that the initiator does not support or is unwilling to 172 accept DNSSEC trust anchor configuration. 174 3.2. Configuration Reply 176 Responders MAY send one or more INTERNAL_DNS_DOMAIN attributes in 177 their CFG_REPLY payload. If an INTERNAL_DNS_DOMAIN attribute is 178 included in the CFG_REPLY, the responder MUST also include one or 179 both of the INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the 180 CFG_REPLY. These DNS server configurations are necessary to define 181 which servers should receive queries for hostnames in internal 182 domains. If the CFG_REQUEST included an INTERNAL_DNS_DOMAIN 183 attribute, but the CFG_REPLY does not include an INTERNAL_DNS_DOMAIN 184 attribute, the initiator should behave as if Split DNS configurations 185 are not supported by the server. 187 Each INTERNAL_DNS_DOMAIN represents a domain that the DNS servers 188 address listed in INTERNAL_IP4_DNS and INTERNAL_IP6_DNS can resolve. 190 If the CFG_REQUEST included INTERNAL_DNS_DOMAIN attributes with non- 191 zero lengths, the content MAY be ignored or be interpreted as a 192 suggestion by the responder. 194 For each DNS domain specified in an INTERNAL_DNS_DOMAIN attribute, 195 one or more INTERNAL_DNSSEC_TA attributes MAY be included by the 196 responder. This attribute lists the corresponding internal DNSSEC 197 trust anchor in the DNS wire format of a DS record as specified in 198 [RFC4034]. The INTERNAL_DNSSEC_TA attribute MUST immediately follow 199 the INTERNAL_DNS_DOMAIN attribute that it applies to. 201 3.3. Mapping DNS Servers to Domains 203 All DNS servers provided in the CFG_REPLY MUST support resolving 204 hostnames within all INTERNAL_DNS_DOMAIN domains. In other words, 205 the INTERNAL_DNS_DOMAIN attributes in a CFG_REPLY payload form a 206 single list of Split DNS domains that applies to the entire list of 207 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes. 209 3.4. Example Exchanges 211 3.4.1. Simple Case 213 In this example exchange, the initiator requests INTERNAL_IP4_DNS and 214 INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST, but does not 215 specify any value for either. This indicates that it supports Split 216 DNS, but has no preference for which DNS requests should be routed 217 through the tunnel. 219 The responder replies with two DNS server addresses, and two internal 220 domains, "example.com" and "city.other.com". 222 Any subsequent DNS queries from the initiator for domains such as 223 "www.example.com" should use 198.51.100.2 or 198.51.100.4 to resolve. 225 CP(CFG_REQUEST) = 226 INTERNAL_IP4_ADDRESS() 227 INTERNAL_IP4_DNS() 228 INTERNAL_DNS_DOMAIN() 230 CP(CFG_REPLY) = 231 INTERNAL_IP4_ADDRESS(198.51.100.234) 232 INTERNAL_IP4_DNS(198.51.100.2) 233 INTERNAL_IP4_DNS(198.51.100.4) 234 INTERNAL_DNS_DOMAIN(example.com) 235 INTERNAL_DNS_DOMAIN(city.other.com) 237 3.4.2. Requesting Domains and DNSSEC trust anchors 239 In this example exchange, the initiator requests INTERNAL_IP4_DNS, 240 INTERNAL_DNS_DOMAIN and INTERNAL_DNS_TA attributess in the 241 CFG_REQUEST 243 Any subsequent DNS queries from the initiator for domains such as 244 "www.example.com" or "city.other.com" would be DNSSEC validated using 245 the DNSSEC trust anchor received in the CFG_REPLY 247 In this example, the initiator has no existing DNSSEC trust anchors 248 would the requested domain. the "example.com" dommain has DNSSEC 249 trust anchors that are returned, while the "other.com" domain has no 250 DNSSEC trust anchors 252 CP(CFG_REQUEST) = 253 INTERNAL_IP4_ADDRESS() 254 INTERNAL_IP4_DNS() 255 INTERNAL_DNS_DOMAIN() 256 INTERNAL_DNS_TA() 258 CP(CFG_REPLY) = 259 INTERNAL_IP4_ADDRESS(198.51.100.234) 260 INTERNAL_IP4_DNS(198.51.100.2) 261 INTERNAL_IP4_DNS(198.51.100.4) 262 INTERNAL_DNS_DOMAIN(example.com) 263 INTERNAL_DNS_TA(43547,8,1,B6225AB2CC613E0DCA7962BDC2342EA4F1B56083) 264 INTERNAL_DNS_TA(31406,8,2,F78CF3344F72137235098ECBBD08947C2C90....) 265 INTERNAL_DNS_DOMAIN(city.other.com) 267 4. Payload Formats 269 4.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type 271 1 2 3 272 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 273 +-+-----------------------------+-------------------------------+ 274 |R| Attribute Type | Length | 275 +-+-----------------------------+-------------------------------+ 276 | | 277 ~ Domain Name ~ 278 | | 279 +---------------------------------------------------------------+ 281 o Reserved (1 bit) - Defined in IKEv2 RFC [RFC7296]. 283 o Attribute Type (15 bits) 25 - INTERNAL_DNS_DOMAIN. 285 o Length (2 octets, unsigned integer) - Length of domain name. 287 o Domain Name (0 or more octets) - A domain or subdomain used for 288 Split DNS rules, such as example.com in DNS wire format. 290 4.2. INTERNAL_DNSSEC_TA Configuration Attribute 292 1 2 3 293 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 294 +-+-----------------------------+-------------------------------+ 295 |R| Attribute Type | Length | 296 +-+-----------------------------+---------------+---------------+ 297 | Key Tag | Algorithm | Digest Type | 298 +-------------------------------+---------------+---------------+ 299 | | 300 ~ Digest ~ 301 | | 302 +---------------------------------------------------------------+ 304 o Reserved (1 bit) - Defined in IKEv2 RFC [RFC7296]. 306 o Attribute Type (15 bits) [TBD IANA] - INTERNAL_DNSSEC_TA. 308 o Length (2 octets, unsigned integer) - Length of DNSSEC Trust 309 Anchor data. 311 o Key Tag value (0 or 2 octets, unsigned integer) - Key Tag as 312 specified in [RFC4034] Section 5.1 314 o DNSKEY algorithm (0 or 1 octet) - Value from the IANA DNS Security 315 Algorithm Numbers Registry 317 o DS algorithm (0 or 1 octet) - Value from the IANA Delegation 318 Signer (DS) Resource Record (RR) Type Digest Algorithms Registry 320 o Digest (0 or more octets) - The digest as specified in [RFC4034] 321 Section 5.1 in wire format. 323 5. Split DNS Usage Guidelines 325 If a CFG_REPLY payload contains no INTERNAL_DNS_DOMAIN attributes, 326 the client MAY use the provided INTERNAL_IP4_DNS or INTERNAL_IP6_DNS 327 servers as the default DNS server(s) for all queries. 329 If a client is configured by local policy to only accept a limited 330 number of INTERNAL_DNS_DOMAIN values, the client MUST ignore any 331 other INTERNAL_DNS_DOMAIN values. 333 For each INTERNAL_DNS_DOMAIN entry in a CFG_REPLY payload that is not 334 prohibited by local policy, the client MUST use the provided 335 INTERNAL_IP4_DNS or INTERNAL_IP6_DNS DNS servers as the only 336 resolvers for the listed domains and its sub-domains and it MUST NOT 337 attempt to resolve the provided DNS domains using its external DNS 338 servers. 340 If the initiator host is configured to block DNS answers containing 341 IP addresses from special IP address ranges such as those of 342 [RFC1918], the initiator SHOULD allow the DNS domains listed in the 343 INTERNAL_DNS_DOMAIN attributes to contain those Special IP addresses. 345 If a CFG_REPLY contains one or more INTERNAL_DNS_DOMAIN attributes 346 and its local policy does not forbid these values, the client MUST 347 configure its DNS resolver to resolve those domains and all their 348 subdomains using only the DNS resolver(s) listed in that CFG_REPLY 349 message. If those resolvers fail, those names MUST NOT be resolved 350 using any other DNS resolvers. Other domain names SHOULD be resolved 351 using some other external DNS resolver(s), configured independently 352 from IKE. Queries for these other domains MAY be sent to the 353 internal DNS resolver(s) listed in that CFG_REPLY message, but have 354 no guarantee of being answered. For example, if the 355 INTERNAL_DNS_DOMAIN attribute specifies "example.com", then 356 "example.com", "www.example.com" and "mail.eng.example.com" MUST be 357 resolved using the internal DNS resolver(s), but "anotherexample.com" 358 and "ample.com" SHOULD NOT be resolved using the internal resolver 359 and SHOULD use the system's external DNS resolver(s). 361 An initiator SHOULD ignore INTERNAL_DNS_DOMAIN attributes containing 362 domains that are designated Special Use Domain Names in [RFC6761], 363 such as "local", "localhost", "invalid", etc. Although it may 364 explicitly wish to support some Special Use Domain Names. 366 When an IKE SA is terminated, the DNS forwarding must be 367 unconfigured. The DNS forwarding itself MUST be be deleted. All 368 cached data of the INTERNAL_DNS_DOMAIN provided DNS domainis MUST be 369 flushed. This includes negative cache entries. Obtained DNSSEC 370 trust anchors MUST be removed from the list of trust anchors. The 371 outstanding DNS request queue MUST be cleared. 373 INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA attributes SHOULD only be 374 used on split tunnel configurations where only a subset of traffic is 375 routed into a private remote network using the IPsec connection. If 376 all traffic is routed over the IPsec connection, the existing global 377 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS can be used without creating 378 specific DNS exemptions. 380 6. Security Considerations 382 The use of Split DNS configurations assigned by an IKEv2 responder is 383 predicated on the trust established during IKE SA authentication. 384 However, if IKEv2 is being negotiated with an anonymous or unknown 385 endpoint (such as for Opportunistic Security [RFC7435]), the 386 initiator MUST ignore Split DNS configurations assigned by the 387 responder. 389 If a host connected to an authenticated IKE peer is connecting to 390 another IKE peer that attempts to claim the same domain via the 391 INTERNAL_DNS_DOMAIN attribute, the IKE connection should only process 392 the DNS information if the two connections are part of the same 393 logical entity. Otherwise, the client should refuse the DNS 394 information and potentially warn the enduser. 396 INTERNAL_DNSSEC_TA directives MUST immediately follow an 397 INTERNAL_DNS_DOMAIN directive. As the INTERNAL_DNSSEC_TA format 398 itself does not contain the domain name, it relies on the preceding 399 INTERNAL_DNS_DOMAIN to provide the domain for which it specifies the 400 trust anchor. 402 If the initiator is using DNSSEC validation for a domain in its 403 public DNS view, and it requests and receives an INTERNAL_DNS_DOMAIN 404 attribute without an INTERNAL_DNSSEC_TA, it will need to reconfigure 405 its DNS resolver to allow for an insecure delegation. It SHOULD NOT 406 accept insecure delegations for domains that are DNSSEC signed in the 407 public DNS view, for which it has not explicitely requested such 408 deletation by specifying the domain specifically using a 409 INTERNAL_DNS_DOMAIN(domain) request. 411 A domain that is served via INTERNAL_DNS_DOMAIN should pay close 412 attention to their use of indirect reference RRtypes such as CNAME, 413 DNAME, MX or SRV records so that resolving works as intended when 414 all, some or none of the IPsec connections are established. 416 7. IANA Considerations 418 This document defines two new IKEv2 Configuration Payload Attribute 419 Types, which are allocated from the "IKEv2 Configuration Payload 420 Attribute Types" namespace. 422 Multi- 423 Value Attribute Type Valued Length Reference 424 ------ ------------------- ------ ---------- --------------- 425 25 INTERNAL_DNS_DOMAIN YES 0 or more [this document] 426 [TBD] INTERNAL_DNSSEC_TA YES 0 or more [this document] 428 Figure 1 430 8. References 432 8.1. Normative References 434 [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., 435 and E. Lear, "Address Allocation for Private Internets", 436 BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996, 437 . 439 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 440 Requirement Levels", BCP 14, RFC 2119, 441 DOI 10.17487/RFC2119, March 1997, 442 . 444 [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. 445 Rose, "Resource Records for the DNS Security Extensions", 446 RFC 4034, DOI 10.17487/RFC4034, March 2005, 447 . 449 [RFC5890] Klensin, J., "Internationalized Domain Names for 450 Applications (IDNA): Definitions and Document Framework", 451 RFC 5890, DOI 10.17487/RFC5890, August 2010, 452 . 454 [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. 455 Kivinen, "Internet Key Exchange Protocol Version 2 456 (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October 457 2014, . 459 8.2. Informative References 461 [RFC2775] Carpenter, B., "Internet Transparency", RFC 2775, 462 DOI 10.17487/RFC2775, February 2000, 463 . 465 [RFC6761] Cheshire, S. and M. Krochmal, "Special-Use Domain Names", 466 RFC 6761, DOI 10.17487/RFC6761, February 2013, 467 . 469 [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection 470 Most of the Time", RFC 7435, DOI 10.17487/RFC7435, 471 December 2014, . 473 Authors' Addresses 475 Tommy Pauly 476 Apple Inc. 477 1 Infinite Loop 478 Cupertino, California 95014 479 US 481 Email: tpauly@apple.com 483 Paul Wouters 484 Red Hat 486 Email: pwouters@redhat.com