Encaminhamento de uma porta específica

Encaminhamento de uma porta específica

Tentei encaminhar um ip:port específico para um ip:port específico em uma máquina Linux. Usei iptables com o seguinte comando:

iptables -t nat -A OUTPUT -p tcp -d 10.0.2.5 --dport 80 -j DNAT --to-destination 69.31.21.42:80

10.0.2.5 é um endereço arbitrário que escolhi para ver se o comando funciona, e 69.31.21.42 é o endereço de um site público. Verifiquei então que o encaminhamento funcionou: corri nmap -p 80 10.0.2.5e obtive resultado positivo. Muito bom até agora. No entanto, tentei correr nmap -p 81 10.0.2.5e também obtive um resultado positivo. Não era isso que eu esperava, pois queria que apenas a porta 80 fosse encaminhada. Corri iptables -t nat -Le percebi que, de fato, todo o host 10.0.2.5 está mapeado para 69.31.21.42:80:

Chain OUTPUT (policy ACCEPT)
target     prot opt source     destination
DNAT       tcp  --  anywhere   ip-10-0-2-5.ec2.internal  tcp dpt:http to:69.31.21.42:80

O que está faltando no meu comando iptables? Por que não está --dportfuncionando?

Responder1

Você precisa usar POSTROUTINGcorrente para fazer o que deseja.

iptables -t nat -A POSTROUTING -p tcp -d 10.0.2.5 --dport 80 -j SNAT --to 69.31.21.42:80

homem iptables

and POSTROUTING (for altering packets as they  are  about  to  go
                  out)

Responder2

Primeiramente saiba que não é possível encaminhar TCP IP:Port para outro IP:Port. Isso só é possível com UDP e há um script Perl separado para isso.

Sim, você pode encaminhar um IP diretamente para outra máquina, não para uma porta específica.

informação relacionada