실제 IP/포트를 노출하지 않고 iptables로 트래픽 전달

실제 IP/포트를 노출하지 않고 iptables로 트래픽 전달

보내는 호스트에 다른 IP/포트를 표시하지 않고 iptables를 사용하여 트래픽을 전달하고 싶습니다.

내 애플리케이션은 TCP를 사용하여 호스트 xx15.42, 포트 23555에서 수신 대기합니다. 클라이언트는 xx15.42:5555에 연결됩니다. 해당 포트를 클라이언트에 노출하지 않고 포트 23555로 연결을 전달하고 싶습니다.

나는 이미 DNAT를 사용해 보았습니다.

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

그러나 클라이언트에게는 포트 23555에 연결되어 있음이 표시됩니다.

또한 REDIRECT를 사용해 보았지만 어떤 이유로 전혀 작동하지 않습니다. 클라이언트가 연결할 수 없습니다.

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

애플리케이션이 포트 5555에서 수신 대기하는 것처럼 보이게 하면서 이 트래픽을 전달하려면 어떻게 해야 합니까?

답변1

따라서 제가 사용한 첫 번째 방화벽 규칙은 다음과 같습니다.

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

실제로 유일한 문제는 서버가 클라이언트에게 내가 원하는 대로 포트 5555 대신 포트 23555에 연결하라고 지시했다는 것입니다. 서버 부분에서 이를 변경하면 문제가 해결됩니다.

답변2

나는 iptables에 관심이 많으므로 다음을 시도해 볼 수 있습니까?

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

-i eth0인터페이스 옵션이 필요한지 는 확실하지 않지만 두 줄 모두 필요합니다(이 문제를 일으키는 FORWARD 옵션이 부족하다고 생각합니다).

소스 참조

관련 정보