(Você precisará de privilégios de administrador para isso, então faça o login como root ou use o sudo de acordo)
Uma solução fácil é usar iptables
para isso:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to foo_serverip:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to foo_serverip:443
iptables -t nat -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE
redirecionará todo o tráfego na interface eth0
(opção: -i) recebida nas portas 80 e 443 (opção: --dport 80, 443) para um endereço IP foo_serverip
na porta 80 ou 443.
Depois de testado, você pode salvar suas regras atuais do iptables com
iptables-save > /etc/iptables.rules
e restaure-os com
iptables-restore < /etc/iptables.rules
Sabendo disso, as opções para restaurar as regras no momento da inicialização são múltiplas. O mais simples que posso pensar é editar seu /etc/rc.local
e acrescentar a linha /sbin/iptables-restore < /etc/iptables.rules
a ele.
Eu não acho que ufw
possa fazer nada disso sozinho.