집에서 Server를 구축하고 외부에서 Server에 접속하는 방법은 여러가지가 있는데 개인적인 생각으로는 제일 간단한 방법이 포트 포워딩(port forwarding) 다른말로 포트 매핑(port mapping)이라고 생각 합니다.  오늘은 가상이 아닌 실제 스마트폰으로 Server 접속 테스트를 해야 하는 상황이 발생 했는데 당연히 localhost(127.0.0.1)로는 핸드폰에서 인터넷에 접속을 할 수 없는 상황이 되어 테스트 환경을 만들게 되었습니다.

일단 컴퓨터에서 웹서버를 만들어야 해서 Spring Boot로 API 서버를 만들었습니다. Web Server에서 사용하는 Port는 프로퍼티에

 

server.port=9999

이렇게 설정 하고 먼저 local에서 접속이 되는지 확인을 해 봅니다.

 

잘 되는군요.  그렇지만 스마트폰에서 안드로이드로 Retsrofit을 이용하여 접속을 시도하면 localhost(127.0.0.1)은 공인 IP가 아니기 때문에 접속을 할 수가 없습니다.  이때 필요한 것이 포트 포워딩을 사용하면 localhost도 공인IP처럼 외부에서 사용할 수 있습니다.

포트 포워딩은 공인IP에 Port를 결합 하여(공인IP + Port) 설정한 포트로 요청이 들어오면 매핑테이블에 있는 내부의 컴퓨터에 포워딩 해주는 방식으로 서비스를 진행 합니다.
그럼 공용IP가 있어야 하는데 집에 인터넷을 사용한다면 공용IP는 최소 하나가 존재하는 것으로 생각하면 됩니다.  공유기의 설정 화면에 들어가면 공유기가 인터넷에 연결하기 위한 외부IP를 가지고 있는데 이것이 바로 공인IP 입니다.

 

 

공유기는 이 외부IP를 이용하여 내부에서 사용할 수 있는 사설IP를 외부와 중개하는 기능을 하고 있습니다. 집에 있는 컴퓨터나 핸드폰의 IP를 확인하면 192.168.0.2 부터 192.168.0.254 까지 중복이 안되는 번호를 하나씩 가지고 있는데 이것이 사설IP 입니다.  공유기는 외부 IP와 내부 IP를 매핑하여 인터넷에 연결해 주는데 이러한 기능을 이용하여 외부IP에 Port를 결합하여 내부IP와 1:1 매핑을 하게 되면 설정한 내부IP는 계속해서 외부와 연결 할 수 있는 통로를 얻게 되는 방법 입니다.


일단 설정을 해보도록 합니다.  집에 ipTime을 사용해서 이걸 기준으로 설명 합니다.  관리자 페이지에 로그인을 하고(초기 아이디와 비번은 admin/admin) 

 

고급설정 > NAT/라우터 관리 > 포트포워드 설정
메뉴를 선택 합니다.

 

 

위에 사진은 생성을 한 모습이고 하단에 입력 해야 하는 항목들 입니다.

 

 

 

 

규칙이름 : 그냥 구분을 위한 텍스트입니다. 아무거나 적어도 됩니다.
외부 포트 : 공인IP 뒤에 붙일 Port 번호 입니다. 임의의 번호를 적습니다.
내부 포트 : 내부에서 구축한 서버에서 서비스할 Port 입니다. 이건 정확히 기입합니다.
내부 IP주소 : 서버를 구축한 컴퓨터의 IP 주소.(이건 뒤쪽에서 설명)

 

입력 값들 중 내부 IP와 포트가 중요합니다.  내부 포트는 Web Server의 서비스 port 를 9999로 했으니 9999를 입력 하면 되고 외부 포트는 임의의 번호를 입력하면 됩니다.  여기서는 나중에 혼란을 주기 싫어 동일하게 9999를 입력하였습니다.
내용들을 채우고 [적용] 버튼을 클릭하면 됩니다.  설정은 이게 끝입니다.


한번 외부에서 브라우저를 통해 접속해 볼까요?  외부 IP에 위에서 설정한 Port 9999를 사용합니다.  localhost:9999/getTest에서 localhost를 외부 IP로 변경해주면 됩니다.

 

 

 

접속이 잘 되는 군요.
이번엔 원래 목적인 스마트폰에서도 똑같이 외부 IP를 사용해 http://210.106.XXX.XXX:9999/getTest 주소로 접속해 봅니다.

 

 

 

이것도 잘 되는 군요. 
설정 방법 중 한가지 아직 설명을 안한게 있습니다.  ipTime 입력 창에서 Web Server로 사용하는 컴퓨터의 [내부 IP 주소] 인 로컬IP를 알아야 합니다.

명령 프롬프트에서


C:\>ipconfig/all


