Tentei encaminhar um ip: port específico para um ip: port específico em uma máquina Linux. Eu usei o 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 eu escolhi para ver se o comando funciona e 69.31.21.42 é um endereço de um site público. Verifiquei então que o encaminhamento funcionava: corri nmap -p 80 10.0.2.5
e obtive um resultado positivo. Muito bom até agora. No entanto, tentei correr nmap -p 81 10.0.2.5
e também obtive um resultado positivo. Não era o que eu esperava, pois queria que a porta 80 fosse encaminhada. Eu corri iptables -t nat -L
e notei que, de fato, todo o host 10.0.2.5 é 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á --dport
funcionando?
linux
iptables
forwarding
Shirile
fonte
fonte
iptables
saída com um nome de hostip-10-0-2-5.ec2.internal
, o que provavelmente não é10.0.2.15
. Em segundo lugar, estamos perdendo resultados importantes, como restrições de porta; tente usariptables -L -n -v
, não apenasiptables -L
e atualize essa regra acima.Respostas:
Você precisa usar a
POSTROUTING
cadeia para fazer o que você quer fazer.homem iptables
fonte
Antes de tudo, saiba que não é possível encaminhar TCP IP: Port para outro IP: Port. Isso só é possível com o 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.
fonte