Creating a VPN Gateway with a Unikernel Running WireGuard
nanovms.com
nanovms.com
What a time to be alive... we can create a single purpose operating system, to run under a hypervisor, to forward traffic inside a NAT firewall, with patches applied that bypass the separation of user-space configuration parsing and move them into kernel functions.
Or you could just use OpenBSD, which comes with Wireguard[1]
The security profile of OpenBSD will likely suit the needs of the majority of people.
Trying to diagnose issues or track traffic per user becomes nigh impossible transiting a PAT-NAT.