127.0.0.1 이외의 IP를 사용한 루프백 시 포트 리디렉션

127.0.0.1 이외의 IP를 사용한 루프백 시 포트 리디렉션

루프백 네트워크 인터페이스에서 포트 80을 리디렉션하여 해당 포트에 대한 액세스가 실제로 포트 8080으로 이동하도록 하고 싶습니다.

다음 명령을 사용해 보았지만 응용 프로그램이 127.0.0.1:8080에서 수신 대기하는 경우에만 작동하고 127.1.2.3:8080에서 수신하는 경우에는 작동하지 않습니다.

sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 80 -j REDIRECT --to-ports 8080

추가도 시도했지만 --source 127.1.2.3/32 --destination 127.1.2.3/32여전히 작동하지 않습니다.

127.0.0.1:8080에서 수신 대기하는 애플리케이션을 열면 리디렉션이 작동합니다.

ssh remote -L127.0.0.1:8080:192.168.0.3:80

nc 127.0.0.1 80 # works

하지만 127.1.2.3:8080에서 수신 대기하는 애플리케이션을 열면 작동하지 않습니다.

ssh remote -L127.1.2.3:8080:192.168.0.3:80

nc 127.1.2.3 80 # fails
nc: connect to 127.1.2.3 port 80 (tcp) failed: Connection refused

nc 127.1.2.3 8080 # works, so the application is still listening on 8080

127.xxx의 포트 8080을 동일한 IP의 포트 80으로 어떻게 리디렉션할 수 있나요?

업데이트: 동기부여

SSH를 사용하여 다음 포트 전달(127.1.2.3:80 → 192.168.0.3:80 및 127.1.2.4:80 → 192.168.0.4:80)을 수행하려고 합니다.

ssh remote -L127.1.2.3:80:192.168.0.3:80 -L127.1.2.4:80:192.168.0.4:80

포트 80은 "특권"이므로 ssh는 localhost에서 포트를 열 수 없습니다. 이를 우회하는 방법에는 여러 가지가 있습니다.

  • sudo ssh, 하지만 SSH 구성과 키를 루트 계정에 복사하고 싶지 않습니다.
  • 기능을 사용하지만 패키지 업데이트로 인해 이 문제가 발생할 수 있습니다.
  • 작동하지만 상대 URL이 아닌 다른 포트(예: 8080)를 사용하십시오.
  • 권한이 있는 포트를 권한이 없는 포트로 다시 라우팅하는 것이 제가 하려는 작업입니다. 127.0.0.1의 단일 리디렉션에는 작동하지만 127.0.0.1 이외의 IP에 리디렉션이 있으면 실패합니다(위 참조).

관련 정보