7 Network Working Group B. Aboba
8 Request for Comments: 3715 W. Dixon
9 Category: Informational Microsoft
13 IPsec-Network Address Translation (NAT) Compatibility Requirements
17 This memo provides information for the Internet community. It does
18 not specify an Internet standard of any kind. Distribution of this
23 Copyright (C) The Internet Society (2004). All Rights Reserved.
27 This document describes known incompatibilities between Network
28 Address Translation (NAT) and IPsec, and describes the requirements
29 for addressing them. Perhaps the most common use of IPsec is in
30 providing virtual private networking capabilities. One very popular
31 use of Virtual Private Networks (VPNs) is to provide telecommuter
32 access to the corporate Intranet. Today, NATs are widely deployed in
33 home gateways, as well as in other locations likely to be used by
34 telecommuters, such as hotels. The result is that IPsec-NAT
35 incompatibilities have become a major barrier in the deployment of
36 IPsec in one of its principal uses.
58 Aboba & Dixon Informational [Page 1]
60 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
65 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
66 1.1. Requirements Language. . . . . . . . . . . . . . . . . . 2
67 2. Known Incompatibilities between NA(P)T and IPsec . . . . . . . 3
68 2.1. Intrinsic NA(P)T Issues. . . . . . . . . . . . . . . . . 3
69 2.2. NA(P)T Implementation Weaknesses . . . . . . . . . . . . 7
70 2.3. Helper Incompatibilities . . . . . . . . . . . . . . . . 8
71 3. Requirements for IPsec-NAT Compatibility . . . . . . . . . . . 8
72 4. Existing Solutions . . . . . . . . . . . . . . . . . . . . . . 12
73 4.1. IPsec Tunnel Mode. . . . . . . . . . . . . . . . . . . . 12
74 4.2. RSIP . . . . . . . . . . . . . . . . . . . . . . . . . . 13
75 4.3. 6to4 . . . . . . . . . . . . . . . . . . . . . . . . . . 13
76 5. Security Considerations. . . . . . . . . . . . . . . . . . . . 14
77 6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 15
78 6.1. Normative References . . . . . . . . . . . . . . . . . . 15
79 6.2. Informative References . . . . . . . . . . . . . . . . . 16
80 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 17
81 8. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 17
82 9 . Full Copyright Statement . . . . . . . . . . . . . . . . . . . 18
86 Perhaps the most common use of IPsec [RFC2401] is in providing
87 virtual private networking (VPN) capabilities. One very popular use
88 of VPNs is to provide telecommuter access to the corporate Intranet.
89 Today, Network Address Translations (NATs) as described in [RFC3022]
90 and [RFC2663], are widely deployed in home gateways, as well as in
91 other locations likely to be used by telecommuters, such as hotels.
92 The result is that IPsec-NAT incompatibilities have become a major
93 barrier in the deployment of IPsec in one of its principal uses.
94 This document describes known incompatibilities between NAT and
95 IPsec, and describes the requirements for addressing them.
97 1.1. Requirements Language
99 In this document, the key words "MAY", "MUST, "MUST NOT", "optional",
100 "recommended", "SHOULD", and "SHOULD NOT", are to be interpreted as
101 described in [RFC2119].
103 Please note that the requirements specified in this document are to
104 be used in evaluating protocol submissions. As such, the
105 requirements language refers to capabilities of these protocols; the
106 protocol documents will specify whether these features are required,
107 recommended, or optional. For example, requiring that a protocol
108 support confidentiality is not the same thing as requiring that all
109 protocol traffic be encrypted.
114 Aboba & Dixon Informational [Page 2]
116 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
119 A protocol submission is not compliant if it fails to satisfy one or
120 more of the MUST or MUST NOT requirements for the capabilities that
121 it implements. A protocol submission that satisfies all the MUST,
122 MUST NOT, SHOULD, and SHOULD NOT requirements for its capabilities is
123 said to be "unconditionally compliant"; one that satisfies all the
124 MUST and MUST NOT requirements, but not all the SHOULD or SHOULD NOT
125 requirements for its protocols is said to be "conditionally
128 2. Known Incompatibilities between NA(P)T and IPsec
130 The incompatibilities between NA(P)T and IPsec can be divided into
133 1) Intrinsic NA(P)T issues. These incompatibilities derive directly
134 from the NA(P)T functionality described in [RFC3022]. These
135 incompatibilities will therefore be present in any NA(P)T device.
137 2) NA(P)T implementation weaknesses. These incompatibilities are not
138 intrinsic to NA(P)T, but are present in many NA(P)T
139 implementations. Included in this category are problems in
140 handling inbound or outbound fragments. Since these issues are
141 not intrinsic to NA(P)T, they can, in principle, be addressed in
142 future NA(P)T implementations. However, since the implementation
143 problems appear to be wide spread, they need to be taken into
144 account in a NA(P)T traversal solution.
146 3) Helper issues. These incompatibilities are present in NA(P)T
147 devices which attempt to provide for IPsec NA(P)T traversal.
148 Ironically, this "helper" functionality creates further
149 incompatibilities, making an already difficult problem harder to
150 solve. While IPsec traversal "helper" functionality is not
151 present in all NA(P)Ts, these features are becoming sufficiently
152 popular that they also need to be taken into account in a NA(P)T
155 2.1. Intrinsic NA(P)T Issues
157 Incompatibilities that are intrinsic to NA(P)T include:
159 a) Incompatibility between IPsec AH [RFC2402] and NAT. Since the AH
160 header incorporates the IP source and destination addresses in the
161 keyed message integrity check, NAT or reverse NAT devices making
162 changes to address fields will invalidate the message integrity
163 check. Since IPsec ESP [RFC2406] does not incorporate the IP
164 source and destination addresses in its keyed message integrity
165 check, this issue does not arise for ESP.
170 Aboba & Dixon Informational [Page 3]
172 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
175 b) Incompatibility between checksums and NAT. TCP and UDP checksums
176 have a dependency on the IP source and destination addresses
177 through inclusion of the "pseudo-header" in the calculation. As a
178 result, where checksums are calculated and checked upon receipt,
179 they will be invalidated by passage through a NAT or reverse NAT
182 As a result, IPsec Encapsulating Security Payload (ESP) will only
183 pass through a NAT unimpeded if TCP/UDP protocols are not involved
184 (as in IPsec tunnel mode or IPsec protected GRE), or checksums are
185 not calculated (as is possible with IPv4 UDP). As described in
186 [RFC793], TCP checksum calculation and verification is required in
187 IPv4. UDP/TCP checksum calculation and verification is required
190 Stream Control Transmission Protocol (SCTP), as defined in
191 [RFC2960] and [RFC3309], uses a CRC32C algorithm calculated only
192 on the SCTP packet (common header + chunks), so that the IP header
193 is not covered. As a result, NATs do not invalidate the SCTP CRC,
194 and the problem does not arise.
196 Note that since transport mode IPsec traffic is integrity
197 protected and authenticated using strong cryptography,
198 modifications to the packet can be detected prior to checking
199 UDP/TCP checksums. Thus, checksum verification only provides
200 assurance against errors made in internal processing.
202 c) Incompatibility between IKE address identifiers and NAT. Where IP
203 addresses are used as identifiers in Internet Key Exchange
204 Protocol (IKE) Phase 1 [RFC2409] or Phase 2, modification of the
205 IP source or destination addresses by NATs or reverse NATs will
206 result in a mismatch between the identifiers and the addresses in
207 the IP header. As described in [RFC2409], IKE implementations are
208 required to discard such packets.
210 In order to avoid use of IP addresses as IKE Phase 1 and Phase 2
211 identifiers, userIDs and FQDNs can be used instead. Where user
212 authentication is desired, an ID type of ID_USER_FQDN can be used,
213 as described in [RFC2407]. Where machine authentication is
214 desired, an ID type of ID_FQDN can be used. In either case, it is
215 necessary to verify that the proposed identifier is authenticated
216 as a result of processing an end-entity certificate, if
217 certificates are exchanged in Phase 1. While use of USER_FQDN or
218 FQDN identity types is possible within IKE, there are usage
219 scenarios (e.g. Security Policy Database (SPD) entries describing
220 subnets) that cannot be accommodated this way.
226 Aboba & Dixon Informational [Page 4]
228 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
231 Since the source address in the Phase 2 identifier is often used
232 to form a full 5-tuple inbound SA selector, the destination
233 address, protocol, source port and destination port can be used in
234 the selector so as not to weaken inbound SA processing.
236 d) Incompatibility between fixed IKE source ports and NAPT. Where
237 multiple hosts behind the NAPT initiate IKE SAs to the same
238 responder, a mechanism is needed to allow the NAPT to demultiplex
239 the incoming IKE packets from the responder. This is typically
240 accomplished by translating the IKE UDP source port on outbound
241 packets from the initiator. Thus responders must be able to
242 accept IKE traffic from a UDP source port other than 500, and must
243 reply to that port. Care must be taken to avoid unpredictable
244 behavior during re-keys. If the floated source port is not used
245 as the destination port for the re-key, the NAT may not be able to
246 send the re-key packets to the correct destination.
248 e) Incompatibilities between overlapping SPD entries and NAT. Where
249 initiating hosts behind a NAT use their source IP addresses in
250 Phase 2 identifiers, they can negotiate overlapping SPD entries
251 with the same responder IP address. The responder could then send
252 packets down the wrong IPsec SA. This occurs because to the
253 responder, the IPsec SAs appear to be equivalent, since they exist
254 between the same endpoints and can be used to pass the same
257 f) Incompatibilities between IPsec SPI selection and NAT. Since
258 IPsec ESP traffic is encrypted and thus opaque to the NAT, the NAT
259 must use elements of the IP and IPsec header to demultiplex
260 incoming IPsec traffic. The combination of the destination IP
261 address, security protocol (AH/ESP), and IPsec SPI is typically
262 used for this purpose.
264 However, since the outgoing and incoming SPIs are chosen
265 independently, there is no way for the NAT to determine what
266 incoming SPI corresponds to what destination host merely by
267 inspecting outgoing traffic. Thus, were two hosts behind the NAT
268 to attempt to create IPsec SAs at the same destination
269 simultaneously, it is possible that the NAT will deliver the
270 incoming IPsec packets to the wrong destination.
272 Note that this is not an incompatibility with IPsec per se, but
273 rather with the way it is typically implemented. With both AH and
274 ESP, the receiving host specifies the SPI to use for a given SA, a
275 choice which is significant only to the receiver. At present, the
276 combination of Destination IP, SPI, and Security Protocol (AH,
277 ESP) uniquely identifies a Security Association. Also, SPI values
278 in the range 1-255 are reserved to IANA and may be used in the
282 Aboba & Dixon Informational [Page 5]
284 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
287 future. This means that, when negotiating with the same external
288 host or gateway, the internal hosts behind the same NAPT can
289 select the same SPI value, such that one host inbound SA is
290 (SPI=470, Internal Dest IP=192.168.0.4)
291 and a different host inbound SA is
292 (SPI=470, Internal Dest IP=192.168.0.5).
293 The receiving NAPT will not be able to determine which internal
294 host an inbound IPsec packet with SPI=470 should be forwarded to.
296 It is also possible for the receiving host to allocate a unique
297 SPI to each unicast Security Association. In this case, the
298 Destination IP Address need only be checked to see if it is "any
299 valid unicast IP for this host", not checked to see if it is the
300 specific Destination IP address used by the sending host. Using
301 this technique, the NA(P)T can be assured of a low but non-zero
302 chance of forwarding packets to the wrong internal host, even when
303 two or more hosts establish SAs with the same external host.
305 This approach is completely backwards compatible, and only
306 requires the particular receiving host to make a change to its SPI
307 allocation and IPsec_esp_input() code. However, NA(P)T devices
308 may not be able to detect this behavior without problems
309 associated with parsing IKE payloads. And a host may still be
310 required to use a SPI in the IANA reserved range for the assigned
313 g) Incompatibilities between embedded IP addresses and NAT. Since
314 the payload is integrity protected, any IP addresses enclosed
315 within IPsec packets will not be translatable by a NAT. This
316 renders ineffective Application Layer Gateways (ALGs) implemented
317 within NATs. Protocols that utilize embedded IP addresses include
318 FTP, IRC, SNMP, LDAP, H.323, SIP, SCTP (optionally), and many
319 games. To address this issue, it is necessary to install ALGs on
320 the host or security gateway that can operate on application
321 traffic prior to IPsec encapsulation and after IPsec
324 h) Implicit directionality of NA(P)T. NA(P)Ts often require an
325 initial outbound packet to flow through them in order to create an
326 inbound mapping state. Directionality prohibits unsolicited
327 establishment of IPsec SAs to hosts behind the NA(P)T.
329 i) Inbound SA selector verification. Assuming IKE negotiates phase 2
330 selectors, inbound SA processing will drop the decapsulated
331 packet, since [RFC2401] requires a packet's source address match
332 the SA selector value, which NA(P)T processing of an ESP packet
338 Aboba & Dixon Informational [Page 6]
340 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
343 2.2. NA(P)T Implementation Weaknesses
345 Implementation problems present in many NA(P)Ts include:
347 j) Inability to handle non-UDP/TCP traffic. Some NA(P)Ts discard
348 non-UDP/TCP traffic or perform address-only translation when only
349 one host is behind the NAT. Such NAPTs are unable to enable SCTP,
350 ESP (protocol 50), or AH (protocol 51) traffic.
352 k) NAT mapping timeouts. NA(P)Ts vary in the time for which a UDP
353 mapping will be maintained in the absence of traffic. Thus, even
354 where IKE packets can be correctly translated, the translation
355 state may be removed prematurely.
357 l) Inability to handle outgoing fragments. Most NA(P)Ts can properly
358 fragment outgoing IP packets in the case where the IP packet size
359 exceeds the MTU on the outgoing interface. However, proper
360 translation of outgoing packets that are already fragmented is
361 difficult and most NAPTs do not handle this correctly. As noted
362 in Section 6.3 of [RFC3022], where two hosts originate fragmented
363 packets to the same destination, the fragment identifiers can
364 overlap. Since the destination host relies on the fragmentation
365 identifier and fragment offset for reassembly, the result will be
366 data corruption. Few NA(P)Ts protect against identifier
367 collisions by supporting identifier translation. Identifier
368 collisions are not an issue when NATs perform the fragmentation,
369 since the fragment identifier need only be unique within a
370 source/destination IP address pair.
372 Since a fragment can be as small as 68 octets [RFC791], there is
373 no guarantee that the first fragment will contain a complete TCP
374 header. Thus, a NA(P)T looking to recalculate the TCP checksum
375 may need to modify a subsequent fragment. Since fragments can be
376 reordered, and IP addresses can be embedded and possibly even
377 split between fragments, the NA(P)T will need to perform
378 reassembly prior to completing the translation. Few NA(P)Ts
381 m) Inability to handle incoming fragments. Since only the first
382 fragment will typically contain a complete IP/UDP/SCTP/TCP header,
383 NAPTs need to be able to perform the translation based on the
384 source/dest IP address and fragment identifier alone. Since
385 fragments can be reordered, the headers to a given fragment
386 identifier may not be known if a subsequent fragment arrives prior
387 to the initial one, and the headers may be split between
388 fragments. As a result, the NAPT may need to perform reassembly
389 prior to completing the translation. Few NAPTs support this.
390 Note that with NAT, the source/dest IP address is enough to
394 Aboba & Dixon Informational [Page 7]
396 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
399 determine the translation so that this does not arise. However,
400 it is possible for the IPsec or IKE headers to be split between
401 fragments, so that reassembly may still be required.
403 2.3. Helper Incompatibilities
405 Incompatibilities between IPsec and NAT "helper" functionality
408 n) Internet Security Association and Key Management Protocol (ISAKMP)
409 header inspection. Today some NAT implementations attempt to use
410 IKE cookies to de-multiplex incoming IKE traffic. As with
411 source-port de-multiplexing, IKE cookie de-multiplexing results in
412 problems with re-keying, since Phase 1 re-keys typically will not
413 use the same cookies as the earlier traffic.
415 o) Special treatment of port 500. Since some IKE implementations are
416 unable to handle non-500 UDP source ports, some NATs do not
417 translate packets with a UDP source port of 500. This means that
418 these NATs are limited to one IPsec client per destination
419 gateway, unless they inspect details of the ISAKMP header to
420 examine cookies which creates the problem noted above.
422 p) ISAKMP payload inspection. NA(P)T implementations that attempt to
423 parse ISAKMP payloads may not handle all payload ordering
424 combinations, or support vendor_id payloads for IKE option
427 3. Requirements for IPsec-NAT Compatibility
429 The goal of an IPsec-NAT compatibility solution is to expand the
430 range of usable IPsec functionality beyond that available in the
431 NAT-compatible IPsec tunnel mode solution described in Section 2.3.
433 In evaluating a solution to IPsec-NAT incompatibility, the following
434 criteria should be kept in mind:
438 Since IPv6 will address the address scarcity issues that
439 frequently lead to use of NA(P)Ts with IPv4, the IPsec-NAT
440 compatibility issue is a transitional problem that needs to be
441 solved in the time frame prior to widespread deployment of IPv6.
442 Therefore, to be useful, an IPsec-NAT compatibility solution MUST
443 be deployable on a shorter time scale than IPv6.
450 Aboba & Dixon Informational [Page 8]
452 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
455 Since IPv6 deployment requires changes to routers as well as
456 hosts, a potential IPsec-NAT compatibility solution, which
457 requires changes to both routers and hosts, will be deployable on
458 approximately the same time scale as IPv6. Thus, an IPsec-NAT
459 compatibility solution SHOULD require changes only to hosts, and
462 Among other things, this implies that communication between the
463 host and the NA(P)T SHOULD NOT be required by an IPsec-NAT
464 compatibility solution, since that would require changes to the
465 NA(P)Ts, and interoperability testing between the host and NA(P)T
466 implementations. In order to enable deployment in the short term,
467 it is necessary for the solution to work with existing router and
468 NA(P)T products within the deployed infrastructure.
470 Protocol Compatibility
472 An IPsec NAT traversal solution is not expected to resolve issues
473 with protocols that cannot traverse NA(P)T when unsecured with
474 IPsec. Therefore, ALGs may still be needed for some protocols,
475 even when an IPsec NAT traversal solution is available.
479 Since NA(P)T directionality serves a security function, IPsec
480 NA(P)T traversal solutions should not allow arbitrary incoming
481 IPsec or IKE traffic from any IP address to be received by a host
482 behind the NA(P)T, although mapping state should be maintained
483 once bidirectional IKE and IPsec communication is established.
485 Telecommuter Scenario
487 Since one of the primary uses of IPsec is remote access to
488 corporate Intranets, a NA(P)T traversal solution MUST support
489 NA(P)T traversal, via either IPsec tunnel mode or L2TP over IPsec
490 transport mode [RFC3193]. This includes support for traversal of
491 more than one NA(P)T between the remote client and the VPN
494 The client may have a routable address and the VPN gateway may be
495 behind at least one NA(P)T, or alternatively, both the client and
496 the VPN gateway may be behind one or more NA(P)Ts. Telecommuters
497 may use the same private IP address, each behind their own NA(P)T,
498 or many telecommuters may reside on a private network behind the
499 same NA(P)T, each with their own unique private address,
500 connecting to the same VPN gateway. Since IKE uses UDP port 500
501 as the destination, it is not necessary to enable multiple VPN
502 gateways operating behind the same external IP address.
506 Aboba & Dixon Informational [Page 9]
508 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
511 Gateway-to-Gateway Scenario
513 In a gateway-gateway scenario, a privately addressed network (DMZ)
514 may be inserted between the corporate network and the Internet.
515 In this design, IPsec security gateways connecting portions of the
516 corporate network may be resident in the DMZ and have private
517 addresses on their external (DMZ) interfaces. A NA(P)T connects
518 the DMZ network to the Internet.
522 A NAT-IPsec solution MUST enable secure host-host TCP/IP
523 communication via IPsec, as well as host-gateway communications.
524 A host on a private network MUST be able to bring up one or
525 multiple IPsec-protected TCP connections or UDP sessions to
526 another host with one or more NA(P)Ts between them. For example,
527 NA(P)Ts may be deployed within branch offices connecting to the
528 corporate network, with an additional NA(P)T connecting the
529 corporate network to the Internet. Likewise, NA(P)Ts may be
530 deployed within a corporate network LAN or WAN to connect wireless
531 or remote location clients to the corporate network. This may
532 require special processing of TCP and UDP traffic on the host.
534 Bringing up SCTP connections to another host with one or more NA(P)Ts
535 between them may present special challenges. SCTP supports multi-
536 homing. If more than one IP address is used, these addresses are
537 transported as part of the SCTP packet during the association setup
538 (in the INIT and INIT-ACK chunks). If only single homed SCTP end-
539 points are used, [RFC2960] section 3.3.2.1 states:
541 Note that not using any IP address parameters in the INIT and
542 INIT-ACK is an alternative to make an association more likely
543 to work across a NAT box.
545 This implies that IP addresses should not be put into the SCTP packet
546 unless necessary. If NATs are present and IP addresses are included,
547 then association setup will fail. Recently [AddIP] has been proposed
548 which allows the modification of the IP address once an association
549 is established. The modification messages have also IP addresses in
550 the SCTP packet, and so will be adversely affected by NATs.
552 Firewall Compatibility
554 Since firewalls are widely deployed, a NAT-IPsec compatibility
555 solution MUST enable a firewall administrator to create simple,
556 static access rule(s) to permit or deny IKE and IPsec NA(P)T
557 traversal traffic. This implies, for example, that dynamic
558 allocation of IKE or IPsec destination ports is to be avoided.
562 Aboba & Dixon Informational [Page 10]
564 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
569 An IPsec-NAT compatibility solution should be capable of being
570 deployed within an installation consisting of thousands of
571 telecommuters. In this situation, it is not possible to assume
572 that only a single host is communicating with a given destination
573 at a time. Thus, an IPsec-NAT compatibility solution MUST address
574 the issue of overlapping SPD entries and de-multiplexing of
579 At a minimum, an IPsec-NAT compatibility solution MUST support
580 traversal of the IKE and IPsec modes required for support within
581 [RFC2409] and [RFC2401]. For example, an IPsec gateway MUST
582 support ESP tunnel mode NA(P)T traversal, and an IPsec host MUST
583 support IPsec transport mode NA(P)T traversal. The purpose of AH
584 is to protect immutable fields within the IP header (including
585 addresses), and NA(P)T translates addresses, invalidating the AH
586 integrity check. As a result, NA(P)T and AH are fundamentally
587 incompatible and there is no requirement that an IPsec-NAT
588 compatibility solution support AH transport or tunnel mode.
590 Backward Compatibility and Interoperability
592 An IPsec-NAT compatibility solution MUST be interoperable with
593 existing IKE/IPsec implementations, so that they can communicate
594 where no NA(P)T is present. This implies that an IPsec-NAT
595 compatibility solution MUST be backwards-compatible with IPsec as
596 defined in [RFC2401] and IKE as defined in [RFC2409]. In
597 addition, it SHOULD be able to detect the presence of a NA(P)T, so
598 that NA(P)T traversal support is only used when necessary. This
599 implies that it MUST be possible to determine that an existing IKE
600 implementation does not support NA(P)T traversal, so that a
601 standard IKE conversation can occur, as described in [RFC2407],
602 [RFC2408], and [RFC2409]. Note that while this implies initiation
603 of IKE to port 500, there is no requirement for a specific source
604 port, so that UDP source port 500 may or may not be used.
608 An IPsec-NAT compatibility solution MUST NOT introduce additional
609 IKE or IPsec security vulnerabilities. For example, an acceptable
610 solution must demonstrate that it introduces no new denial of
611 service or spoofing vulnerabilities. IKE MUST be allowed to re-
612 key in a bi-directional manner as described in [RFC2408].
618 Aboba & Dixon Informational [Page 11]
620 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
623 4. Existing Solutions
625 4.1. IPsec Tunnel Mode
627 In a limited set of circumstances, it is possible for an IPsec tunnel
628 mode implementation, such as that described in [DHCP], to traverse
629 NA(P)T successfully. However, the requirements for successful
630 traversal are sufficiently limited so that a more general solution is
633 1) IPsec ESP. IPsec ESP tunnels do not cover the outer IP header
634 within the message integrity check, and so will not suffer
635 Authentication Data invalidation due to address translation.
636 IPsec tunnels also need not be concerned about checksum
639 2) No address validation. Most current IPsec tunnel mode
640 implementations do not perform source address validation so that
641 incompatibilities between IKE identifiers and source addresses
642 will not be detected. This introduces security vulnerabilities as
643 described in Section 5.
645 3) "Any to Any" SPD entries. IPsec tunnel mode clients can negotiate
646 "any to any" SPDs, which are not invalidated by address
647 translation. This effectively precludes use of SPDs for the
648 filtering of allowed tunnel traffic.
650 4) Single client operation. With only a single client behind a NAT,
651 there is no risk of overlapping SPDs. Since the NAT will not need
652 to arbitrate between competing clients, there is also no risk of
653 re-key mis-translation, or improper incoming SPI or cookie
656 5) No fragmentation. When certificate authentication is used, IKE
657 fragmentation can be encountered. This can occur when certificate
658 chains are used, or even when exchanging a single certificate if
659 the key size, or the size of other certificate fields (such as the
660 distinguished name and other extensions), is large enough.
661 However, when pre-shared keys are used for authentication,
662 fragmentation is less likely.
664 6) Active sessions. Most VPN sessions typically maintain ongoing
665 traffic flow during their lifetime so that UDP port mappings are
666 less likely be removed due to inactivity.
674 Aboba & Dixon Informational [Page 12]
676 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
681 RSIP, described in [RSIP] and [RSIPFrame], includes mechanisms for
682 IPsec traversal, as described in [RSIPsec]. By enabling host-NA(P)T
683 communication, RSIP addresses issues of IPsec SPI de-multiplexing, as
684 well as SPD overlap. It is thus suitable for use in enterprises, as
685 well as home networking scenarios. By enabling hosts behind a NAT to
686 share the external IP address of the NA(P)T (the RSIP gateway), this
687 approach is compatible with protocols including embedded IP
690 By tunneling IKE and IPsec packets, RSIP avoids changes to the IKE
691 and IPsec protocols, although major changes are required to host IKE
692 and IPsec implementations to retrofit them for RSIP-compatibility.
693 It is thus compatible with all existing protocols (AH/ESP) and modes
694 (transport and tunnel).
696 In order to handle de-multiplexing of IKE re-keys, RSIP requires
697 floating of the IKE source port, as well as re-keying to the floated
698 port. As a result, interoperability with existing IPsec
699 implementations is not assured.
701 RSIP does not satisfy the deployment requirements for an IPsec-NAT
702 compatibility solution because an RSIP-enabled host requires a
703 corresponding RSIP-enabled gateway in order to establish an IPsec SA
704 with another host. Since RSIP requires changes only to clients and
705 routers and not to servers, it is less difficult to deploy than IPv6.
706 However, for vendors, implementation of RSIP requires a substantial
707 fraction of the resources required for IPv6 support. Thus, RSIP
708 solves a "transitional" problem on a long-term time scale, which is
713 6to4, as described in [RFC3056] can form the basis for an IPsec-NAT
714 traversal solution. In this approach, the NAT provides IPv6 hosts
715 with an IPv6 prefix derived from the NAT external IPv4 address, and
716 encapsulates IPv6 packets in IPv4 for transmission to other 6to4
717 hosts or 6to4 relays. This enables an IPv6 host using IPsec to
718 communicate freely to other hosts within the IPv6 or 6to4 clouds.
720 While 6to4 is an elegant and robust solution where a single NA(P)T
721 separates a client and VPN gateway, it is not universally applicable.
722 Since 6to4 requires the assignment of a routable IPv4 address to the
723 NA(P)T in order to allow formation of an IPv6 prefix, it is not
724 usable where multiple NA(P)Ts exist between the client and VPN
730 Aboba & Dixon Informational [Page 13]
732 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
735 gateway. For example, an NA(P)T with a private address on its
736 external interface cannot be used by clients behind it to obtain an
737 IPv6 prefix via 6to4.
739 While 6to4 requires little additional support from hosts that already
740 support IPv6, it does require changes to NATs, which need to be
741 upgraded to support 6to4. As a result, 6to4 may not be suitable for
742 deployment in the short term.
744 5. Security Considerations
746 By definition, IPsec-NAT compatibility requires that hosts and
747 routers implementing IPsec be capable of securely processing packets
748 whose IP headers are not cryptographically protected. A number of
749 issues arise from this that are worth discussing.
751 Since IPsec AH cannot pass through a NAT, one of the side effects of
752 providing an IPsec-NAT compatibility solution may be for IPsec ESP
753 with null encryption to be used in place of AH where a NAT exists
754 between the source and destination. However, it should be noted that
755 ESP with null encryption does not provide the same security
756 properties as AH. For example, there are security risks relating to
757 IPv6 source routing that are precluded by AH, but not by ESP with
760 In addition, since ESP with any transform does not protect against
761 source address spoofing, some sort of source IP address sanity
762 checking needs to be performed. The importance of the anti-spoofing
763 check is not widely understood. There is normally an anti-spoofing
764 check on the Source IP Address as part of IPsec_{esp,ah}_input().
765 This ensures that the packet originates from the same address as that
766 claimed within the original IKE Phase 1 and Phase 2 security
767 associations. When a receiving host is behind a NAT, this check
768 might not strictly be meaningful for unicast sessions, whereas in the
769 Global Internet this check is important for tunnel-mode unicast
770 sessions to prevent a spoofing attack described in [AuthSource],
771 which can occur when access controls on the receiver depend upon the
772 source IP address of verified ESP packets after decapsulation.
773 IPsec-NAT compatibility schemes should provide anti-spoofing
774 protection if it uses source addresses for access controls.
776 Let us consider two hosts, A and C, both behind (different) NATs, who
777 negotiate IPsec tunnel mode SAs to router B. Hosts A and C may have
778 different privileges; for example, host A might belong to an employee
779 trusted to access much of the corporate Intranet, while C might be a
780 contractor only authorized to access a specific web site.
786 Aboba & Dixon Informational [Page 14]
788 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
791 If host C sends a tunnel mode packet spoofing A's IP address as the
792 source, it is important that this packet not be accorded the
793 privileges corresponding to A. If authentication and integrity
794 checking is performed, but no anti-spoofing check (verifying that the
795 originating IP address corresponds to the SPI) then host C may be
796 allowed to reach parts of the network that are off limits. As a
797 result, an IPsec-NAT compatibility scheme MUST provide some degree of
798 anti-spoofing protection.
802 6.1. Normative References
804 [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791,
807 [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC
810 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
811 Requirement Levels", BCP 14, RFC 2119, March 1997.
813 [RFC2401] Atkinson, R. and S. Kent, "Security Architecture for the
814 Internet Protocol", RFC 2401, November 1998.
816 [RFC2402] Kent, S. and R. Atkinson, "IP Authentication Header",
817 RFC 2402, November 1998.
819 [RFC2406] Kent,S. and R. Atkinson, "IP Encapsulating Security
820 Payload (ESP)", RFC 2406, November 1998.
822 [RFC2407] Piper, D., "The Internet IP Security Domain of
823 Interpretation for ISAKMP", RFC 2407, November 1998.
825 [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange
826 (IKE)", RFC 2409, November 1998.
828 [RFC2663] Srisuresh, P. and M. Holdredge, "IP Network Address
829 Translator (NAT) Terminology and Considerations", RFC
832 [RFC3022] Srisuresh, P. and K. Egevang, "Traditional IP Network
833 Address Translator (Traditional NAT)", RFC 3022, January
842 Aboba & Dixon Informational [Page 15]
844 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
847 6.2. Informative References
849 [RFC2408] Maughan, D., Schertler, M., Schneider, M. and J. Turner,
850 "Internet Security Association and Key Management
851 Protocol (ISAKMP)", RFC 2408, November 1998.
853 [RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C.,
854 Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M.,
855 Zhang, M. and V. Paxson, "Stream Control Transmission
856 Protocol", RFC 2960, October 2000.
858 [RFC3056] Carpenter, B. and K. Moore, "Connection of IPv6 Domains
859 via IPv4 Clouds", RFC 3056, February 2001.
861 [RFC3193] Patel, B., Aboba, B., Dixon, W., Zorn, G. and S. Booth,
862 "Securing L2TP using IPsec", RFC 3193, November 2001.
864 [RFC3309] Stone, J., Stewart, R. and D. Otis, "Stream Control
865 Transmission Protocol (SCTP) Checksum Change", RFC 3309,
868 [RSIPFrame] Borella, M., Lo, J., Grabelsky, D. and G. Montenegro,
869 "Realm Specific IP: Framework", RFC 3102, October 2001.
871 [RSIP] Borella, M., Grabelsky, D., Lo, J. and K. Taniguchi,
872 "Realm Specific IP: Protocol Specification", RFC 3103,
875 [RSIPsec] Montenegro, G. and M. Borella, "RSIP Support for End-
876 to-End IPsec", RFC 3104, October 2001.
878 [DHCP] Patel, B., Aboba, B., Kelly, S. and V. Gupta, "Dynamic
879 Host Configuration Protocol (DHCPv4) Configuration of
880 IPsec Tunnel Mode", RFC 3456, January 2003.
882 [AuthSource] Kent, S., "Authenticated Source Addresses", IPsec WG
883 Archive (ftp://ftp.ans.net/pub/archive/IPsec), Message-
884 Id: <v02130517ad121773c8ed@[128.89.0.110]>, January 5,
887 [AddIP] Stewart, R., et al., "Stream Control Transmission
888 Protocol (SCTP) Dynamic Address Reconfiguration", Work
898 Aboba & Dixon Informational [Page 16]
900 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
905 Thanks to Steve Bellovin of AT&T Research, Michael Tuexen of Siemens,
906 Peter Ford of Microsoft, Ran Atkinson of Extreme Networks, and Daniel
907 Senie for useful discussions of this problem space.
909 8. Authors' Addresses
912 Microsoft Corporation
916 Phone: +1 425 706 6605
918 EMail: bernarda@microsoft.com
923 601 Union Square, Suite #4200-300
926 EMail: ietf-wd@v6security.com
954 Aboba & Dixon Informational [Page 17]
956 RFC 3715 IPsec-NAT Compatibility Requirements March 2004
959 9. Full Copyright Statement
961 Copyright (C) The Internet Society (2004). This document is subject
962 to the rights, licenses and restrictions contained in BCP 78 and
963 except as set forth therein, the authors retain all their rights.
965 This document and the information contained herein are provided on an
966 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
967 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
968 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
969 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
970 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
971 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
973 Intellectual Property
975 The IETF takes no position regarding the validity or scope of any
976 Intellectual Property Rights or other rights that might be claimed to
977 pertain to the implementation or use of the technology described in
978 this document or the extent to which any license under such rights
979 might or might not be available; nor does it represent that it has
980 made any independent effort to identify any such rights. Information
981 on the procedures with respect to rights in RFC documents can be
982 found in BCP 78 and BCP 79.
984 Copies of IPR disclosures made to the IETF Secretariat and any
985 assurances of licenses to be made available, or the result of an
986 attempt made to obtain a general license or permission for the use of
987 such proprietary rights by implementers or users of this
988 specification can be obtained from the IETF on-line IPR repository at
989 http://www.ietf.org/ipr.
991 The IETF invites any interested party to bring to its attention any
992 copyrights, patents or patent applications, or other proprietary
993 rights that may cover technology that may be required to implement
994 this standard. Please address the information to the IETF at ietf-
999 Funding for the RFC Editor function is currently provided by the
1010 Aboba & Dixon Informational [Page 18]