본문 바로가기
Projcet

ubuntu 홈서버 구축기 feat. SK Broadband

by 준형코딩 2024. 6. 14.

들어가면서 ... 

 

오늘은 최근에 진행한 ubuntu 홈서버 구축에 대한 내용을 기록하고자 한다.

야심 차게 홈서버 구축에 도전하면서 많은 블로그들을 참고하며 고군분투했지만 실제 진행에 필요한 내용과 다른 부분들이 많아서 삽질을 하며 헤매게 되었다. 그러면서 얻게 된 해결책을 통해 나처럼 홈서버를 구축하는 데 어려움을 겪고 계신 분들에게 조금이나마 도움이 되었으면 하는 바람으로 글을 쓰게 되었다. 

 

 


 

홈서버가 필요해진 이유

 

- 최근 AWS에 배포한 요양기관 차량 배치 프로젝트에서 CPU 성능과 RAM 성능은 낮아서 속도가 굉장히 느린데 비용은 너무 많이 나왔다. (로드밸런서, EC2 비용 등등), 비용을 절감할 수 있으면서 빠른 서버가 필요했다.

 

- 새롭게 떠오른 아이디어를 구현해서 사람들에게 선보일 나만의 서버가 필요했다.

 

 

그럼 바로 본론으로 들어가서 어떻게 홈서버를 구축했는지 간략하게 설명하겠다.

 


1. 홈서버 구축 하드웨어 선정 

 

먼저 홈서버를 구축하기 위해서 하드웨어를 어떤 것으로 선정해야 할지에 대한 고민이 시작되었다.

 

선택지는 미니 PC, 데스크탑, 노트북, 맥미니 등의 선택지가 있었다.

 

데스크탑 : 덩치 큼, 성능 좋음, 가격 저렴

노트북 : 덩치 중간, 성능 좋음, 가격 중간

미니 PC : 덩치 소형, 성능 중간, 가격 낮음

맥미니 : 덩치 소형, 성능 좋음, 가격 어우..

 

 

사실 맥미니로 홈서버를 구축하는 것이 가장 끌렸지만 가격이 너무 비쌌고 이제 막 갓 졸업하는 반백수 학생이기에 포기할 수밖에 없었다.

데스크탑을 홈서버로 하기에는 가벼운 서버를 돌리기에 기능이 너무 과했고 괜찮은 성능의 DELL 노트북이 있었지만 배터리 충전단자 부분이 오래 써서 고장이 났는지 충전이 끊기는 잔고장이 있었다. 그래서 24시간 서버를 돌리기에는 적합하지 않다고 판단했다.

결국은 작은 크기를 가지고 있지만 준수한 성능의 미니 PC를 선택하게 되었다. (성능적인 면을 중요시하고 재정적인 상황이 충분하다면 노트북을 홈서버로 돌리는 것이 웬만한 미니 PC 보다는 성능이 좋다고 한다. CPU 코어, 스레드 등)

미니PC 너로 정했다!!

 

내가 구매한 미니 PC이다.

성능이 안정적인 코어 4, 스레드 4, 인텔 n100이 탑재된 제품을 선택하였다.

https://www.coupang.com/vp/products/7748712743?vendorItemId=88124963079&sourceType=MyCoupang_my_orders_list_product_title&isAddedCart=

 

피코펄스 미니PC n100 (win11 포함)

COUPANG

www.coupang.com

 

 


 

2. OS 선정

그렇게 설레는 마음으로 미니 PC를 배송받은 이후로는 OS를 어떤 것으로 선택할지에 대한 고민이 시작되었다.

 

윈도우, 리눅스, 리눅스 안에서도 ubuntu, centos, ubuntu 안에서는 desktop 버전, server 버전 등 많은 선택지가 있었다. 최종 선택은 커뮤니티와 지원이 풍부하고 가장 안정적으로 많이 사용해왔던 ubuntu를 선택하였고 미니 PC의 용량이 512GB로 충분했기에 조금 더 용량이 크고 UI를 지원하는 desktop 버전을 선택하였다. (server 버전이 서버 운영에 있어서 리소스가 절약되고 조금 더 안정적이라고 하니 차이는 미미하겠지만 성능과 안정성을 더 중요시하는 분들은 server 버전을 선택하시는 걸 추천)

 


3. 미니 PC Ubuntu 설치 방법

 

준비물 : 3~ 6기가 이상 USB (server 기준 3GB, desktop 기준 6GB)

 

