IPSEC pass through is a technique for allowing IPSEC packets to pass through a NAT router. By itself, IPSEC does not work when it travels through NAT. Newer IKE and IPSEC implementations support NAT-Traversal which is a technique to detect NAT and switch to UDP encapsultion for IPSEC ESP packets. However, many router vendors have developed a "pass through" technique that allows IPSEC packets to pass through NAT without NAT-T support.
IPSEC pass through implementations can vary in the features that they support. Early implementations of IPSEC pass through only supported a single client passing through NAT. Others allow multiple connections as long as each client is using a different VPN server. More advanced implementations use cookie tracking for IKE and SPI tracking for IPSEC to support multiple connections through NAT.
CDRouter contains a few IPSEC pass through related testvars that can be used to control the testing of an IPSEC pass through implementation.
testvar supportsIPSECpass yes
supportsIPSECpass must be set to yes. Otherwise, any IPSEC pass through tests will be skipped.
testvar alwaysUseIke yes
testvar ipsecPassRetransmit yes
testvar ipsecMaxTunnels 10
ipsecMaxTunnels testvar controls how many IPSEC pass through sessions CDRouter will attempt to create.
testvar ipsecScaleSameServer yes
ipsecScaleSameServer.
testvar unknownPassthrough yes
unknownPassthrough to "yes".
testvar ipsecAddressType private
ipsecAddressType should be set to 'private'. However, some routers require a DMZ type configuration where the public IP address is used on the LAN side. In these cases, the ipsecAddressType
should be set to 'public'.