How to handle IPSec VPN and Endpoints using Dual Stack Lite (DS-Lite) behind CGNAT?
I've set up an IPsec VPN with certificate-based authentication and started migrating away from SSL-VPN.
Unfortunately, around 10% of our remote users are on DS-Lite. This means they have a public IPv6 address but share a single IPv4 address via Carrier Grade NAT. SSL-VPN works in this setup, but IPsec does not.
To address this, I:
Added an IPv6 address to our WAN interface via Router Advertisement (ping6 works in both directions).
Created a AAAA DNS record for the FQDN vpn.companyname.com.
Added the subnet fd00:abcd::10 - fd00:abcd::100 /64 to the IPsec tunnel, along with 172.16.25.x IPv4 addresses.
Enabled split tunneling for IPv6: Split to Tunnel → none (we don’t use IPv6 internally elsewhere).
Added an IPsec Phase 2 entry via CLI with:
set src-addr-type subnet6
set dst-addr-type subnet6
Now, FortiClient 7.4.3 connects but freezes after clicking "Connect". It does not fail, it just hangs indefinitely.
The idea is to establish the IPsec tunnel over IPv6 and route all private IPv4 traffic through it.
The setup is working fine for IPv4 only.
Target is a FG200F on v7.4.7. vs. FortiClient v7.4.3
<block_ipv6>0</block_ipv6> is set in the FortiClient config.
