Encaminhar tráfego com iptables sem expor IP/Porta real

Encaminhar tráfego com iptables sem expor IP/Porta real

Quero encaminhar o tráfego com iptables sem mostrar um ip/porta diferente para o host de envio.

Meu aplicativo escuta no host xx15.42, porta 23555 usando TCP. O cliente se conectará a xx15.42:5555. Quero que a conexão seja encaminhada para a porta 23555 sem expor essa porta ao cliente.

Eu já tentei usar DNAT:

iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination x.x.15.42:23555

Mas para o cliente mostrará que ele está se conectando à porta 23555.

Também tentei usar REDIRECT, mas por algum motivo não funcionou. O cliente não consegue se conectar.

iptables -t nat -A PREROUTING -p tcp --dport 5555 -d x.x.15.42 -j REDIRECT --to-port 23555

Como encaminho esse tráfego e ao mesmo tempo faço parecer que o aplicativo está escutando na porta 5555?

Responder1

Portanto, a primeira regra de firewall que usei funciona:

iptables -t nat -A PREROUTING -p tcp --dport 5555 -j DNAT --to-destination x.x.15.42:23555

O único problema era que o servidor estava dizendo ao cliente para se conectar à porta 23555 em vez da porta 5555 como eu queria. Alterar isso na parte do servidor corrige o problema.

Responder2

Eu sou apenas um iniciante em iptables, então você poderia tentar isto:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 5555 -j DNAT --to x.x.15.42:23555
iptables -A FORWARD -p tcp -d x.x.15.42 --dport 23555 -j ACCEPT

Ambas as linhas são necessárias (acho que é a falta da opção FORWARD que está causando isso), embora não tenha certeza se a opção de interface -i eth0é necessária

Referência de fonte

informação relacionada