하면 아래와 비슷한(유선을 사용한다면 Ethernet adapter...로 시작) 내용을 찾을 수 있습니다.  저는 Wi-Fi를 사용하고 있어서 무선 LAN 어댑터 Wi-Fi 항목을 보면 됩니다.

 

 

 

여기서 IPv4 주소가 컴퓨터 IP입니다.  이걸 itTime에 입력 하면 됩니다.  컴퓨터를 재부팅 해도 왠만하면 잘 변경이 되지 않지만 확실히 하려면 인터넷 디바이스에 설정을 해놓는게 안전 합니다. 재부팅 되었는데 내부 IP가 변경되면 공유기를 또다시 설정 해야 하는데 모르는 사람만 집에 있으면 참 답답 합니다. 

[네트워크 연결]을 열고

 

 

사용하고 있는 무선 또는 유선의 속성을 선택 하여(저는 Wi-Fi, 유선은 이더넷을 사용) 마우스 우클릭 해서 설정을 선택 합니다.

 

 

 

TCP/IPv4를 선택하고 [속성] 버튼을 클릭 하여

 

 

 

IP 설정 창에서 [다음 IP 주소 사용]을 선택하여 아까 보았던 명령 프롬프트에 있는 서브넷, 게이트웨이, DNS등을 보고 내용들을 채워 넣으면 다음에 컴퓨터가 재부팅 되어도 동일한 IP를 사용하게 됩니다. 
실제 설정은 5분도 안걸리는데 글을 써서 올리는 건 퇴근 후 하다보니 몇일이 넘게 걸리는군요. 집에서 서버를 운용하려는 사람들에게 도움이 되었길 바랍니다.

 

- copy coding -

일을 하는 동안 자주 발생하는 핸드폰 문자 및 여러 이벤트 발생 때문에 계속해서 핸드폰을 들었다 놨다 들었다 놨다 하게 되는데 코로나 이후로는 폭주하는 안전 문자 때문에 귀찮은 수준까지 되었습니다.  안전 문자는 무조건 거르기 때문에 이제는 전쟁이 나도 모르겠네요.  그래서 해결 방법으로 컴퓨터에서 스마트폰을 사용할 수 있는 앱을 설치하여 일을 하면서 핸드폰을 들고 확인하지 않아도 되도록 해봤습니다.

 

1. 컴퓨터에 설치하는 방법
2. 스마트폰에 설치하는 방법
3. 컴퓨터와 스마트폰 연결

 

설치할 프로그램은 Samsung Flow로 컴퓨터와 핸드폰 양쪽에 모두 프로그램을 설치 해야 합니다.  컴퓨터에 설치할 프로그램을 다운로드 받을 때는 마이크로소프트 회원 정보가 있어야 됩니다.

1. 컴퓨터에 설치하는 방법

삼성 플로우 사이트에 접속 하여 프로그램을 다운로드 받습니다.

 

www.samsung.com/sec/apps/samsung-flow/

 

사이트 접속하여 스크롤을 아래로 내려다보면 아래 그림과 같은 다운로드 링크를 찾을 수 있습니다

 

 

여기서 컴퓨터에 설치할 프로그램은 가운데 있는 Microsoft 스토어로 [WINDOWS APP]을 선택 하면 마이크로소프트 다운로드 사이트 창이 나옵니다.

 

www.microsoft.com/ko-kr/p/samsung-flow/9nblggh5gb0m?rtc=1&activetab=pivot:overviewtab

 

 

 

[받기] 버튼을 클릭하여

 

 

마이크로소프트 계정에 로그인 합니다.  계정이 없다면 아무 이름으로나 하나 만들어 사용하면 되는데 저도 몇개의 계정을 만들었는지 기억이 안나는 군요.

 

 

 

로그인을 완료하고 [받기] 버튼을 클릭하여 하면 다운로드가 진행됩니다. 잠시 후 설치까지 진행을 하고.

 

 

 

[시작] 버튼을 클릭하여 삼성 플로우를 실행합니다

 

 

 

[시작] 버튼을 클릭하여 다음 단계로 넘어 갑니다..

 

 

 

 

핸드폰은Wi-Fi나 USB 케이블로 연결해서 사용할 수 있습니다.  지금은 USB로 연결되어 있는데 일단 USB 선을 뽑아야 합니다.  그렇지 안으면 다시 시도하라는 안내가 나옵니다. 

 

 

드라이버 설치를 진행하기 위해 [설치] 버튼을 클릭합니다.

 

드라이버 설치 진행은

 

 

[다음] 버튼을 클릭 하고

 

 

 

언어를 선택한 후 [다음] 버튼을 클릭 하고

 

 

[설치] 버튼을 클릭하면 시작됩니다.

 

 

 

 

설치가 완료되고

 

 

 

[마침] 버튼을 클릭하면 다시 삼성 플로우 프로그램으로 돌아갑니다.

 

 

 

여기서 컴퓨터에서의 작업은 잠시 대기를 하고 스마트폰에 Samsung Flow를 설치해야 합니다.  물론 먼저 스마트폰에 Samsung Flow를 설치해도 상관 없겠죠.

 


