고민은 격렬하게, 행동은 단순하게

[홈서버 구축] 잠자는 노트북(맥북)으로 홈서버 구축하기 (feat. DHCP, 포트 포워딩) 본문

개발

[홈서버 구축] 잠자는 노트북(맥북)으로 홈서버 구축하기 (feat. DHCP, 포트 포워딩)

jomminii 2024. 1. 21. 15:51

 

안녕하세요~

요즘은 근로소득 외에

부수입을 좀 만들어보려고 노력하고 있는데요,

 

(왜 연봉은 안 오르는 거지)

 

 

개발자다 보니

사이드 프로젝트를 만들어서

광고 수입을 좀 얻어볼까 생각도 해보고

팔아볼까 싶기도 하고 

이런저런 생각들을 해보고 있어요.

 

근데 일단 사이드 프로젝트로

돈을 벌려면

사람들에게 공개를 해야 하고,

그러려면 서버를 배포해야 하잖아요?

 

회사에서 쓰는 AWS의 EC2 등을

프리티어를 이용해서

배포해 볼까도 했는데,

 

 

프리티어가 3개월 밖에 안남기도 했고,

다른 계정을 만들어서 하기엔

중도에 서버 이전을 해야 하는 게 번거롭기도 하고

등등의 이유로

자리를 잡기 전에는

홈서버를 구축해서

서버비용이라도 아껴보자라는 생각을 하게 됐어요.

마침 집에

개발을 처음 시작할 때 사용했던

2014년 mid 맥북 프로 레티나가

잠자고 있었지요!

 

사용 안 한 지 시간이 좀 지나서

잘 작동할까 싶었는데

 

역시 애플답게 좀 느리긴 하지만

사용하는 데는 무리가 없었어요.

 

다만 brew 등으로

새로운 프로그램을 설치할 때

시간이 좀 많이 걸리긴 하더라고요...

 

그래도 되는 게 어디냐!

 

 

# 공유기 접속

 

전 ASUS의 RT-AC68U 모델을 쓰고 있는데요,

공유기 관리자에 접속하려면

와이파이에 연결된 상태에서

http://192.168.1.1에 접속하시면 돼요.

 

 

그러면 위처럼 로그인을 해야 하는데,

초기 계정 및 비밀번호는

admin/admin으로 설정되어 있다고 해요!

 

 

 

어드민은 위와 같이 구성되어 있어요.

 

 

# DHCP 설정

DHCP(동적 호스트 구성 프로토콜)
는 IP 네트워크에서 사용되는 자동 구성을 위한 프로토콜입니다.
DHCP 서버는 각 클라이언트에 IP 주소를 할당할 수 있으며 클라이언트에 DNS 서버 IP와 기본 게이트웨이 IP를 통지합니다.

 

 

DHCP는 IP 주소를

특정 클라이언트(여기선 노트북)에 할당하여

특정 IP로 접속 시

설정된 클라이언트로 접속할 수 있게 해 줘요.

 

설정법은 ASUS 홈페이지에 자세히 나와있긴 한데

간단히 설명하자면

LAN 설정에서

DHCP 할당 설정을 켜주고,

 

홈서버로 사용할 노트북의

MAC 주소에 IP를 할당하는 방식이에요.

 

 

IP의 범위는 ****. 2~254이고, 

이 중에서 특정 IP를 골라서 배정하면 돼요.

 

 

클라이언트 이름(MAC 어드레스)에

MAC 주소를 입력하고,

IP 주소에는 배정하고 싶은 IP를 넣으면 끝!

 

적용하면 어드민이 새로고침 되고

해당 IP로 접속을 할 수 있게 돼요.

 

동일한 와이파이에 접속된 기기에서

위의 경우에는 브라우저 주소창에

192.168.1.74를 치면 되지만

특정 포트에 열어놓은 게 있어야 접속이 돼요.

 

예를 들어 python 등 서버를

1234 포트에 열어놓았다면,

192.168.1.74:1234로 접속하면

접속이 됩니다!

 

혹시 MAC 주소 찾는 법을 모르신다면!

 

맥북 기준으로

설정 > 네트워크 > Wi-Fi > 고급 설정에서

확인할 수 있어요.

 

 

 

# 포트포워딩

 

하지만 위처럼 설정한다고 해서 끝이 아니에요.

아직은 같은 네트워크에 접속을 해있어야

접속을 하고 있어서

홈서버로써는

사용하기가 어려워요.

밖의 다른 사람들은 접속할 수가 없거든요.

 

엄밀히 말하면

나의 WAN IP로 접속을 할 수는 있는데

 

홈서버로 접속하게 할

클라이언트에는 접속을 할 수가 없어요.

 

클라이언트로 연결하라는 설정을

안 했거든요.

 

이 기능의 구현은 포트포워딩으로 할 수 있어요.

 

포트포워딩이란

특정 포트로 접속하는 요청을

원하는 곳으로 포워딩(전달) 해주는 기능이에요.

 

 

예를 들어 나의 IP의 1234 포트로 접속하면