먼저 ubuntu 사이트에 들어가서 원하는 버전을 선택하고 다운로드를 눌러준다.

 

- ubuntu 24.04 LTS desktop : https://ubuntu.com/download/desktop

- ubuntu 24.04 LTS server : https://ubuntu.com/download/server

 

https://ubuntu.com/download/server

 

ubuntu.com

 

다운로드가 완료되면 USB에 ubuntu 파일을 그대로 옮기는 게 아니라 부팅용으로 사용할 수 있도록 툴을 사용해서 구워주어야 한다.

balenaetcher라는 훌륭한 툴이 있기 때문에 윈도우나 맥 환경에 맞추어서 다운로드한 후 부팅용 USB를 구워주자.

https://etcher.balena.io/

 

이후 본인 PC에서 USB를 제거하고 미니 PC에 연결한 후 PC에 전원을 넣어주자. 

그리고 각 PC 상황에 맞게 키를 연타해서 바이오스 모드에 진입하자.

 

 

그리고 부팅 설정을 USB로 설정해서 부팅 될때 ubuntu 설치 USB로 연결되게 하자.

이후에 ubuntu 기본 설치 과정을 거치면 미니 PC에 ubuntu 설치가 완료된다!

 

 


 

4. 브릿지 모드 설정

 

다음으로는 브릿지 모드 설정이다. 브릿지 모드란 무엇인지 먼저 설명을 하려면 네트워크의 구조에 대해서 이해를 해야 한다.

현재 우리 집은 SK BroadBand를 통해서 인터넷에 가입되어 있고 SK BroadBand는 다른 통신사들과 다르게 ISP 케이블을 끌고 와서 공유기와 모뎀 역할을 하는 H660N 기종의 모뎀에 연결되고 이와 또 연결되는 와이파이 공유기 한 대가 더 있다. 현재 구조를 그림으로 간단하게 표현하면 다음과 같다.

 

 

 

외부 인터넷 선에서 모뎀으로 연결되고 모뎀에서 공유기로 연결되어 있는 상황이다. 그리고 SKT의 인터넷은 모뎀과 공유기 모두 각각 NAT 방식으로 설정이 되어있다.

 

NAT 방식이란?

 

외부 네트워크에 알려진 것과 다른 IP 주소를 내부 네트워크에서 IP 주소를 변환하는 방식이다. 즉 현재 구조는 이중으로 사설 IP가 설정되기에 외부에서 미니 PC에 접근하려고 하면 포트포워딩을 공유기에 해 놓더라도 사설 IP이기에 접근을 할 수가 없게 된다. 따라서 이중으로 포트포워딩을 해 주거나 모뎀 부분을 브릿지모드로 바꾸어주면 된다. 이중으로 포트포워딩을 하기보다 브릿지모드로 변경하는 방법이 간단하기에 브릿지모드 변경 방법을 소개하겠다.

 

브릿지 모드란?

 

단순 허브 역할을 하며 NAT 방식과 달리 외부의 공인 IP를 그대로 사용할 수 있게 된다. 따라서 현재 구조에서 모뎀을 브릿지 모드로 바꾸게 된다면 사설 IP를 부여하는 것이 아니라 외부 공인 IP를 그대로 사용할 수 있기 때문에 외부에서도 접속이 가능해진다.

 

브릿지 모드 변경 방법

 

인터넷 주소창에 192.168.75.1을 치게 되면 설정 화면으로 진입할 수 있다. 

아이디는 admin, 비밀번호는 GPON S/N 끝 6자리 + _admin을 입력하면 로그인이 된다.

그 후 NAT 설정을 Bridged로 바꾸어주자.

 

여기에서 아주 중요한 점이 있다. SKT BroadBand 공유기의 기본 비밀번호는 MAC 주소 끝 6자리_admin이지만 H660N 기종의 모뎀을 사용하고 있다면 비밀번호는 MAC 주소 뒤 6자리_admin이 아니라 GPON S/N 끝 6자리_admin으로 해주어야 하며 하나 더 중요한 점은 그대로 입력하는 것이 아니라 소문자는 대문자로 바꾸어주어야 접속이 가능하다는 점이다. 도저히 접속이 안돼서 SKT 고객센터에 공유기 비밀번호를 문의드렸는데 GPON 끝자리가 아닌 MAC 주소 끝자리를 알려주셔서 더 헤메었다. 그러다가 혹시나 해서 검색해 본 모델명을 통해서 비밀번호가 GPON 끝 6자리를 입력해야 한다는 것을 알고 겨우 접속할 수 있었다. (조금의 실수가 있으셨던 것 같다. 그래도 굉장히 친절하셨고 나머지 상담 내용들은 도움이 많이 되었다.)

 

