Eu já imaginei fazer isso sozinho.
2 regras e um sinalizador devem ser definidos para isso.
Exemplo usado aqui é para "telnet localhost XXXX", deve encaminhar pacotes para Ext.er.nal.IP: YYYY.
sysctl -w net.ipv4.conf.all.route_localnet = 1
Este flag infelizmente existe apenas nos kernels linux mais recentes e não está disponível em um kernel antigo (também não existe nenhum sinalizador alternativo no kernel antigo). Não estou certo de qual kernel exato é a bandeira disponível. Eu acredito que esteja disponível nas versões do kernel 3.XX. Esse sinalizador é considerar os endereços de loopback como um endereço de origem ou de destino adequado. Fonte: link
iptables -t nat -A OUTPUT -p tcp --dportar XXXX -j DNAT - para o destino Ext.er.nal.IP: AAAA
O comando acima irá alterar os pacotes que são para localhost: XXXX com o IP de destino como Ext.er.nal.IP: YYYY
iptables -t nat -A POSTROUTANDO -j MASQUERADE
O comando irá alterar o IP de origem como o ip público da sua máquina.
Você poderia tornar suas regras um pouco mais rígidas, adicionando IP e interfaces de origem e destino apropriados usando -s, -d, -i e -o. Veja "man iptables".
Obrigado a John WH Smith e Wurtel. Sugestões foram muito úteis.