iptables -t nat -A PREROUTING -p tcp -i eth1 -d 10.10.1.0/24 \
--dport 12345 -j DNAT --to-destination 123.123.123.123:12345
O tráfego gerado localmente nunca passará pela cadeia PREROUTING. Você pode verificar isso adicionando uma regra como esta:
iptables -t nat -A PREROUTING -j log -m limit --limit 1/s
Se você não estiver familiarizado com o iptables, a regra acima significa:
- Registre (a uma taxa máxima de 1 mensagem / segundo) todos os pacotes que atravessam a cadeia PREROUTING.
Assista seus arquivos de log enquanto você faz conexões de saída e verá que nada está passando por essa cadeia. A cadeia PREROUTING só entra em jogo para o tráfego que entra no seu sistema de uma fonte externa.
Você pode pensar que poderia fazer isso na cadeia OUTPUT:
iptables -t nat -A OUTPUT ... -j DNAT ...
Mas quando um pacote atinge a corrente OUTPUT
, a decisão de roteamento já foi tomada. Provavelmente, você pode querer usar uma regra REDIRECT
na cadeia OUTPUT
e, em seguida, executar um proxy tcp em uma porta local que redireciona as conexões para o seu destino. Ou seja, você pode adicionar uma regra assim:
iptables -t nat -A OUTPUT -p tcp -d 10.10.1.0/24 --dport 12345 \
-j REDIRECT --to-ports 12345
E, em seguida, execute um proxy tcp localmente na porta 12345.