I had two goals I wanted to accomplish with VPNs.
I need to redirect all outbound traffic from a specific subnet through a VPN so any client on that subnet would have its privacy protected by the VPN.
Allow me to VPN into my home network from somehwere else and have access to everything as if I was sitting on my computer at home.
Both of them could have been accomlished with any VPN most likely but I went with WireGuard since it is a simple and fast VPN whose setup is similar to SSH so it was inuitive for me to setup.
To use Wireguard inside of a LXC container the host has to have Wireguard installed since LXC guests are run with the kernel of the host system. Wireguard was first mainlined into the Linux kernel in version 5.6 so with kernel versions using 5.6 or later it is already built in. Anything before 5.6 that doesn't specifically have Wireguard backported in will need to use kernel modules to get it working. Wireguard.com has detailed instructions on how to install it on nearly any platform. Since I am using Proxmox as my host it was already backported into the kernel.
Additionally I needed the
wireguard-tools package in the LXC guest and
resolvconf so DNS can be configured properly.
# echo "deb http://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/buster-backports.list # apt update # apt install --no-install-recommends wireguard-tools # apt install resolvconf