idnits 2.17.00 (12 Aug 2021) /tmp/idnits29439/draft-ietf-ipsecme-split-dns-02.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 29, 2017) is 1757 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 309, but not defined == Missing Reference: 'TBD' is mentioned on line 438, but not defined Summary: 0 errors (**), 0 flaws (~~), 3 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 30, 2018 Red Hat 6 July 29, 2017 8 Split DNS Configuration for IKEv2 9 draft-ietf-ipsecme-split-dns-02 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 30, 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 . . . . . . . . . . . . . . . . . . . . . 10 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 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_DNS_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_DNS_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_DNS_TA(43547,8,1,B6225AB2CC613E0DCA7962BDC2342EA4F1B56083) 265 INTERNAL_DNS_TA(31406,8,2,F78CF3344F72137235098ECBBD08947C2C90....) 266 INTERNAL_DNS_DOMAIN(city.other.com) 268 4. Payload Formats 270 4.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type 272 1 2 3 273 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 274 +-+-----------------------------+-------------------------------+ 275 |R| Attribute Type | Length | 276 +-+-----------------------------+-------------------------------+ 277 | | 278 ~ Domain Name in DNS presentation format ~ 279 | | 280 +---------------------------------------------------------------+ 282 o Reserved (1 bit) - Defined in IKEv2 RFC [RFC7296]. 284 o Attribute Type (15 bits) 25 - INTERNAL_DNS_DOMAIN. 286 o Length (2 octets, unsigned integer) - Length of domain name. 288 o Domain Name (0 or more octets) - A Fully Qualified Domain Name 289 used for Split DNS rules, such as example.com, in DNS presentation 290 format and optionally using IDNA [RFC5890] for Internationalized 291 Domain Names. The value is NOT null-terminated. 293 4.2. INTERNAL_DNSSEC_TA Configuration Attribute 295 1 2 3 296 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 297 +-+-----------------------------+-------------------------------+ 298 |R| Attribute Type | Length | 299 +-+-----------------------------+---------------+---------------+ 300 | Key Tag | Algorithm | Digest Type | 301 +-------------------------------+---------------+---------------+ 302 | | 303 ~ Digest ~ 304 | | 305 +---------------------------------------------------------------+ 307 o Reserved (1 bit) - Defined in IKEv2 RFC [RFC7296]. 309 o Attribute Type (15 bits) [TBD IANA] - INTERNAL_DNSSEC_TA. 311 o Length (2 octets, unsigned integer) - Length of DNSSEC Trust 312 Anchor data. 314 o Key Tag value (0 or 2 octets, unsigned integer) - Key Tag as 315 specified in [RFC4034] Section 5.1 317 o DNSKEY algorithm (0 or 1 octet) - Value from the IANA DNS Security 318 Algorithm Numbers Registry 320 o DS algorithm (0 or 1 octet) - Value from the IANA Delegation 321 Signer (DS) Resource Record (RR) Type Digest Algorithms Registry 323 o Digest (0 or more octets) - The digest as specified in [RFC4034] 324 Section 5.1 in presentation format. 326 5. Split DNS Usage Guidelines 328 If a CFG_REPLY payload contains no INTERNAL_DNS_DOMAIN attributes, 329 the client MAY use the provided INTERNAL_IP4_DNS or INTERNAL_IP6_DNS 330 servers as the default DNS server(s) for all queries. 332 If a client is configured by local policy to only accept a limited 333 number of INTERNAL_DNS_DOMAIN values, the client MUST ignore any 334 other INTERNAL_DNS_DOMAIN values. 336 For each INTERNAL_DNS_DOMAIN entry in a CFG_REPLY payload that is not 337 prohibited by local policy, the client MUST use the provided 338 INTERNAL_IP4_DNS or INTERNAL_IP6_DNS DNS servers as the only 339 resolvers for the listed domains and its sub-domains and it MUST NOT 340 attempt to resolve the provided DNS domains using its external DNS 341 servers. 343 If the initiator host is configured to block DNS answers containing 344 IP addresses from special IP address ranges such as those of 345 [RFC1918], the initiator SHOULD allow the DNS domains listed in the 346 INTERNAL_DNS_DOMAIN attributes to contain those Special IP addresses. 348 If a CFG_REPLY contains one or more INTERNAL_DNS_DOMAIN attributes 349 and its local policy does not forbid these values, the client MUST 350 configure its DNS resolver to resolve those domains and all their 351 subdomains using only the DNS resolver(s) listed in that CFG_REPLY 352 message. If those resolvers fail, those names MUST NOT be resolved 353 using any other DNS resolvers. Other domain names SHOULD be resolved 354 using some other external DNS resolver(s), configured independently 355 from IKE. Queries for these other domains MAY be sent to the 356 internal DNS resolver(s) listed in that CFG_REPLY message, but have 357 no guarantee of being answered. For example, if the 358 INTERNAL_DNS_DOMAIN attribute specifies "example.com", then 359 "example.com", "www.example.com" and "mail.eng.example.com" MUST be 360 resolved using the internal DNS resolver(s), but "anotherexample.com" 361 and "ample.com" SHOULD NOT be resolved using the internal resolver 362 and SHOULD use the system's external DNS resolver(s). 364 An initiator SHOULD ignore INTERNAL_DNS_DOMAIN attributes containing 365 domains that are designated Special Use Domain Names in [RFC6761], 366 such as "local", "localhost", "invalid", etc. Although it may 367 explicitly wish to support some Special Use Domain Names. 369 When an IKE SA is terminated, the DNS forwarding must be 370 unconfigured. The DNS forwarding itself MUST be be deleted. All 371 cached data of the INTERNAL_DNS_DOMAIN provided DNS domainis MUST be 372 flushed. This includes negative cache entries. Obtained DNSSEC 373 trust anchors MUST be removed from the list of trust anchors. The 374 outstanding DNS request queue MUST be cleared. 376 INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA attributes SHOULD only be 377 used on split tunnel configurations where only a subset of traffic is 378 routed into a private remote network using the IPsec connection. If 379 all traffic is routed over the IPsec connection, the existing global 380 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS can be used without creating 381 specific DNS exemptions. 383 6. Security Considerations 385 The use of Split DNS configurations assigned by an IKEv2 responder is 386 predicated on the trust established during IKE SA authentication. 387 However, if IKEv2 is being negotiated with an anonymous or unknown 388 endpoint (such as for Opportunistic Security [RFC7435]), the 389 initiator MUST ignore Split DNS configurations assigned by the 390 responder. 392 If a host connected to an authenticated IKE peer is connecting to 393 another IKE peer that attempts to claim the same domain via the 394 INTERNAL_DNS_DOMAIN attribute, the IKE connection should only process 395 the DNS information if the two connections are part of the same 396 logical entity. Otherwise, the client should refuse the DNS 397 information and potentially warn the enduser. 399 INTERNAL_DNSSEC_TA directives MUST immediately follow an 400 INTERNAL_DNS_DOMAIN directive. As the INTERNAL_DNSSEC_TA format 401 itself does not contain the domain name, it relies on the preceding 402 INTERNAL_DNS_DOMAIN to provide the domain for which it specifies the 403 trust anchor. 405 If the initiator is using DNSSEC validation for a domain in its 406 public DNS view, and it requests and receives an INTERNAL_DNS_DOMAIN 407 attribute without an INTERNAL_DNSSEC_TA, it will need to reconfigure 408 its DNS resolver to allow for an insecure delegation. It SHOULD NOT 409 accept insecure delegations for domains that are DNSSEC signed in the 410 public DNS view, for which it has not explicitely requested such 411 deletation by specifying the domain specifically using a 412 INTERNAL_DNS_DOMAIN(domain) request. 414 A domain that is served via INTERNAL_DNS_DOMAIN should pay close 415 attention to their use of indirect reference RRtypes such as CNAME, 416 DNAME, MX or SRV records so that resolving works as intended when 417 all, some or none of the IPsec connections are established. 419 The content of INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA may be 420 passed to another (DNS) program for processing. The content MUST be 421 verified and sanitized before passing it to other software. For 422 example, domain names are limited to alphanumeric characters and the 423 minus ("-") and underscore ("_") symbol and if other other characters 424 are present, the entire payload could be ignored and not passed to 425 DNS software, or the malicious characters could be filtered out 426 before passing the payload to DNS software. 428 7. IANA Considerations 430 This document defines two new IKEv2 Configuration Payload Attribute 431 Types, which are allocated from the "IKEv2 Configuration Payload 432 Attribute Types" namespace. 434 Multi- 435 Value Attribute Type Valued Length Reference 436 ------ ------------------- ------ ---------- --------------- 437 25 INTERNAL_DNS_DOMAIN YES 0 or more [this document] 438 [TBD] INTERNAL_DNSSEC_TA YES 0 or more [this document] 440 Figure 1 442 8. References 444 8.1. Normative References 446 [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., 447 and E. Lear, "Address Allocation for Private Internets", 448 BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996, 449 . 451 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 452 Requirement Levels", BCP 14, RFC 2119, 453 DOI 10.17487/RFC2119, March 1997, 454 . 456 [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. 457 Rose, "Resource Records for the DNS Security Extensions", 458 RFC 4034, DOI 10.17487/RFC4034, March 2005, 459 . 461 [RFC5890] Klensin, J., "Internationalized Domain Names for 462 Applications (IDNA): Definitions and Document Framework", 463 RFC 5890, DOI 10.17487/RFC5890, August 2010, 464 . 466 [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. 467 Kivinen, "Internet Key Exchange Protocol Version 2 468 (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October 469 2014, . 471 8.2. Informative References 473 [RFC2775] Carpenter, B., "Internet Transparency", RFC 2775, 474 DOI 10.17487/RFC2775, February 2000, 475 . 477 [RFC6761] Cheshire, S. and M. Krochmal, "Special-Use Domain Names", 478 RFC 6761, DOI 10.17487/RFC6761, February 2013, 479 . 481 [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection 482 Most of the Time", RFC 7435, DOI 10.17487/RFC7435, 483 December 2014, . 485 Authors' Addresses 487 Tommy Pauly 488 Apple Inc. 489 1 Infinite Loop 490 Cupertino, California 95014 491 US 493 Email: tpauly@apple.com 495 Paul Wouters 496 Red Hat 498 Email: pwouters@redhat.com