서버/스프링(Spring)

[Spring] 정상적으로 동작하던 스프링 서버 외부 접속 실패

도트7 2023. 1. 30. 07:18

 집에 스프링으로 서버를 만들어 놓고 안드로이드로 접속하는 형태로 쓰고 있었는데 간만에 서버를 켜서 접속하니 타임 아웃을 발생시키며 접속이 되질 않았다. 서버를 킨 컴퓨터에서 크롬으로 접속하니 문제가 없는 걸로 보아 서버에 문제는 없어 보이고 외부에서 접속이 안되는 것 같았다. 혹시나 하여 방화벽을 일시적으로 해제하고 안드로이드에서 접속을 시도했더니 접속되었다. 하지만 개인 컴퓨터에 편의상 서버를 열어놓고 혼자 쓰는 터라 방화벽을 마냥 열어 놓을 수는 없었다.

 

 이 문제를 해결하기 위해서 시도한 방법은 아래 두 가지다.

 

  1. 인바운드 규칙에서 서버로 사용 중인 포트 번호 허용시켜주기
  2. Java(TM) Platform SE binary 연결 허용하기

 

 

 

 포트 번호 허용하기

 [제어판 → Window Defender  고급 설정] 으로 들어간다. 제어판은 시작을 누른 뒤 바로 "control"을 입력하거나 실행에서 "control"을 입력하면 들어갈 수 있다.

 

 

 인바운드 규칙에서 우클릭하여 [새 규칙] 선택.

 

 

규칙 종류에서 포트 선택.

 

 

 서버에 사용 중인(혹은 사용 예정인) 포트 번호 입력.

 

 

 연결 허용(기본값)을 선택 후 다음.

 

 

 네트워크 환경에 맞게 선택한다.

 

 

 규칙을 식별하기 위해서 인바운드 규칙의 이름을 지정한다. 설명은 굳이 적지 않아도 되지만 코드의 주석처럼 나중에 이 규칙을 왜 생성했는지 혹은 규칙에 대한 정보를 기록하는 용도로 사용할 수 있다.

 

 

 이름 좌측에 초록색 체크 아이콘이 있다면 규칙이 적용된 것이고 만약 체크 아이콘이 없다면 우클릭하여 규칙 사용을 눌러주면 된다.

 

 결과는 실패다. 몇 년 전에 서버를 연습하면서 지금과 같은 문제를 해결한 적이 있어서 시도해보았는데 이번엔 이게 문제가 아니었나보다.

 

 

 

 Java(TM) Platform SE binary 연결 허용하기

 다시 인바운드 규칙으로 돌아온다. 이름 순으로 정렬하여 J로 시작하는 규칙 중에서 "Java(TM) Platform SE binary"를 찾는다. 설정을 따로 건드린 적이 없기 때문에 아마도 기본값이라고 생각되는데 TCP 프로토콜에 해당하는 두 규칙에 차단 아이콘이 표시되어 있는 것을 볼 수 있다. 두 규칙에서 차이는 적용할 프로필 정도로 보이는데 공용과 개인으로 나누어져 있다. 네트워크 환경에 따라 하나 혹은 두 규칙 모두 허용해 줄 것이다. 필자의 경우 소규모 개인 서버이기 때문에 4번 째 개인에 해당하는 규칙을 허용해 줄 것이다.

 

 사진 상에 4번째에 해당하는 프로필이 개인, 프로토콜이 TCP인 값을 우클릭하여 속성에 들어간다.

 

 

 아래 작업 란을 보면 연결 차단으로 지정되어 있는 것을 볼 수 있다. 연결 허용으로 바꾸어 준 뒤 확인을 누른다.

 

 

 초록색 체크 아이콘이 즉, 규칙이 활성화된 것을 확인했다면 외부에서 접속을 시도해보자. 필자는 이걸로 해결되었다.

 

 


 

 

 갑자기 외부 접속이 막힌 이유를 추측하건데 며칠 전에 게임 때문에 설치한 유료 VPN이 무슨 설정을 건드린게 아닌가 싶다. 서버를 공부하고 사용한 햇수만 5년 정도가 되었는데 포트 규칙 추가 말고는 단 한 번도 방화벽을 건드린 적이 없었기 때문에 이번 문제를 해결하는데 시간이 좀 걸린 것 같다.