I'm a migratory bird with three locations. Each has an OpenVPN server with several uses: connect to devices on the LAN to update configs or troubleshoot, present a 'home' IP when making a purchase (consistent with shipping/billing address), bypass IP geo restrictions (e.g. homedepot.com is inaccessible from countries where they don't have stores), stream video.
All was well (everything IPv4) until SFR, my ISP in Paris, switched from providing a public IPv4 address to CGNAT. IPv6 works fine so I changed the server to use it and thought all was well again. But I get to Bangkok and discover that True, my ISP here, doesn't support IPv6 at all.
First, I tried Teredo based on https://techcommunity.microsoft.com/t5/windows-insider-program/teredo-problem-on-windows-11/m-p/2614126 . It appears to connect ok (state shows qualified), and a Wireshark capture seems to show proper encapsulation of IPv6 packets, but nothing arrives at the other end. I know the router or True isn't blocking Teredo, because the control packets get proper responses. I don't know how to troubleshoot this further.
Next, tried https://tunnelbroker.net/ . I can't complete the setup -- HE's instructions stop at Win 10, the netsh interface commands in Win 11 have new syntax and symantics, and I failed to find a solution online.
Then, tried SOCAT IPv4 to IPv6 Routing on a dual-stack VPS I have in Los Angeles. It is fully functional, but performance is awful, primarily caused by routing across 18 timezones instead of 6. I could fix this with a VPS in e.g. Singapore, but if possible I'd like to avoid the expense, administrative hassle and additional point of failure.
Finally, tried https://1.1.1.1/ . This works fine for e.g. SSH access, and I can even bring up the VPN, but Cloudflare messes with the routing tables so traffic doesn't flow through the VPN. When I try to fix this manually, they quickly overwrite my changes.