Linux에서 포트 전달을 위해 iptables 사용

Linux에서 포트 전달을 위해 iptables 사용

로컬 포트를 원격 포트(8041)로 원격 컴퓨터(10.0.0.42)의 포트(8042)로 전달하고 싶습니다. 나는 이것을 할 수 있습니다

ssh -L 10.0.0.41:8041:10.0.0.42:8042 user@localhost

어디에 10.0.0.41있어야 합니까 eth0?

이제 모든 사용자 공간과 암호화 오버헤드 없이 이 작업을 수행하고 싶습니다.

내 추측은

iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.0.0.41 --dport 8041 -j DNAT --to 10.0.0.42:8042

IP 전달을 활성화했지만 작동하지 않습니다.

답변1

SNAT 규칙도 추가해야 합니다.

이제 다음이 있습니다.

Client ---> NAT box ---> Server
  /|\                       |
   |                       /
    \_____________________/

클라이언트는 NAT에 대해 모르기 때문에 서버에서 직접 응답이 오면 혼란스러워집니다. 따라서 서버가 NAT 상자를 소스로 인식하도록 해야 하며, 이는 SNAT 규칙을 추가하여 수행할 수 있습니다.

Client <---> NAT box <---> Server

관련 정보