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