--- strongswan-5.7.0/src/_updown/_updown.in.bak	2019-02-06 18:19:25.723893992 +0000
+++ strongswan-5.7.0/src/_updown/_updown.in	2019-02-06 18:28:21.520560665 +0000
@@ -130,6 +130,13 @@
 #              address family.
 #
 
+VARS=(
+	id status name lefthost type ctype psk local local_id leftsubnets
+	remote_id remote rightsubnets x3 x4 x5 x6 x7 x8 x9 x10 x11 x12
+	x13 x14 x15 x16 x17 x18 x19 proto x20 x21 x22
+	route x23 mode interface_mode interface_address interface_mtu rest
+)
+
 function ip_encode() {
 	local IFS=.
 
@@ -319,6 +326,13 @@
 	fi
 	;;
 up-client:iptables)
+	# Read IPsec configuration
+	while IFS="," read -r "${VARS[@]}"; do
+		if [ "${PLUTO_CONNECTION}" = "${name}" ]; then
+			break
+		fi
+	done < /var/ipfire/vpn/config
+
 	# connection to client subnet, with (left/right)firewall=yes, coming up
 	# This is used only by the default updown script, not by your custom
 	# ones, so do not mess with it; see CAUTION comment up at top.
@@ -383,23 +397,25 @@
 	      "tunnel+ $PLUTO_PEER -- $PLUTO_ME"
 	fi
 
-	# Add source nat so also the gateway can access the other nets
-	eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
-	for _src in ${GREEN_ADDRESS} ${BLUE_ADDRESS} ${ORANGE_ADDRESS}; do
-		ip_in_subnet "${_src}" "${PLUTO_MY_CLIENT}"
-		if [ $? -eq 0 ]; then
-			src=${_src}
-			break
+	if [ -z "${interface_mode}" ]; then
+		# Add source nat so also the gateway can access the other nets
+		eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
+		for _src in ${GREEN_ADDRESS} ${BLUE_ADDRESS} ${ORANGE_ADDRESS}; do
+			ip_in_subnet "${_src}" "${PLUTO_MY_CLIENT}"
+			if [ $? -eq 0 ]; then
+				src=${_src}
+				break
+			fi
+		done
+
+		if [ -n "${src}" ]; then
+			iptables --wait -t nat -A IPSECNAT -o $PLUTO_INTERFACE -s $PLUTO_ME -d $PLUTO_PEER_CLIENT -j SNAT --to $src
+			logger -t $TAG -p $FAC_PRIO \
+				"snat+ $PLUTO_INTERFACE-$PLUTO_ME : $PLUTO_PEER_CLIENT - $src"
+		else
+			logger -t $TAG -p $FAC_PRIO \
+				"Cannot create NAT rule because no IP of the IPFire does match the subnet. $PLUTO_MY_CLIENT"
 		fi
-	done
-
-	if [ -n "${src}" ]; then
-		iptables --wait -t nat -A IPSECNAT -o $PLUTO_INTERFACE -s $PLUTO_ME -d $PLUTO_PEER_CLIENT -j SNAT --to $src
-		logger -t $TAG -p $FAC_PRIO \
-			"snat+ $PLUTO_INTERFACE-$PLUTO_ME : $PLUTO_PEER_CLIENT - $src"
-	else
-		logger -t $TAG -p $FAC_PRIO \
-			"Cannot create NAT rule because no IP of the IPFire does match the subnet. $PLUTO_MY_CLIENT"
 	fi
 
 	# Flush routing cache
