Isso é algo que iptables
lida muito bem com um kernel "recente" (qualquer coisa desde 2.4 , que tenha mais de 10 anos).
O truque é fazer um "reverso natting": mapear o endereço IP de qualquer host de sua rede local que está acessando os dois servidores NATted para o IP público do seu gateway.
Algo como o seguinte (apenas que o NATing governa, sem firewall):
iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.0.0/24 -d 192.168.0.5 --dport 4444 -j DNAT --to-destination :12345
iptables -t nat -A POSTROUTING -o eth1 -p tcp -m tcp -s 192.168.0.0/24 --dport 12345 -j SNAT --to-source 192.10.2.1
iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.0.0/24 -d 192.168.0.7 --dport 5555 -j DNAT --to-destination :12345
iptables -t nat -A POSTROUTING -o eth1 -p tcp -m tcp -s 192.168.0.0/24 --dport 12345 -j SNAT --to-source 192.10.2.1
iptables -t nat -A PREROUTING -p tcp -m tcp -d 192.168.0.1 --dport 4444 -j DNAT --to-destination 192.168.0.5:12345
iptables -t nat -A PREROUTING -p tcp -m tcp -d 192.168.0.1 --dport 5555 -j DNAT --to-destination 192.168.0.7:12345
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.0.1
Se você não estiver familiarizado com a arte arcaica de escrever regras de firewall, sugiro usar uma interface GUI como fwbuilder .