Buenas, tienes varias opciones para hacerlo, la mas limpia y que yo tengo implementada de manera parecida es levantar un tunel con wireguard entre los equipos de tu casa y el vps que tienes fuera, despues habilitas el ipforward en la maquina vps y con iptables o nftables haces NAT de origen de la IP del tunel de tu maquina virtual sobre la IP publica con la que la quieras sacar, y si necesitas entrada desde internet y que esa IP sea solo de un maquina virtual pues lo contrario, NAT de destino sobre la ippublica y se lo envias a la IP del tunel de wireguard, mira este es un ejemplo de un script que tengo para las iptables y como envio lo que me llega al vps a ciertos puertos de la interface publica, se lo mando a un equipo que tiene un transmission para descargas de torrent y un plex
NATS PARA TRANSMISSION en GEN8 POR TUNEL WG0
$iptables -t NAT -A PREROUTING -i ens3 -p tcp –dport 51414 -j DNAT –to-destination 10.0.5.7:51414
$iptables -t NAT -A PREROUTING -i ens3 -p udp –dport 51414 -j DNAT –to-destination 10.0.5.7:51414
$iptables -t NAT -A PREROUTING -i ens3 -p tcp –dport 32400 -j DNAT –to-destination 10.0.5.7:32400
$iptables -t NAT -A PREROUTING -i ens3 -p tcp –dport 80 -j DNAT –to-destination 10.0.5.7:32400
para sacarlo a internet con la IP publica, le plantas esto cambiando el interface ens3 por tu identificador de interface o tu IP publica, incluso podrias hacer balanceo de salida por las 3 direcciones que tienes,
iptables -t NAT -A POSTROUTING -o ens3 -j MASQUERADE
Lo puedes complicar todo lo que quieras, mirate iproute2 de un kernel moderno y veras que puedes implementar por ejemplo tuneles gre por dentro de los tuneles de wireguard y con un bridge llevarte la IP publica del vps directamente a tu entorno virtual en tu casa/oficina, pero esto ya es mucha mandanga para explicartelo por aquí, suerte.
Un saludo.