접속해서 기쁘다 아니 괴로워 아니 기뻐 도대체 이 감정은 뭘까

 


 

5. 외부 접속을 위한 포트포워딩 feat. SK BroadBand

브릿지 모드로 변경을 마쳤으면 외부에서 접속할 준비가 되었으니 본격적으로 포트포워딩을 설정할 차례이다.

 

포트포워딩이란?

 

컴퓨터 네트워크 상에서 패킷이 방화벽이나 라우터 같은 네트워크 게이트를 지날 때 IP 주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 네트워크 주소 변환의 응용

 

말이 굉장히 어려운 것 같다. 간단하게 이야기하면 외부에서 IP로 접속이 들어오면 무슨 포트의 내부 IP로 넘겨줄 것인지 설정하는 방법이다. 나는 스프링부트 서버, 그라파나, loki, mysql 등 다양한 툴들을 돌릴 생각이었기 때문에 각 포트들을 홈서버 내부 IP로 포트포워딩 해주었다. (ubuntu의 내부 IP는 ifconfig를 통해서 확인할 수 있다. ) 

 

http://192.168.45.1/ 로 접속해서 로그인 후 포트 포워딩을 진행해 주자. (모뎀이 아닌 일반 공유기는 MAC주소 끝 6자리 _admin이다. 잊지 말자.)

 

 

+ SK에서는 특정 포트들을 포트포워딩 하는 것을 막아놓았기 때문에 해당 포트들을 피해서 임의로 잘 설정을 해 주어야 한다.

 

포트 포워딩을 마치고 나의 공인 IP 주소를 검색한 후 그 주소에 포트 번호를 입력하면 해당 부분으로 접속할 수 있게 된다. (물론 홈서버에서 스프링부트나 그라파나 등을 실행시켜야 접속이 가능하다.)

 

성공적으로 외부에서 홈서버로 접속하여 그라파나를 띄운 모습

 


6. SSH

 

마지막으로는 SSH이다. 수정사항이 있을 때마다 미니 PC로 화면을 옮겨서 작업을 하기 보다 mac 터미널에서 간단하게 접속하기 위해서 SSH를 사용할 것이다. 마찬가지로 포트포워딩을 해주어야 외부에서 SSH를 통해서 홈서버에 접속할 수 있다. SSH의 기본 포트는 22이지만 SK BroadBand에서는 22번 포트포워딩을 막아놓았기 때문에 다른 임의의 포트 번호를 사용해서 포트포워딩을 진행해야 한다. 나 같은 경우는 23번을 사용했다.  (위와 마찬가지로 192.168.45.1에 접속해서 포트포워딩을 진행해 주자.)

 

다음으로는 ubuntu에 SSH를 설치하고 방화벽을 설정해 주어야 한다. 관련 내용들은 많은 블로그에서 다루고 있기 때문에 여기에서는 다루지 않겠다.

다만 우리는 기본 포트인 22번 포트를 사용하지 않고 다른 포트로 ssh를 설정해 주어야 하기 때문에 ssh의 기본 포트를 바꾸는 방법을 소개하겠다.

 

SSH 기본 포트를 바꾸는 방법

 

1. sudo vi /etc/ssh/sshd_config를 입력한다.

2. 주석 처리되어 있는 #Port 22의 주석을 해제한다.

3. 원하는 포트 번호로 변경하고 저장한다.

(저장이 안 된다면 sudo로 vi 또는 vim 실행하기)

 

여기서 끝내게 되면 아무리 해도 SSH 접속이 되지 않는다.

 

/etc/systemd/system/sockets.target.wants/ssh.socket 의 소켓 설정을 변경된 포트 번호로 바꾸어주자.

 

From

[Socket]
ListenStream=22
Accept=no

 

To

[Socket]
ListenStream=2222
Accept=no

 

 

이렇게 설정을 마쳤으면 SSH 접속이 무사히 완료된다.

 

 

 


마치며..

 

두서없이 쓴 글이지만 직접 홈서버를 구축하면서 삽질하면서 막히던 부분의 해결책을 최대한 기술하려고 노력했다.

나의 글로 홈서버를 구축하시려고 시도하시는 분들에게 조금이나마 도움이 되었으면 좋겠다. 

 

 


질문이나 수정해야할 부분 있다면 댓글 남겨주세요 ㅎㅎ 감사합니다.