Sua solução é usar iptables
para definir as regras NAT.
Para os meus exemplos, vou me referir a $ physicalServerIP que é um IP local e $ publicIP para o seu IP público.
Para redirecionar seu Tomcat (assumido em $ physicalServerIP) para que suas tentativas de se conectar a um servidor na porta 8081 sejam realmente enviadas para o servidor na porta 8082:
iptables -t nat -A PREROUTING -p tcp -s $physicalServerIP --dport 8081 -j REDIRECT --to-port 8082
As solicitações de entrada que chegam no $ publicIP na porta 8082 podem ser enviadas para $ physicalServerIP na porta 8081:
iptables -t nat -A PREROUTING -d $publicIP -p tcp -m tcp --dport 8082 -j DNAT --to-destination $physicalServerIP:8081
Para completar o NAT anterior, direcione os pacotes de $ physicalServerIP para serem enviados (de volta) através do NAT na interface pública:
iptables -t nat -A POSTROUTING -s $physicalServerIP/32 -j SNAT --to-source $publicIP
Com essa abordagem em mente, se você quiser que toda a LAN seja NATed, você pode alterar o 32
do comando anterior para 24
se sua LAN for $ physicalServerIP / 24.