본문 바로가기
Spring

[Springboot] 외부에서 로컬 서버 접속하기

by 상후 2024. 3. 12.
728x90
반응형

 

 

사이드 프로젝트를 진행하던 중 동료 PC(외부) 에서 내 PC(내부)의 localhost 즉, 로컬 서버에 접속하기 위한 설정을 진행했다.

프로젝트 기술 스택은 본 내용과 관련이 없지만, 로컬에서 띄운 서버는 스프링 부트로 구현하였다.


1. 포트 포워딩

  • 내부 네트워크의 포트와 인터넷의 포트를 연결시켜 서로 통신할 수 있도록 열어주는 것을 말한다.

내부 네트워크 포트 : 나의 톰캣 서버 포트를 의미

인터넷의 포트 : 연결을 시도하려는 포트를 의미

 

즉) 외부PC에서 주소창에 http://내 공인ip주소:9090 로 요청하는데, 내 톰캣 서버의 포트는 7070이라면

 

내부 네트워크 포트 : 7070

외부 네트워크 포트 : 9090(인터넷의 포트) 

 

위 처럼 포트 포워딩 설정을 하면 된다.

 

2. 외부(공인)IP 와 내부 IP 

포트포워딩을 하기 전 외부(공인)IP와 내부IP에 대해 간단히 알 필요가 있다.

 

 

위 그림을 보면 우리는 공유기를 통해 다양한 장치에 인터넷을 연결할 수 있다.

공유기에서 사용하는 공인IP(외부IP)는 ISP(인터넷 서비스 공급자)에서 할당 받아 인터넷에 단 하나밖에 없는 유일한 주소이다.

내부IP(사설IP)는 공유기에서 할당하는 IP로 하나의 네트워크 안에서 유일하다.

 

즉, 외부PC에서는 내 공인(외부)IP를 가지고 요청을 진행하면 내 사설(내부)IP로 연결을 해주는 행위가 포트포워딩이다.

 


3. 포트 포워딩 하기

 

내 사설 IP 와 공유기를 설정하기 위해 게이트웨이 주소를 찾는다.

방법은 시작 - cmd - ipconfig 를 입력하여 찾는다.

 

유선으로 연결하신 분들은 이더넷 어댑터 이더넷

무선으로 연결하신 분들은 무선 LAN 어댑터 Wi-Fi

 

 

1번 : IPv4 주소가 내 사설 IP에 해당합니다.

2번 : 기본 게이트웨이 주소를 통해 포트포워딩을 진행할 설정 화면으로 이동합니다.

 

게이트웨이 주소를 주소창에 입력하여 공유기 설정 환경에 로그인 후 포트포워딩 메뉴에 들어갑니다.

공유기에 따라 조금씩 다르겠지만, 필자는 아래와 같은 화면에서 포트포워딩을 진행합니다.

 

 

 

프로토콜 : TCP

외부포트 : 외부PC에서 나에게 요청할 포트번호 (9090)

포워딩 IP 주소 : 나의 사설 IP 주소 (cmd를 통해 조회한 IPv4 주소)

내부포트 : 포워딩할 내 톰캣 포트번호 (7070)

 

 

 

입력 후 추가(저장) 시 포트 포워딩 설정이 완료됩니다.


4. 내 공인IP 확인하기

사설IP에 직접 외부에서 연결할 순 없습니다.  공인IP를 통해 연결을 시도합시다.

간단하게 네이버에서 내 공인 IP를 검색하면 검색결과로 나의 공인 IP를 확인 할 수 있습니다. 

 

 

 


5. 테스트

1. 스프링부트 로컬 서버를 7070 포트로 실행해줍니다.

 

 

2. 외부PC에서 http://공인IP주소:외부포트번호 를 입력해줍니다.

 

 

 

위와 같이 외부에서 이제 접속이 가능해졌습니다.

 


포트포워딩을 설정했는데도 연결이 안 된다면,,?

 

방화벽 문제일 가능성이 높습니다.

방화벽 문제인지 가장 쉽게 테스트해보는 방법은 잠시 방화벽을 끄고, 연결을 시도해보는 것 입니다.

 

설정 -  Windows Defender  방화벽 - Windows Defender 방화벽 설정 또는 해제

 

 

권장하지 않으므로, 테스트 후 다시 방화벽은 켜줍시다.

방화벽을 껐는데 성공한다면 인바운드 규칙을 확인해봅시다.

설정 -  Windows Defender  방화벽 - 고급설정에서 확인하실 수 있습니다.

 

 

 

인바운드 규칙에서 작업이 거부된 목록을 확인해보시면 됩니다.

거부된 프로그램에 사용하시는 IDE나 관련된 프로그램이 있다면 삭제시켜주시면 됩니다.

 

인바운드 규칙을 간단하게 설명하면 다른 PC에서 내 PC로 네트워크 연결을 가능하게 해주는 규칙입니다.

기본적으로 인바운드는 모든 포트를 닫게 되어있습니다.

 

 

 

 

거부된 인바운드 프로그램을 삭제한 뒤 테스트해보시면 연결에 성공할 것입니다.

 

 

참고

https://blog.naver.com/17beans/221236856935

 

728x90
반응형

댓글