결론적으로는 Server1에서 Server2로 접속하고 싶은 겁니다. 사실 공유기에서 Server2를 NAT설정을 해주면 간단하긴 한데, 그렇게는 할 수 없는 상황이어서 Reverse proxy로 일단 Server1과 Client를 연결 한 후, Client가 Server2의 80번 포트를 tunneling 해줘야합니다. 왜냐하면 Server2는 일반 PC가 아니고, 웹서버 기능이 내장된 장비이기 때문입니다.
제가 너무 두서없이 질문을 올린거 같네요ㅠ 혹시 더 궁금한점이나 개발 가능하신 분 의견 부탁드립니다. 감사합니다.
꼭 http 프로토콜을 사용하셔야 한다면, nginx reverse proxy 를 Client에서 설정하는게 간편해 보이고, 프로토콜 사용에 제약이 없다면 ssh tunneling을 고려해 보시는건 어떤가요?
수정1) 아 헷갈렸네요… ssh tunneling으로 Server2 터널링이 될지 잘 모르겠네요.
수정2) GPT에 물어보니 가능은 하다고 하네요
네, SSH 터널링을 이용하여 같은 네트워크 내에서 다른 기기로 포워딩하는 것이 가능합니다. 이를 통해 SSH를 통해 안전한 터널을 생성하고, 특정 포트를 다른 기기로 전달할 수 있습니다. 기본적으로 로컬 포트 포워딩이나 리모트 포트 포워딩을 사용하여 이를 구현할 수 있습니다.
1. 로컬 포트 포워딩 (Local Port Forwarding)
로컬 포트 포워딩을 통해, 로컬 머신에서 특정 포트를 리모트 머신의 다른 기기로 포워딩할 수 있습니다. 예를 들어, 로컬 머신의 포트 8080을 같은 네트워크 내의 다른 기기 A의 포트 80으로 포워딩하는 방법은 다음과 같습니다.
ssh -L 8080:기기A_IP:80 사용자명@리모트서버_IP
이렇게 하면 로컬 머신에서 localhost:8080으로 접근할 때 기기 A의 포트 80으로 트래픽이 전달됩니다.
2. 리모트 포트 포워딩 (Remote Port Forwarding)
리모트 포트 포워딩을 통해 리모트 머신에서 특정 포트를 로컬 머신이나 다른 네트워크 기기로 전달할 수 있습니다. 예를 들어, 리모트 머신의 포트 8080을 로컬 네트워크 내의 기기 B의 포트 80으로 포워딩하는 방법은 다음과 같습니다.
ssh -R 8080:기기B_IP:80 사용자명@리모트서버_IP
이 경우 리모트 머신에서 localhost:8080으로 접근하면 기기 B의 포트 80으로 트래픽이 전달됩니다.
3. Dynamic 포트 포워딩
다른 네트워크 기기들로의 다중 포워딩이 필요한 경우, SOCKS 프록시를 설정할 수 있는 Dynamic 포트 포워딩을 사용할 수 있습니다. 이를 통해 SSH 터널을 통해 다양한 포트와 기기로 트래픽을 보낼 수 있습니다.
ssh -D 8080 사용자명@리모트서버_IP
이렇게 하면 localhost:8080에서 프록시 서버처럼 작동하게 되며, 브라우저 또는 기타 프로그램에서 SOCKS 프록시를 사용해 다양한 기기와 포트로 트래픽을 전달할 수 있습니다.