idnits 2.17.00 (12 Aug 2021) /tmp/idnits21265/draft-ietf-ipsecme-split-dns-06.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 (February 9, 2018) is 1562 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) No issues found here. Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 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: August 13, 2018 Red Hat 6 February 9, 2018 8 Split DNS Configuration for IKEv2 9 draft-ietf-ipsecme-split-dns-06 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 August 13, 2018. 37 Copyright Notice 39 Copyright (c) 2018 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 Request 66 and Reply . . . . . . . . . . . . . . . . . . . . . . . . 6 67 4.2. INTERNAL_DNSSEC_TA Configuration Attribute . . . . . . . 7 68 5. Split DNS Usage Guidelines . . . . . . . . . . . . . . . . . 8 69 6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 70 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 71 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 72 8.1. Normative References . . . . . . . . . . . . . . . . . . 10 73 8.2. Informative References . . . . . . . . . . . . . . . . . 11 74 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 76 1. Introduction 78 Split DNS is a common configuration for secure tunnels, such as 79 Virtual Private Networks in which host machines private to an 80 organization can only be resolved using internal DNS resolvers 81 [RFC2775]. In such configurations, it is often desirable to only 82 resolve hosts within a set of private domains using the tunnel, while 83 letting resolutions for public hosts be handled by a device's default 84 DNS configuration. 86 The Internet Key Exchange protocol version 2 [RFC7296] negotiates 87 configuration parameters using Configuration Payload Attribute Types. 88 This document defines two Configuration Payload Attribute Types that 89 add support for trusted Split DNS domains. 91 The INTERNAL_DNS_DOMAIN attribute type is used to convey one or more 92 DNS domains that should be resolved only using the provided DNS 93 nameserver IP addresses, causing these requests to use the IPsec 94 connection. 96 The INTERNAL_DNSSEC_TA attribute type is used to convey DNSSEC trust 97 anchors for those domains. 99 When only a subset of traffic is routed into a private network using 100 an IPsec SA, these Configuration Payload options can be used to 101 define which private domains should be resolved through the IPsec 102 connection without affecting the client's global DNS resolution. 104 For the purposes of this document, DNS resolution servers accessible 105 through an IPsec connection will be referred to as "internal DNS 106 servers", and other DNS servers will be referred to as "external DNS 107 servers". 109 A client using these configuration payloads will be able to request 110 and receive Split DNS configurations using the INTERNAL_DNS_DOMAIN 111 and INTERNAL_DNSSEC_TA configuration attributes. The client device 112 can use the internal DNS server(s) for any DNS queries within the 113 assigned domains. DNS queries for other domains should be send to 114 regular external DNS server. 116 1.1. Requirements Language 118 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 119 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 120 document are to be interpreted as described in RFC 2119 [RFC2119]. 122 2. Background 124 Split DNS is a common configuration for enterprise VPN deployments, 125 in which only one or a few private DNS domains are accessible and 126 resolvable via an IPsec based VPN connection. 128 Other tunnel-establishment protocols already support the assignment 129 of Split DNS domains. For example, there are proprietary extensions 130 to IKEv1 that allow a server to assign Split DNS domains to a client. 131 However, the IKEv2 standard does not include a method to configure 132 this option. This document defines a standard way to negotiate this 133 option for IKEv2. 135 3. Protocol Exchange 137 In order to negotiate which domains are considered internal to an 138 IKEv2 tunnel, initiators indicate support for Split DNS in their 139 CFG_REQUEST payloads, and responders assign internal domains (and 140 DNSSEC trust anchors) in their CFG_REPLY payloads. When Split DNS 141 has been negotiated, the existing DNS server configuration attributes 142 will be interpreted as internal DNS servers that can resolve 143 hostnames within the internal domains. 145 3.1. Configuration Request 147 To indicate support for Split DNS, an initiator includes one more 148 INTERNAL_DNS_DOMAIN attributes as defined in Section 4 as part of the 149 CFG_REQUEST payload. If an INTERNAL_DNS_DOMAIN attribute is included 150 in the CFG_REQUEST, the initiator SHOULD also include one or more 151 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the 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_DNSSEC_TA attributes as defined in Section 4 as part of the 162 CFG_REQUEST payload. If an INTERNAL_DNSSEC_TA attriute is included 163 in 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_DNSSEC_TA attributes in the CFG_REQUEST 171 payload indicates that the initiator does not support or is unwilling 172 to 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 presentation format of a DS record as 198 specified in [RFC4034]. The INTERNAL_DNSSEC_TA attribute MUST 199 immediately follow the INTERNAL_DNS_DOMAIN attribute that it applies 200 to. 202 3.3. Mapping DNS Servers to Domains 204 All DNS servers provided in the CFG_REPLY MUST support resolving 205 hostnames within all INTERNAL_DNS_DOMAIN domains. In other words, 206 the INTERNAL_DNS_DOMAIN attributes in a CFG_REPLY payload form a 207 single list of Split DNS domains that applies to the entire list of 208 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes. 210 3.4. Example Exchanges 212 3.4.1. Simple Case 214 In this example exchange, the initiator requests INTERNAL_IP4_DNS and 215 INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST, but does not 216 specify any value for either. This indicates that it supports Split 217 DNS, but has no preference for which DNS requests should be routed 218 through the tunnel. 220 The responder replies with two DNS server addresses, and two internal 221 domains, "example.com" and "city.other.com". 223 Any subsequent DNS queries from the initiator for domains such as 224 "www.example.com" should use 198.51.100.2 or 198.51.100.4 to resolve. 226 CP(CFG_REQUEST) = 227 INTERNAL_IP4_ADDRESS() 228 INTERNAL_IP4_DNS() 229 INTERNAL_DNS_DOMAIN() 231 CP(CFG_REPLY) = 232 INTERNAL_IP4_ADDRESS(198.51.100.234) 233 INTERNAL_IP4_DNS(198.51.100.2) 234 INTERNAL_IP4_DNS(198.51.100.4) 235 INTERNAL_DNS_DOMAIN(example.com) 236 INTERNAL_DNS_DOMAIN(city.other.com) 238 3.4.2. Requesting Domains and DNSSEC trust anchors 240 In this example exchange, the initiator requests INTERNAL_IP4_DNS, 241 INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA attributess in the 242 CFG_REQUEST 244 Any subsequent DNS queries from the initiator for domains such as 245 "www.example.com" or "city.other.com" would be DNSSEC validated using 246 the DNSSEC trust anchor received in the CFG_REPLY 248 In this example, the initiator has no existing DNSSEC trust anchors 249 would the requested domain. the "example.com" dommain has DNSSEC 250 trust anchors that are returned, while the "other.com" domain has no 251 DNSSEC trust anchors 253 CP(CFG_REQUEST) = 254 INTERNAL_IP4_ADDRESS() 255 INTERNAL_IP4_DNS() 256 INTERNAL_DNS_DOMAIN() 257 INTERNAL_DNSSEC_TA() 259 CP(CFG_REPLY) = 260 INTERNAL_IP4_ADDRESS(198.51.100.234) 261 INTERNAL_IP4_DNS(198.51.100.2) 262 INTERNAL_IP4_DNS(198.51.100.4) 263 INTERNAL_DNS_DOMAIN(example.com) 264 INTERNAL_DNSSEC_TA(43547,8,1,B6225AB2CC613E0DCA7962BDC2342EA4F1B56083) 265 INTERNAL_DNSSEC_TA(31406,8,2,F78CF3344F72137235098ECBBD08947C2C90....) 266 INTERNAL_DNS_DOMAIN(city.other.com) 268 4. Payload Formats 270 All multi-octet fields representing integers are laid out in big 271 endian order (also known as "most significant byte first", or 272 "network byte order"). 274 4.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type Request and Reply 276 1 2 3 277 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 278 +-+-----------------------------+-------------------------------+ 279 |R| Attribute Type | Length | 280 +-+-----------------------------+-------------------------------+ 281 | | 282 ~ Domain Name in DNS presentation format ~ 283 | | 284 +---------------------------------------------------------------+ 285 o Reserved (1 bit) - Defined in IKEv2 RFC [RFC7296]. 287 o Attribute Type (15 bits) set to value 25 for INTERNAL_DNS_DOMAIN. 289 o Length (2 octets) - Length of domain name. 291 o Domain Name (0 or more octets) - A Fully Qualified Domain Name 292 used for Split DNS rules, such as "example.com", in DNS 293 presentation format and optionally using IDNA [RFC5890] for 294 Internationalized Domain Names. Implementors need to be careful 295 that this value is not null-terminated. 297 4.2. INTERNAL_DNSSEC_TA Configuration Attribute 299 An INTERNAL_DNSSEC_TA Configuration Attribute can either be empty, or 300 it can contain one Trust Anchor by containing a non-zero Length with 301 a DNSKEY Key Tag, DNSKEY Algorithm, Digest Type and Digest Data 302 fields. 304 An empty INTERNAL_DNSSEC_TA CFG attribute: 306 1 2 3 307 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 308 +-+-----------------------------+-------------------------------+ 309 |R| Attribute Type | Length (set to 0) | 310 +-+-----------------------------+-------------------------------+ 312 A non-empty INTERNAL_DNSSEC_TA CFG attribute: 314 1 2 3 315 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 316 +-+-----------------------------+-------------------------------+ 317 |R| Attribute Type | Length | 318 +-+-----------------------------+---------------+---------------+ 319 | DNSKEY Key Tag | DNSKEY Alg | Digest Type | 320 +-------------------------------+---------------+---------------+ 321 | | 322 ~ Digest Data ~ 323 | | 324 +---------------------------------------------------------------+ 326 o Reserved (1 bit) - Defined in IKEv2 RFC [RFC7296]. 328 o Attribute Type (15 bits) set to value 26 for INTERNAL_DNSSEC_TA. 330 o Length (0 or 2 octets) - Length of DNSSEC Trust Anchor data (4 331 octets plus the length of the Digest Data) 333 o DNSKEY Key Tag value (0 or 2 octets) - Delegation Signer (DS) Key 334 Tag as specified in [RFC4034] Section 5.1 336 o DNSKEY Algorithm (0 or 1 octet) - DNSKEY algorithm value from the 337 IANA DNS Security Algorithm Numbers Registry 339 o Digest Type (0 or 1 octet) - DS algorithm value from the IANA 340 Delegation Signer (DS) Resource Record (RR) Type Digest Algorithms 341 Registry 343 o Digest Data (0 or more octets) - The DNSKEY digest as specified in 344 [RFC4034] Section 5.1 in presentation format. 346 5. Split DNS Usage Guidelines 348 If a CFG_REPLY payload contains no INTERNAL_DNS_DOMAIN attributes, 349 the client MAY use the provided INTERNAL_IP4_DNS or INTERNAL_IP6_DNS 350 servers as the default DNS server(s) for all queries. 352 If a client is configured by local policy to only accept a limited 353 number of INTERNAL_DNS_DOMAIN values, the client MUST ignore any 354 other INTERNAL_DNS_DOMAIN values. 356 For each INTERNAL_DNS_DOMAIN entry in a CFG_REPLY payload that is not 357 prohibited by local policy, the client MUST use the provided 358 INTERNAL_IP4_DNS or INTERNAL_IP6_DNS DNS servers as the only 359 resolvers for the listed domains and its sub-domains and it MUST NOT 360 attempt to resolve the provided DNS domains using its external DNS 361 servers. 363 If the initiator host is configured to block DNS answers containing 364 IP addresses from special IP address ranges such as those of 365 [RFC1918], the initiator SHOULD allow the DNS domains listed in the 366 INTERNAL_DNS_DOMAIN attributes to contain those Special IP addresses. 368 If a CFG_REPLY contains one or more INTERNAL_DNS_DOMAIN attributes 369 and its local policy does not forbid these values, the client MUST 370 configure its DNS resolver to resolve those domains and all their 371 subdomains using only the DNS resolver(s) listed in that CFG_REPLY 372 message. If those resolvers fail, those names MUST NOT be resolved 373 using any other DNS resolvers. Other domain names SHOULD be resolved 374 using some other external DNS resolver(s), configured independently 375 from IKE. Queries for these other domains MAY be sent to the 376 internal DNS resolver(s) listed in that CFG_REPLY message, but have 377 no guarantee of being answered. For example, if the 378 INTERNAL_DNS_DOMAIN attribute specifies "example.com", then 379 "example.com", "www.example.com" and "mail.eng.example.com" MUST be 380 resolved using the internal DNS resolver(s), but "anotherexample.com" 381 and "ample.com" SHOULD NOT be resolved using the internal resolver 382 and SHOULD use the system's external DNS resolver(s). 384 When an IKE SA is terminated, the DNS forwarding must be 385 unconfigured. The DNS forwarding itself MUST be be deleted. All 386 cached data of the INTERNAL_DNS_DOMAIN provided DNS domainis MUST be 387 flushed. This includes negative cache entries. Obtained DNSSEC 388 trust anchors MUST be removed from the list of trust anchors. The 389 outstanding DNS request queue MUST be cleared. 391 INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA attributes SHOULD only be 392 used on split tunnel configurations where only a subset of traffic is 393 routed into a private remote network using the IPsec connection. If 394 all traffic is routed over the IPsec connection, the existing global 395 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS can be used without creating 396 specific DNS exemptions. 398 6. Security Considerations 400 The use of Split DNS configurations assigned by an IKEv2 responder is 401 predicated on the trust established during IKE SA authentication. 402 However, if IKEv2 is being negotiated with an anonymous or unknown 403 endpoint (such as for Opportunistic Security [RFC7435]), the 404 initiator MUST ignore Split DNS configurations assigned by the 405 responder. 407 If a host connected to an authenticated IKE peer is connecting to 408 another IKE peer that attempts to claim the same domain via the 409 INTERNAL_DNS_DOMAIN attribute, the IKE connection should only process 410 the DNS information if the two connections are part of the same 411 logical entity. Otherwise, the client should refuse the DNS 412 information and potentially warn the enduser. 414 INTERNAL_DNSSEC_TA payloads MUST immediately follow an 415 INTERNAL_DNS_DOMAIN payload. As the INTERNAL_DNSSEC_TA format itself 416 does not contain the domain name, it relies on the preceding 417 INTERNAL_DNS_DOMAIN to provide the domain for which it specifies the 418 trust anchor. 420 If the initiator is using DNSSEC validation for a domain in its 421 public DNS view, and it requests and receives an INTERNAL_DNS_DOMAIN 422 attribute without an INTERNAL_DNSSEC_TA, it will need to reconfigure 423 its DNS resolver to allow for an insecure delegation. It SHOULD NOT 424 accept insecure delegations for domains that are DNSSEC signed in the 425 public DNS view, for which it has not explicitely requested such 426 deletation by specifying the domain specifically using a 427 INTERNAL_DNS_DOMAIN(domain) request. 429 A domain that is served via INTERNAL_DNS_DOMAIN should pay close 430 attention to their use of indirect reference RRtypes such as CNAME, 431 DNAME, MX or SRV records so that resolving works as intended when 432 all, some or none of the IPsec connections are established. 434 The content of INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA may be 435 passed to another (DNS) program for processing. As with any network 436 input, the content should be considered untrusted and handled 437 accordingly. 439 7. IANA Considerations 441 This document defines two new IKEv2 Configuration Payload Attribute 442 Types, which are allocated from the "IKEv2 Configuration Payload 443 Attribute Types" namespace. 445 Multi- 446 Value Attribute Type Valued Length Reference 447 ------ ------------------- ------ ---------- --------------- 448 25 INTERNAL_DNS_DOMAIN YES 0 or more [this document] 449 26 INTERNAL_DNSSEC_TA YES 0 or more [this document] 451 Figure 1 453 8. References 455 8.1. Normative References 457 [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., 458 and E. Lear, "Address Allocation for Private Internets", 459 BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996, 460 . 462 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 463 Requirement Levels", BCP 14, RFC 2119, 464 DOI 10.17487/RFC2119, March 1997, . 467 [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. 468 Rose, "Resource Records for the DNS Security Extensions", 469 RFC 4034, DOI 10.17487/RFC4034, March 2005, 470 . 472 [RFC5890] Klensin, J., "Internationalized Domain Names for 473 Applications (IDNA): Definitions and Document Framework", 474 RFC 5890, DOI 10.17487/RFC5890, August 2010, 475 . 477 [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. 478 Kivinen, "Internet Key Exchange Protocol Version 2 479 (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October 480 2014, . 482 8.2. Informative References 484 [RFC2775] Carpenter, B., "Internet Transparency", RFC 2775, 485 DOI 10.17487/RFC2775, February 2000, . 488 [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection 489 Most of the Time", RFC 7435, DOI 10.17487/RFC7435, 490 December 2014, . 492 Authors' Addresses 494 Tommy Pauly 495 Apple Inc. 496 1 Infinite Loop 497 Cupertino, California 95014 498 US 500 Email: tpauly@apple.com 502 Paul Wouters 503 Red Hat 505 Email: pwouters@redhat.com