2024.08.01 - [분류 전체보기] - [홈서버]내 서비스 홈서버에 배포하기 -0(클라우드 대신 홈서버)
1. 포트포워딩이 뭘까?
홈서버를 구축할 때 가장 먼저 만나는 문제는 바로 포트포워딩 문제다. 포트포워딩(Port Forwarding)은 네트워크에서 특정 포트로 들어오는 트래픽을 다른 네트워크의 포트나 ip주소로 전달하는 기술이다. 이 기술은 일반적으로 라우터나 방화벽에서 설정된다. 쉽게 풀어서 말하자면 특정 ip로 들어오는 요청을 다른 ip로 전달하는 것이 포트포워딩이다.
그렇다면 홈서버를 구축하는데 왜 포트포워딩이 필요할까?
그 이유는 바로 인터넷제공업체(Internet Service Prorider: ISP)와 관련이 있다. 인터넷제공업체(ISP)는 통신사를 의미하는데 우리가 주로 사용하는 sk, lg, kt등의 인터넷업체들이 바로 ISP라고 할 수 있다. ip주소는 인터넷 상에서 장치나 네트워크를 식별하는데 사용된다. ip주소는 보통 고유한 값을 가지고 있어서 인터넷제공업체에게 인터넷서비스를 구매하게 되면 하나의 ip주소가 배정되게 된다. 이때 배정되는 ip를 `공인ip`라고 한다.
하지만 우리가 실제로 인터넷을 사용하는 환경은 하나의 인터넷 회선으로 여러 대의 pc 혹은 모바일 기기등에서 인터넷을 사용하는 형태이다. 즉, 하나의 ip주소로 여러대의 pc가 인터넷을 사용하고 있다는 것이다. 어떻게 이것이 가능할까?
인터넷을 설치하게 되면 꼭 따라오는 것이 `공유기`다. 공유기가 하는 일은 공유기와 연결된 장비들에게 가상의 ip를 부여하고 공인ip를 통해 외부와 연결될 수 있도록 도와준다. 이 때 각각의 장비에게 부여되는 가상의 ip를 '사설ip'라고 한다.
aws의 ec2를 사용해보았다면 public ip와 private ip에 대해 들어본적이 있을텐데 원리는 똑같다. 외부에서 접속하려면 공인ip를 통해서 접속했던 것이 기억날 것이다.
돌아돌아 설명했는데 사설ip는 말그대로 실제 ip주소가 아니기 때문에 서버 pc의 ip주소만 가지고는 서비스에 접근 할 수 없다는 뜻이다. 이 때 필요한 것이 공인ip주소(실제 ip)로 들어온 요청을 내 pc의 사설 ip로 연결해주는 포트포워딩이다.
2. 외부 ip주소와, 내 서버의 가상ip 주소 알아보기
그럼 실제로 공인 ip주소와 내 pc의 ip주소가 다른지 알아보자.
#공인 ip주소 알아보기
네이버에서 `내 ip주소` 라고 검색하면 내 공인ip주소가 바로 나온다. 125.xxx..의 형식의 ip주소를 볼 수 있다.
이 때 보이는 ip가 바로 ISP가 나에게 제공한 ip주소라고 할 수 있다. 외부에서 내 인터넷 네트워크에 접근하려면 이 ip주소가 필요하다.
#내 서버pc의 사설ip주소 알아보기
cmd 혹은 아무 터미널에서 `ipconfig` 이라고 입력하게 되면 ip구성에 대한 내용이 출력된다. 나같은 경우 wsl환경으로 pc를 사용중이라 두 개가 검색되는데 `이더넷 어댑터 이더넷 2` 가 내 사설 ip라고 보면 된다. IPv4와 IPv6모두 ip주소이지만 아직까지는 IPv4가 널리 쓰이고 익숙하기 때문에 IPv4로 비교하면 된다.
192.xxx.xxx...로 시작되는 ip주소를 볼 수 있는데 이 주소가 바로 내 pc에 공유기가 배정해 준 사설 ip이다. 같은 공유기 네트워크 안에 속해있다면 사설ip를 가지고 서로 통신이 가능하지만 외부에서는 사설ip를 식별 할 수 없기 때문에 접근이 불가능하다.
3. 통신사 포트포워딩 방법(lg u+기준)
공인ip와 사설ip를 연결해주는 포트포워딩 방법에 대해서 알아보자. 현재 사용중인 인터넷이 lg u+이기 때문에 그 기준으로 설명은 하지만 다른 통신사공유기도 방법이 비슷하기 때문에 검색을 해보거나 혹은 직접 찾아서 설정을 해주어도 된다.
포트포워딩을 할 때 주의해야 할 점이 하나있다. 개인이 공유기 설정을 변경하여 포트포워딩을 할 수 있도록 서비스를 제공하기는 하지만 인터넷제공업체에서 포트포워딩을 막아놓은 경우도 존재한다. 나도 kt인터넷을 사용할 때는 포트포워딩이 막혀서 제대로 기능하지 않았지만 u+로 넘어오면서 가능하게 되었다. 만약 포트포워딩을 제대로 설정했는데도 포트가 열리지 않는다면 인터넷 업체에 문의해보도록 하자.
#공유기 설정 진입
위에서 `ipconfig`으로 조회한 ip구성정보 사진을 보면 기본 게이트웨이라고 쓰인 곳에도 192.xx.xxx로 되어있는 것을 볼 수 있다. 나는 `192.168.219.1`인데 이 주소를 브라우저에 입력하게 되면 공유기 설정페이지로 이동한다. 각자 게이트웨이 ip주소가 다를 수 있다. 확인 후 진행하도록 하자
다음과 같은 페이지가 나오는데 다른 통신사는 다른 페이지가 나올 것이다.
#로그인
공유기그림을 눌러 설정페이지로 넘어가려고 하니 로그인 페이지가 나온다. 패스워드를 요구하는 것을 확인할 수 있다.
lg u+기준으로는 패스워드가 공유기 뒷면에 쓰여있다. 우측 아래에 관리자 웹 접속 암호라고 되어있는데 저 문자열을 패스워드에 입력하자.
로그인이 성공하면 아래처럼 설정페이지에 진입이 가능하다.
#DHCP고정 할당
포트포워딩 전에 먼저 해야할 일이 있다. 앞서 공유기는 각각의 장비에 사설 ip를 배정해 준다고 했다. ip를 하나하나 배정하는 것이 어렵기 때문에 동적으로 ip를 배정하는 DHCP(Dynamic Host Configuration Protocol)를 사용한다. 이 때 항상 고정적으로 같은 장비에 같은 ip가 배정되는 것이 아니기 때문에 ip주소가 변경될 수 있다. 홈서버를 구축하려면 항상 같은 ip를 가지고 있어야 서비스를 안정적으로 운영할 수 있다. 때문에 DHCP를 고정할당하여 항상 같은 ip주소를 갖도록 먼저 설정 해주어야 한다.
상태정보 > DHCP할당정보
> DHCP고정할당
> 맥주소 검색 > 현재 pc 선택
> DHCP고정할당 완료
192.xxx.xxx.103 이라는 ip를 나는 항상 배정받도록 설정을 완료했다. 이제 고정적으로 사설ip주소를 사용할 수 있다.
#포트포워딩
이제 포트포워딩 설정을 해보도록하자.
네트워크설정 > NAT 설정 > 포트포워딩
포트포워딩 설정으로 들어오게 되면 다음과 같은 화면을 볼 수있다. 나는 먼저 사용중인 포트포워딩 세팅이 있기 때문에 세 개의 설정이 추가된 상태이다. 처음 포트포워딩을 한다면 아무것도 없을 것이다.
> 포트포워딩 추가버튼
*서비스포트: 외부에서 접속을 위해 사용할 포트
*프로토콜 : TCP/IP 선택
*내부IP주소: 내 서버pc의 사설 ip 주소
*내부포트: 내 서버 pc에 연결될 포트
예를들어 내 공인 ip가 125.123.123.123이라고 하고 내 pc에서 구동중인 서비스가 8000번 포트를 사용하고 있다고 가정해보자. 만약 외부에서 내 서비스에 접근할 때 125.123.123.123:9000 이라는 url로 접근을 하도록 하고싶다. 그렇다면 서비스 포트를 9000 내부포트를 8000으로 하면 된다.
이렇게 설정을 저장하면 1분정도 인터넷이 끊기게 된다. 이후 설정이 적용된다.
#포트확인
포트가 실제로 열렸는지 확인하는 방법은 아래 사이트를 이용하는 방법이 있다. 실제로 서비스를 띄워서 연결이 되는지를 테스트해 볼수도 있지만 아래 방법을 사용하는 것이 훨씬 간편하다.
https://www.yougetsignal.com/tools/open-ports/
여러 포트들을 테스트해 볼 수 있는데 나는 80번 포트를 상시 열어두었기 때문에 80번 port가 열려있다라는 메시지를 받았다.
실제로 포트포워딩 세팅을 잘 했음에도 포트가 닫혀있다고 나오는 경우가 있다. 그런 경우에는 서버에서 포트를 사용하는 서비스가 리스닝 상태가 아니기 때문에 그렇다. 그런 경우에는 포트를 사용하는 서비스를 구동 시킨 후에 테스트해보도록 하자.
4. 방화벽 설정
위 모든 방법을 모두 수행하더라도 사실 포트가 닫혀있다고 나올 것이다. 이유는 방화벽 때문이다. 방화벽은 보안을 위해서 사용하지 않는 포트로의 접근은 기본적으로 전부 차단하고 있다. 그래서 포트를 사용하려면 임의적으로 방화벽 설정을 추가해주어야 한다. 운영체제에 따라서 방화벽을 설정방법이 다르다. 나는 윈도우 기준으로 설명하겠다. 리눅스나 맥의 경우에도 검색을 해보면 크게 어렵진 않을 것이다.
#인바운드 규칙추가
> 고급 보안이 포함된 Windows Defender 방화벽 > 인바운드 규칙
`인바운드`란 내 pc로 들어오는 트래픽을 어떻게 처리할 것인지에 대한것이고 반대로 `아웃바운드`는 나가는 트래픽에 대한 설정이다. 우리는 홈서버로 들어오는 요청에 대한 설정을 할 것이기 때문에 인바운드를 선택한다.
> 규칙종류 > 포트선택 > 다음
> 프로토콜 및 포트 > TCP > 포트번호 기입 > 다음
> 작업 > 연결허용 > 다음
>프로필 > 다음
>이름 > 이름, 설명 기입 > 마침버튼클릭
#인바운드 규칙 확인
인바운드 규칙이 생성되면 규칙목록에서 방금 추가한 내용을 확인할 수 있다.
홈서버 구축을 위한 가장 기초적이면서 귀찮은 부분이 끝났다. 귀찮고 어려운 부분이지만 한 번 익혀두면 네트워크에 대해서 공부할 수 있는 기회가 될 것이다. 다음 포스팅에서는 wsl을 사용해 윈도우에서 리눅스 서버환경을 구축하는 방법에 대해서 알아보도록 하자.
'만들자 > 홈서버만들기' 카테고리의 다른 글
[홈서버]내 서비스 홈서버에 배포하기 -0(클라우드 대신 홈서버) (0) | 2024.08.01 |
---|