제이슨의 개발이야기
(포트포워딩 하는법)외부 Client 와 VirtualBox Ubuntu 환경에서 작동하는 Server 연결 본문
안녕하세요!
오늘은 외부 기기(스마트폰 , 테블릿, PC 등) 와 Virtual Box 가상머신에 설치되어있는 Ubuntu 리눅스 환경에서 작동하는 Server 와 소켓 통신하는 방법에 대해서 이야기 해보려고 합니다!
참고로 제가 설명이 서툰점 이해 부탁드립니다 ㅠㅠㅠㅠㅠ
보통 개발자 분들이 가지고 있으신 PC는 대부분 Mac Os 또는 Window 를 사용하고 계실거라 생각합니다
그러나 간혹 Linux 환경에서 Server 구축 후 Client 와 연결이 필요로 하는 경우가 생길 수 있습니다!
그때는 보통의 경우 Virtual Box 란 가상머신 위에 Linux 환경을 구축해서 Linux 환경에서의 개발을 진행해야합니다
여기서 문제가 발생합니다
기존 PC에 서버를 구동하면 전혀 상관없지만
Virtual Box 즉 가상머신 위에 서버를 구동하게 되면 서버와 통신을 일반적으로 할 수 가 없습니다!
이럴때는 포트포워딩을 통해서 가상머신 위에 리눅스 서버와 통신을 할 수 있습니다!
먼저 Virtual Box
에서 설정 을 클릭 한 후
이런식으로 호스트 IP 와 게스트 IP 를 입력해줍니다!
여기서 호스트 IP는 현재 자신의 컴퓨터 IP 주소를 입력하시면 되고
게스트 IP 는 가상머신 위에 돌아가는 리눅스 서버의 IP주소를 입력하면 됩니다!
호스트포트 같은 경우 서버 포트를 그대로 호스트포트 , 게스트 포트 에 입력해주시면 됩니다
저는 12334포트를 서버 통신을 위한 포트로 사용하고 있기 때문에 12345 라고 적었습니다
이런 세팅의 의미는 호스트 IP 로 12345 포트 넘버로 접속 시 127.0.0.1 IP 로 12345 포트넘버로 연결 시켜주는 것을 의미합니다!
이렇게 먼저 Virtual Box 의 네트워크 세팅을 하고 나서
공유기 환경설정에서 네트워크 세팅을 해주어야합니다!
공유기 환경설정 페이지는 공유기 회사 및 기종에 따라 다 다릅니다!
예시로
저는 ipTime 공유기를 사용하고 있어서
192.168.0.1 를 인터넷 주소에 입력하면 자신의 네트워크 세팅을 할 수 있는 세팅 화면이 나옵니다!
여기서 포트포워드 설정을 눌러서 내부IP 와 외부 포트 내부 포트 를 자신이 원하는 포트 넘버로 설정해줍니다!
이 세팅의 의미는 외부포트로 접속시(12345) 내부 포트 (12345)로 접속하게 끔 규칙을 설정함을 의미합니다
그렇다면 내부 포트 는 Virtual Box 의 12345 포트 를 향함을 의미하는 것입니다!
이러면 설정은 모두 맞친 상태입니다!!
이제 Client 는 해당 PC IP 즉
이미지 를 보면 192.168.0.22가 PC IP 주소 이므로
PC IP주소 즉 호스트 IP 주소와 포트 넘버 12345 로 접속 시도를 하면 PC 의 Virtual Box 위에 돌아가는 리눅스 서버와 접속이 가능 합니다!!
세팅을 끝내면
실제 접속 할 때
호스트 IP 와 해당 포트로 접속 시
PC에서 설정해놓은 규칙으로 인해서 내부 포트 즉 가상머신 포트 로 연결시켜주고
가상머신에서는 호스트 IP 와 접속한 포트 넘버에 따라서 가상 머신 위로 돌아가는 리눅스 서버와 연결 시켜줍니다!
아래 이미지는 그림으로 간략하게 설명해봤습니다!
녹색 Connection 은 외부 Client 의 연결 Request 입니다
'안드로이드' 카테고리의 다른 글
안드로이드 Context 란? (0) | 2022.11.19 |
---|---|
안드로이드 데이터 바인딩 Data Binding (0) | 2022.04.26 |
build.Gradle 파일? build.Gradle(project) 와 build.Gradle(app) 차이 (0) | 2021.09.06 |
안드로이드 현재 배터리 잔량 체크 하는 메소드 (0) | 2021.08.18 |
안드로이드 앱 포그라운드, 백그라운드 체크 하는 방법 ! 포그라운드,백그라운드 일때 푸시 메시지 다르게 구현 (0) | 2021.08.13 |