
Linux 시스템의 특정 ip:port를 특정 ip:port로 전달해 보았습니다. 다음 명령으로 iptables를 사용했습니다.
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는 명령이 작동하는지 확인하기 위해 선택한 임의의 주소이고, 69.31.21.42는 공개 웹 사이트의 주소입니다. 그런 다음 전달이 작동하는지 확인했습니다. 실행하여 nmap -p 80 10.0.2.5
긍정적인 결과를 얻었습니다. 지금까지는 아주 좋았습니다. 그러나 나는 running 을 시도했고 nmap -p 81 10.0.2.5
또한 긍정적인 결과를 얻었습니다. 포트 80만 전달되기를 원했기 때문에 이는 내가 예상한 것이 아닙니다. 실행 iptables -t nat -L
해 보니 실제로 전체 10.0.2.5 호스트가 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
내 iptables 명령에 무엇이 빠졌나요? 왜 --dport
작동하지 않습니까?
답변1
POSTROUTING
원하는 작업을 수행하려면 체인을 사용해야 합니다 .
iptables -t nat -A POSTROUTING -p tcp -d 10.0.2.5 --dport 80 -j SNAT --to 69.31.21.42:80
남자 iptables
and POSTROUTING (for altering packets as they are about to go
out)
답변2
우선 TCP IP:포트를 다른 IP:포트로 전달할 수 없다는 점을 알아두십시오. 이는 UDP에서만 가능하며 이를 위한 별도의 Perl 스크립트가 있습니다.
예, 특정 포트가 아닌 다른 컴퓨터로 IP를 직접 전달할 수 있습니다.