Why not just use Tailscale which appears to be working perfectly well for a similar scenario to yours in my situation?