2. 스마트폰에 설치하는 방법
 
[Play 스토어]에서 삼성플로우(또는 Samsung Flow)로 검색을 하여 설치를 진행 합니다.

 

 

 

설치가 완료되면 [열기] 버튼을 클릭 합니다.

 

 

여기까지 스마트폰에 설치하는 작업이고 더 이상의 진행은 잠시 멈추고 이번에는 컴퓨터에서 중단된 작업을 진행합니다.


3. 컴퓨터와 스마트폰 연결

 

 

 

컴퓨터 작업이 여기에서 중단 되었는데 리스트에서 연결 하려는 스마트폰을 클릭해 줍니다.

 

 

 

인증번호가 나타나는데 스마트폰에도 동일한 번호가 있는지 확인을 한 후 [확인] 버튼을 클릭 합니다.  

 

 

 

스마트폰에서도 동일하게 인증번호를 확인하고 [확인]버튼을 클릭합니다.  그러면 권한을 설정하라고 하는데 5가지를 모두 허용 해줍니다.  그 외에도 권한 요청이 있으면 모두 확인을 하도록 합니다.
여기까지 작업이 되었다면 컴퓨터와 스마트폰이 연결 되었습니다.

 

 

 

컴퓨터에서 Samsung Flow 프로그램 상단에 있는 스마트 뷰(Smart View) 아이콘을 클릭하면 연결된 핸드폰 화면이 하나 나타납니다.

 

 

모니터가 터치 스크린이 아니라면 마우스를 이용하여 클릭 하고 글쓰기는 키보드를 이용하여 컴퓨터에서 핸드폰을 사용하면 됩니다.  이제 문자나 안내 이벤트가 오면 컴퓨터에서 바로 해결할 수 있게 되었습니다.

 

- copy coding -

 

Spring Tool Suite 3 Version: 3.9.12.RELEASE을 설치하고 프로젝트를 하나 만들자마자 오류가 발생하였습니다. 이전 버전에서는 이런 일이 없었는데 갸우뚱 했습니다.

 

 

아직 프로그램을 시작도 하지 않았는데 빨간 줄이 생기다니?  오류를 좀더 자세히 살펴 봅니다.

 

 

Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor


최상위 생성자 오류라는 것 같은데 Java에 문제가 있나 보군요.  설정을 봐야 할 것 같습니다.

프로젝트에 마우스를 대고 > 우클릭 > Build Path > Configure Build Path

 

Properties에서 Java Build Path를 열고 Libraries를 확인 합니다.

 

 

Java version 11을 사용한다는 군요.  STS가 자바를 11로 기본 설정 해놓고 있어서 문제가 발생했습니다.  물론 자바 버전을 11로 사용하시는 분들은 관계 없겠지만 저는 1.8을 사용 중입니다.


수정을 하기 위해 좌측 리스트에서 자바 11을 선택한 상태에서 우측의 [Edit] 버튼을 클릭 합니다.

 

 

Library 설정 창에서 현재 선택된 버전과 내가 설치한 버전이 맨 아래에 보이는 군요.

 

 

 

현재 컴퓨터에 설치된 1.8을 선택하고 [Finish] 버튼을 클릭 하면 됩니다.  만일 다른 버전을 설치 하였는데 Library 창에 보이지 않는다면 첫번째 항목을 선택한 상태에서 [Environments] 버튼을 이용하여 java가 설치된 위치를 정해 주면 됩니다.

 

 

오류가 사라졌습니다.  프로그램에서도 사라졌는지 [Apply and Close] 버튼을 클릭해 봅니다.

 

 

프로그램 소스에서도 오류표시 빨간 줄이 사라졌습니다.  간단한 설정 문제라 다행이었습니다.

 

- copy coding -

 

이제는 SVN을 사용하는 사이트가 조금씩 줄어들고 있는데 그러다 보니 SVN을 몇 개월 만에 사용하게 되고 간단한 사용법도 잊어버려 바보가 된듯한 느낌이 들 때도 있습니다.  오늘도 작업을 하는데 프로그램을 클릭 할 때마다 SVN 연결이 되어있지 않다고 오류가 발생해서 참 귀찮은데 접속을 종료 하는 방법이 생각나지 않아 좀 화가 나는 군요.  어째든 다음에 사용하기 위해 정리(정리라고 할 것도 없지만)를 해 봅니다.

프로젝트에 마우스를 대고 우클릭 > Team > Disconnect

 

 

너무 간단한데 엉뚱한데 가서 찾고 있었네요.  Disconnect 를 선택 하면 확인 팝업 창이 나타나고

 

 

[Yes] 버튼을 클릭 하면 SVN 접속이 종료되고 귀찮은 오류 팝업 창이 사라지게 됩니다.

 

- copy coding -


1···24252627282930···118

+ Recent posts