Dê uma olhada no rinetd que parece fazer o que você deseja. Há mais algumas informações sobre instalação e uso aqui .
Existe uma maneira de mapear 127.0.0.1:3389
para 192.168.1.2:3389
(com iptables? Ou seja, todas as conexões para localhost:3389
serão redirecionadas para minha máquina LAN?
A razão para isso é a seguinte: meu aplicativo iPhone RDP pode fazer encapsulamento SSH, mas não fornece opções para ajustar parâmetros SSH. Então, ele se conecta ao meu roteador via SSH, estabelece um túnel para 127.0.0.1:3389 e, em seguida, tenta se conectar a localhost:3389
no iPhone. Falhou.
Eu não quero rodar o servidor SSH na minha máquina LAN e, em vez disso, quero usar o servidor SSH do roteador (Asus RT-N16 rodando Tomato). Isso é factível? Isso não funciona:
$ iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 3389 -j DNAT --to-destination 192.168.1.2
Existem alguns erros no seu comando iptables:
1) você está tentando pegar isso na tabela OUTPUT, mas para um redirecionamento como esse você precisa fazer isso em PREROUTING
2) você não está redirecionando para a porta também. você está apenas dizendo ao iptables para enviar esses pacotes para um determinado IP sem especificar a porta.
Assim, seu comando deve ficar assim:
iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp --dport 3389 -j DNAT --to 192.168.1.2:3389
Meu iptables-fu pode estar um pouco enferrujado, então se você não funcionar, tente executar o mesmo comando na tabela INPUT (-A INPUT). Se nada funcionar, grite aqui e nós encontraremos uma solução.