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로 리디렉션하면 실패합니다(위 참조).

관련 정보