위에서 설정한 내부 IP 인 192.168.1.74:1234로

포워딩해 줘! 를 할 수 있게 돼요.

 

 

포트포워딩은 역시

ASUS의 가이드를 참조해서

설정했는데요,

 

 

WAN > 가상서비 / 포트 포워딩

화면에서 포트 포워딩 사용을 체크한 후

설정을 해주면 돼요.

 

프로토콜은 TCP로 설정해 주시고요!

 

TCP 란?
TCP(Transmission Control Protocol, 전송 제어 프로토콜)는 인터넷을 통해 디바이스에서 웹 서버로 데이터를 전송하는 네트워크 프로토콜입니다. TCP/IP 프로토콜이라고 불리기도 합니다. 메신저에서 친구와 채팅을 하거나, 이메일을 보내거나, 온라인 동영상을 보거나, 웹을 검색할 때마다 TCP 프로토콜을 사용합니다.
TCP는 연결 기반이므로 데이터를 전송하는 동안 수신자와 발신자 사이에 연결을 설정하고 이를 유지합니다. 데이터가 완전히 온전하게 도착하도록 보장합니다. 이러한 신뢰성 때문에 TCP는 가장 널리 사용되는 네트워크 프로토콜입니다.
출처 : TCP UDP 차이: 두 프로토콜 비교(Nord VPN) 

 

외부 포트는

위의 WAN IP를 통해 접속할 때

접속하는 포트로

WAN IP 가 123:12:1:12라고 할 때

123:12:1:12:1234라고 접속한다면

1234는 외부 포트입니다.

 

그리고 해당 외부 포트로 접속했을 때,

홈서버로 사용하는 클라이언트로

연결해 주는 게 제가 원하는 거니까,

 

해당 클라이언트의 서버로

내부 IP 및 포트를 설정해 줘야 합니다.

 

내부 IP는 DHCP에서

클라이언트로 지정했던 IP를 사용하고,

포트는

클라이언트의 서버에서 열어준 포트를

지정해 주면 됩니다.

 

제가 클라이언트(홈서버)에 띄운

streamlit 서버를 예시로 보면

로컬에 8501 포트로 띄워놨기 때문에

내부 포트를 8501로 지정해 주면 됩니다.

 

 

 

 

이제 설정은 끝났고,

내 네트워크가 아닌

외부 네트워크 환경에서

접속을 해보면

접속이 가능해집니다.

 

 

아직 인증서를 설정하진 않았기 때문에

http로 연결되고, 보안 안됨 상태로 노출되고 있어요.

 

이제 남은 단계는 도메인을 설정하고

https 인증 설정을 하는 건데,

이건 다음에 해보도록 할게요!

 

아직 도메인을 정하지 않아서..

 

 

# ssh 접속

홈서버에 띄운 서버를

이제 외부에서 접속은 할 수 있게 됐는데,

 

외부에서

배포한 서버의 코드를 수정하거나

다른 설정들을 수정하고 싶으면

ssh로 접속해서

처리할 수 있으면 좋겠죠?

 

이를 하려면

위에서 포트 포워딩 설정을 할 때

내부 포트 22를 바라보고 있는

포트 포워딩 설정을 추가로 해주면 됩니다.

 

22 포트는 SSH로 접속을 할 수 있는 포트로

고정되어 있기 때문에

터미널 등을 통해

접속할 수 있게 돼요.

 

외부 포트는 22가 아닌

다른 포트로 열어주어도

상관없어요.

 

이왕이면 나쁜 친구들에게 털리지 않게

22가 아닌 다른 포트로 해두는 게

좋긴 하겠죠?

 

 

이전 설정 이미지를 다시 가져왔는데,

여기서는 외부 포트를 11234로 열고,

내부 클라이언트(홈서버)의 22 포트로

포트 포워딩을 해줬어요.

 

이제 외부에서 접속하고 싶다면

터미널에 아래와 같이 입력하고 비밀번호를 적어주면 접속할 수 있어요.

ssh {컴퓨터 로그인 아이디}@{WAN IP} -p {외부 포트}

# 예시
ssh sarangkkun@111.222.33.44 -p 11234

 

컴퓨터 로그인 아이디는

노트북 잠금 상태일 때

로그인하는 화면의

내 계정 이름을 적어주면 되고요,

 

비밀번호는 그때 적는 비밀번호,

WAN IP는 위에서 설명했던 퍼블릭 IP를 의미하고,

외부 포트는 포트 포워딩에서 설정했던

포트를 입력하면 돼요.

 

로그인하면 아래와 같은 접속 메시지가 뜨고,

접속이 됩니다.

나가고 싶으면 exit 하고 엔터!

Last login: Sun Jan 21 14:24:57 2024 from 192.168.1.1

 

이렇게 간단히

홈서버를 설정하는 법을

진행해 봤는데요.

 

아직 상용으로

서버를 운영하기 전이거나

가볍게 돈 들이지 않고

테스트를 해보고 싶다면

한 번 도전해 보세요!

 

그럼 안녕!

반응형