사이드 프로젝트를 진행하던 중 동료 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
'Spring' 카테고리의 다른 글
[Test] ConnectionTimeout / ReadTimeout 테스트 하기 (0) | 2024.04.09 |
---|---|
[SpringBoot] H2 데이터베이스 PostgreSQL 모드로 변경하기 (0) | 2024.03.13 |
Mybatis cannot change the executortype when there is an existing transaction (2) | 2024.03.07 |
[SpringBoot] 스프링부트 - @SpringBootApplication 이해하기 (0) | 2021.08.21 |
[SpringBoot] 스프링부트 - 서버 포트번호 변경하기 (0) | 2021.08.19 |
댓글