Usando iptables
, você definiria o endereço SNAT. Eu assumo que cada um desses "hosts" são máquinas virtuais como no Xen, OpenVZ, KVM, etc. Você faria algo assim:
iptables -t nat -A POSTROUTING -p tcp -o eth0 -s 10.0.0.2 -j SNAT --to 5.0.0.2
iptables -t nat -A POSTROUTING -p tcp -o eth0 -s 10.0.0.3 -j SNAT --to 5.0.0.3
... and so on
O acima assume que a porta da Internet é eth0 e que os seus endereços IP do host virtual são 10.0.0.2 e 10.0.0.3 e que seus endereços IP públicos são 5.0.0.2 e 5.0.0.3, respectivamente.
Se os seus hosts são na verdade apenas virtualhosts no Apache ou similar, isso é um jogo totalmente diferente.