Yes this is possible. Any VPN technology that can carry IPv6 over IPv4 will work. Personally I use openvpn as my go-to VPN solution but others may have other preferences.
The ideal configuration would be.
- Your hosting provider allocates a block of IPv6 addresess for your VPN and routes it to your server.
- You use that block to address systems on the VPN
- Your server routes between the VPN and your hosting provider's network.
- Machines on the VPN have their IPv6 default gateway pointed at the VPN.
Unfortunately this isn't possible with all hosting providers. Some providers will give you a block of addreses but they are "on-link" addresses for which traffic will only be delivered to your server if your server responds to neighbour-discovery requests for them. There is one provider i'm aware of who will only give your server a single v6 address.
So what are the alternatives?
One is NAT, the IPv6 proponents have a strong dislike for NAT but nevertheless Linux eventually implemented IPv6 NAT functionality, so you can use "unique-local" addresses on your VPN and use NAT to translate them to your server's global address.
The other is "proxy NDP". If your ISP allocated your server a block of "on-link" addresses you can set your server up to respond to neighour discover requests for those addresses without adding the addresses as local addresses on your server. You can then use the addresses to address systems on the VPN.