🖥️

홈 서버 만들기 시리즈

1편 → 남는 PC로 개인 서버 만들기 (VirtualBox & 우분투) 2편 ← 지금 여기

Ubuntu에 Samba 설치해서 나만의 NAS 만들기

1편에서 집에 남는 구형 PC에 VirtualBox와 우분투(Ubuntu)를 설치하고, 외부에서도 SSH로 접속할 수 있는 나만의 홈 서버를 완성했습니다. 서버를 켜 두고 있는데 어딘가 아쉬운 느낌, 드시지 않나요?

이번 2편에서는 그 서버에 'Samba(삼바)'를 설치하여, 집 안의 모든 기기(Windows PC, Mac, 스마트폰)에서 마치 외장 하드처럼 자유롭게 파일을 주고받을 수 있는 나만의 NAS(Network Attached Storage)를 구축합니다. 월 구독료를 내는 클라우드 서비스 없이, 한 번 설정으로 용량 걱정 없이 파일을 공유해 보세요.

Ubuntu Samba NAS 구성도 - 홈 서버와 각 기기 연결
Samba 서버 하나로 집 안의 모든 기기가 하나의 네트워크 드라이브를 공유합니다.

1. Samba란 무엇인가? NAS와의 관계

NAS(Network Attached Storage)란 네트워크에 연결된 저장 장치로, 쉽게 말하면 '네트워크로 연결해 쓰는 공용 외장 하드'입니다. 시중에 판매하는 Synology, QNAP 같은 전용 NAS 장비는 100만 원을 훌쩍 넘기도 하죠. 하지만 집에 남는 PC와 오픈소스 소프트웨어 Samba만 있으면, 그 기능의 80% 이상을 무료로 구현할 수 있습니다.

Samba(삼바)는 리눅스 서버가 Windows의 파일 공유 프로토콜인 SMB/CIFS(Server Message Block)를 사용할 수 있도록 해주는 오픈소스 소프트웨어입니다. 덕분에 우분투 서버가 삼바를 설치하면, Windows 탐색기에서 마치 같은 네트워크에 있는 Windows 공유 폴더처럼 접근할 수 있게 됩니다. Mac과 스마트폰도 물론 지원합니다.

✅ 이 가이드 완성 후 가능한 것들:
  • Windows 탐색기에서 Z:\ 드라이브처럼 네트워크 드라이브 연결
  • Mac Finder에서 직접 파일 열기·저장
  • 스마트폰 앱으로 집 서버 영상 스트리밍
  • 사진·문서·동영상을 용량 제한 없이 백업
  • 가족 모두가 파일을 공유하는 홈 클라우드

2. 시작 전 준비사항 확인

이 가이드는 1편을 완료한 상태를 기준으로 합니다. 아래 사항이 모두 준비되어 있는지 먼저 확인해 주세요.

준비사항 세부 내용 확인
Ubuntu Server Ubuntu 22.04 LTS 또는 24.04 LTS 실행 중
SSH 접속 터미널에서 서버에 SSH 접속 가능
내부 IP 주소 우분투 서버의 내부 IP(예: 192.168.0.x) 파악
sudo 권한 설치 시 sudo 명령어 실행 가능한 계정

서버의 내부 IP를 아직 모른다면, SSH 접속 후 아래 명령어로 확인하세요.

ip addr show | grep "inet " | grep -v "127.0.0.1"

inet 192.168.0.XX/24 형태로 출력되는 숫자가 여러분 서버의 내부 IP입니다. 이 숫자를 메모해 두세요. 이후 모든 연결 설정에서 계속 사용합니다.


3. Samba 설치하기

SSH로 우분투 서버에 접속한 상태에서 아래 명령어를 순서대로 실행합니다. 명령어 한 줄씩 복사해서 붙여넣기 하는 것을 권장합니다.

① 패키지 목록 업데이트

sudo apt update && sudo apt upgrade -y

서버의 패키지 목록을 최신 상태로 갱신하고, 기존 패키지를 업그레이드합니다. 몇 분 정도 소요될 수 있습니다.

② Samba 설치

sudo apt install samba -y

③ 설치 확인

설치가 정상적으로 완료되었는지 버전을 확인합니다.

samba --version

Version 4.x.x 형태로 출력되면 설치가 완료된 것입니다.

④ Samba 서비스 상태 확인

sudo systemctl status smbd
Samba smbd 서비스 active running 상태 확인 터미널 화면
Active: active (running)이 초록색으로 표시되면 Samba가 정상 동작 중입니다.
💡 꿀팁: active (running)이라고 녹색으로 표시되어야 정상입니다. 만약 inactive라면 sudo systemctl start smbd 명령어로 수동 실행하세요. 확인 후 q를 눌러 빠져나옵니다.

4. 공유 폴더(Share) 생성 및 권한 설정

외부에서 접근할 공유 폴더를 만들고 권한을 설정합니다. 이 폴더가 NAS의 '드라이브' 역할을 합니다.

① 공유 폴더 생성

/srv/samba/ 경로 아래에 nas라는 이름의 공유 폴더를 만듭니다. 폴더 이름은 원하는 대로 변경해도 됩니다.

sudo mkdir -p /srv/samba/nas

② 폴더 권한 설정

모든 사용자가 읽고 쓸 수 있도록 권한을 부여합니다.

sudo chmod 777 /srv/samba/nas
⚠️ 보안 참고사항: chmod 777은 모든 사용자에게 읽기·쓰기·실행 권한을 부여하는 가장 개방적인 설정입니다. 이는 가정 내 내부망 전용 NAS에 적합합니다. 외부 인터넷에 직접 노출하는 환경이라면, 아래 섹션 6의 방화벽 설정으로 접근을 내부망으로 제한해야 합니다.

③ Samba 전용 사용자 계정 및 비밀번호 설정

Samba는 리눅스 시스템 계정과는 별도의 비밀번호를 사용합니다. 아래 명령어로 현재 로그인한 우분투 계정에 Samba 접속용 비밀번호를 설정합니다. your_username을 본인의 우분투 계정명으로 바꿔주세요.

sudo smbpasswd -a your_username

명령어를 실행하면 비밀번호를 두 번 입력하라는 프롬프트가 나옵니다. 이 비밀번호는 나중에 Windows, Mac, 스마트폰에서 NAS에 접속할 때 사용합니다.

💡 꿀팁: 본인의 우분투 계정명이 기억나지 않으면 whoami 명령어로 확인하세요.

5. smb.conf 설정 파일 편집

Samba의 핵심 설정 파일인 smb.conf를 편집하여 공유 폴더를 등록합니다. 이 파일 하나가 NAS의 모든 동작을 제어합니다.

① 설정 파일 백업 (강력 권장)

수정 전에 원본 설정 파일을 반드시 백업합니다. 설정 실수 시 복구를 위해 꼭 필요한 단계입니다.

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

② 설정 파일 편집

sudo nano /etc/samba/smb.conf

파일을 열면 기존 내용이 많이 보입니다. 당황하지 말고 파일의 맨 아래로 스크롤한 뒤, 아래 내용을 그대로 추가합니다. (Ctrl + End로 빠르게 맨 아래로 이동할 수 있습니다.)

nano 편집기에서 smb.conf 파일 편집하는 화면
smb.conf 파일 맨 아래에 공유 폴더 설정 블록을 추가합니다.

추가할 설정 내용

[NAS]
   comment = My Home NAS
   path = /srv/samba/nas
   browsable = yes
   read only = no
   guest ok = no
   valid users = your_username
   create mask = 0664
   directory mask = 0775
   force group = your_username

각 설정 항목의 의미는 다음과 같습니다.

설정 항목 설명
[NAS] 네트워크에서 보이는 공유 폴더 이름. 원하는 이름으로 변경 가능.
path 실제 공유할 폴더 경로
browsable yes: 네트워크 탐색 시 목록에 표시
read only no: 쓰기 허용. yes로 하면 읽기 전용.
guest ok no: 비밀번호 없는 게스트 접근 차단 (보안)
valid users 접속을 허용할 사용자명 (본인 계정으로 변경)

your_username으로 표시된 부분을 모두 본인의 우분투 계정명으로 교체합니다. 저장은 Ctrl + O, 확인은 Enter, 종료는 Ctrl + X입니다.

③ 설정 파일 문법 검사

저장 후 설정 오류 여부를 자동으로 검사합니다. 이 명령어 하나로 실수를 사전에 막을 수 있습니다.

testparm

Loaded services file OK. 메시지가 뜨면 설정 파일에 문법 오류가 없는 것입니다.

④ Samba 서비스 재시작

변경된 설정을 적용하기 위해 Samba 서비스를 재시작합니다.

sudo systemctl restart smbd nmbd

6. 방화벽(UFW) 설정

우분투는 기본적으로 UFW(Uncomplicated Firewall)라는 방화벽이 있습니다. Samba가 사용하는 포트를 허용해야 정상 접속이 가능합니다.

① 방화벽 상태 확인

sudo ufw status

② Samba 포트 허용

UFW에 Samba 프로필이 이미 등록되어 있어 간단한 명령어 하나로 필요한 포트(137, 138, 139, 445번)를 한 번에 허용할 수 있습니다.

sudo ufw allow Samba

③ 내부 네트워크만 허용 (선택 사항, 보안 강화)

보안을 더 강화하고 싶다면, 내부 네트워크(192.168.0.0/24) 대역에서의 접근만 허용하도록 설정할 수 있습니다. 192.168.0.0/24 부분을 본인의 공유기 대역에 맞게 수정하세요.

sudo ufw allow from 192.168.0.0/24 to any port 445
sudo ufw allow from 192.168.0.0/24 to any port 139
⚠️ 중요: 만약 UFW가 비활성화(inactive) 상태라면 위 설정은 불필요합니다. 단, UFW를 사용 중이라면 Samba를 허용하지 않으면 접속이 차단됩니다. UFW 활성화는 sudo ufw enable로 할 수 있으나, SSH 포트(22번 또는 2222번)를 먼저 허용하지 않으면 SSH 접속이 끊어질 수 있으므로 주의하세요.

7. 외부에서 집안 Samba 서버에 접속하기 (포트 & 보안)

집 안 Wi-Fi에서는 문제없이 연결됩니다. 그런데 밖에서도 내 집 NAS에 접속하고 싶다면 어떻게 해야 할까요? 이 섹션에서는 Samba가 사용하는 포트의 의미부터, 외부 개방의 위험성, 그리고 안전하게 외부에서 접속하는 올바른 방법까지 깊이 있게 다룹니다.

① Samba(SMB)가 사용하는 서비스 포트

Samba 서버가 동작하기 위해 내부적으로 사용하는 포트는 총 4개입니다. 각 포트가 어떤 역할을 하는지 이해하면 방화벽 설정과 보안 판단에 큰 도움이 됩니다.

포트 프로토콜 역할 중요도
445 TCP 최신 SMB 파일 공유를 위한 핵심 포트. NetBIOS 없이 직접 파일 전송. 필수
139 TCP NetBIOS 세션 서비스. 구형 Windows 시스템 호환용. 보조
137 UDP NetBIOS 이름 해석. 로컬 네트워크에서 컴퓨터 이름으로 서버를 찾을 때 사용. 로컬용
138 UDP NetBIOS 데이터그램. 로컬 네트워크 내 브로드캐스트 통신. 로컬용

② 외부에 포트를 직접 여는 것은 왜 위험한가?

"공유기에서 TCP 445 포트를 포트포워딩하면 외부에서도 접속할 수 있지 않나요?" — 기술적으로는 맞습니다. 하지만 이 방법은 절대 권장하지 않으며, 실제로도 다음 두 가지 이유로 불가능하거나 위험합니다.

🚨 TCP 445 포트를 인터넷에 직접 개방하면 안 되는 이유

① 랜섬웨어의 1순위 공격 표적

TCP 445 포트는 2017년 전 세계를 강타한 워너크라이(WannaCry) 랜섬웨어를 비롯한 수많은 악성코드의 핵심 침투 경로입니다. 인터넷에서 445 포트가 열린 서버를 스캔하는 해킹 봇넷은 24시간 쉬지 않고 동작합니다. 포트를 연 순간부터 공격이 시작된다고 봐야 합니다.

② 통신사(ISP)가 원천 차단

위험성이 워낙 높아 KT, SK브로드밴드, LG유플러스 등 국내 대부분의 인터넷 서비스 제공자(ISP)는 가정용 회선에서 외부에서 들어오는 TCP 445 포트 접속을 기본적으로 원천 차단합니다. 포트를 열어도 통신사 레벨에서 막혀 접속 자체가 안 됩니다.

③ 안전하게 외부에서 접속하는 올바른 방법: VPN 사용

정답은 VPN(가상 사설망)입니다. 포트를 직접 여는 대신, 기기 간에 암호화된 보안 터널을 만들어 마치 집 안의 Wi-Fi에 연결된 것처럼 동작하게 합니다. 외부에서도 서버의 내부 IP(192.168.0.XX)로 그대로 접속할 수 있어, 별도 설정 변경이 전혀 필요 없습니다.

복잡한 서버 설정 없이 무료로 사용할 수 있는 두 가지 최신 VPN 솔루션을 소개합니다.

Tailscale

가장 쉬운 설치 · 무료 플랜 (기기 3대)

  • 구글/깃허브 계정으로 가입 즉시 사용
  • 우분투, Windows, Mac, iOS, Android 모두 지원
  • 설치 후 자동으로 100.x.x.x 가상 IP 부여
  • 외부에서 그 IP로 Samba 접속 가능
  • 개인 무료 플랜: 기기 3대, 용량 무제한

tailscale.com →

ZeroTier

가상 LAN 방식 · 무료 플랜 (기기 25대)

  • 나만의 가상 네트워크 ID 생성 후 기기 참여 방식
  • 가족·친구와 공유하는 홈 네트워크 구축에 유리
  • Windows, Mac, Linux, iOS, Android 지원
  • 가상 IP로 외부에서 Samba 동일하게 접속
  • 개인 무료 플랜: 기기 25대까지

zerotier.com →

✅ 외부 접속 요약 정리:
  • 집 안 Wi-Fi에서 접속: 서버 내부 IP (\\192.168.0.XX\NAS) 사용 → 바로 가능
  • 외부(카페, 직장 등)에서 접속: Tailscale 또는 ZeroTier 설치 → 부여된 가상 IP로 동일하게 접속
  • 절대 하면 안 되는 것: 공유기에서 TCP 445 포트 직접 개방 (랜섬웨어 표적 + ISP 차단)

8. Windows에서 네트워크 드라이브로 연결하기

드디어 실제 기기에서 연결해 볼 시간입니다! 같은 공유기에 연결된 Windows PC에서 진행합니다.

방법 1: 파일 탐색기에서 직접 연결

  1. Windows 파일 탐색기(Windows Explorer)를 엽니다.
  2. 주소창에 아래와 같이 입력하고 Enter를 누릅니다.
    \\192.168.0.XX\NAS
    (XX는 우분투 서버의 실제 내부 IP로 교체, NAS는 smb.conf에서 설정한 공유 이름)
  3. 사용자명과 비밀번호 입력창이 나타나면, smbpasswd로 설정한 계정 정보를 입력합니다.
  4. 폴더가 열리면 연결 성공! 🎉

방법 2: 네트워크 드라이브로 고정 연결 (재부팅 후에도 유지)

  1. 파일 탐색기에서 왼쪽의 '내 PC'를 우클릭합니다.
  2. '네트워크 드라이브 연결(Map network drive)'을 선택합니다.
  3. 드라이브 문자(예: Z:)를 선택합니다.
  4. 폴더 경로에 \\192.168.0.XX\NAS를 입력합니다.
  5. '로그인할 때 다시 연결(Reconnect at sign-in)' 체크박스를 선택합니다.
  6. '다른 자격 증명 사용(Connect using different credentials)'도 체크하고 마침을 클릭합니다.
  7. 계정 정보 입력 후, 이제 Z: 드라이브처럼 항상 연결됩니다.
Windows 파일 탐색기에서 네트워크 드라이브 Z: 드라이브 연결 설정 화면
Windows 네트워크 드라이브 연결 화면. 재부팅 후에도 자동 연결됩니다.

9. Mac에서 연결하기

Mac에서도 Finder를 통해 손쉽게 연결할 수 있습니다.

  1. Mac 상단 메뉴바에서 '이동(Go)''서버에 연결(Connect to Server...)'을 클릭합니다. (⌘ Cmd + K 단축키)
  2. 서버 주소 입력창에 아래와 같이 입력합니다.
    smb://192.168.0.XX/NAS
  3. '연결(Connect)'을 클릭합니다.
  4. 계정명과 비밀번호를 입력하면, Finder 사이드바에 NAS 폴더가 마운트됩니다.
💡 Mac 자동 연결 팁: '서버에 연결' 창에서 주소를 입력한 뒤 '즐겨찾기에 추가(+)' 버튼을 눌러 저장해 두면, 다음에 빠르게 연결할 수 있습니다. 또한 로그인 항목(시스템 환경설정 → 사용자 및 그룹 → 로그인 항목)에 마운트된 드라이브를 추가하면 Mac 시작 시 자동 연결됩니다.

10. 스마트폰(안드로이드 / iOS)에서 연결하기

스마트폰에서도 앱을 통해 NAS에 접근할 수 있습니다. 같은 와이파이 네트워크에 연결된 상태여야 합니다.

안드로이드: Solid Explorer 또는 CX File Explorer

  1. Play 스토어에서 'CX File Explorer' 앱을 설치합니다. (무료)
  2. 앱 실행 후 왼쪽 메뉴에서 '네트워크(Network)'를 선택합니다.
  3. '새 위치 추가' 또는 '+' 버튼을 누릅니다.
  4. 프로토콜은 SMB를 선택합니다.
  5. 호스트(Host)에 서버 IP, 사용자명과 비밀번호를 입력합니다.
  6. 공유 이름(NAS)을 입력하고 연결합니다.

iOS(아이폰): 파일(Files) 앱에서 기본 연결

  1. 아이폰 기본 앱인 '파일(Files)' 앱을 엽니다.
  2. 오른쪽 상단의 '…(더 보기)' 버튼을 탭합니다.
  3. '서버에 연결(Connect to Server)'을 선택합니다.
  4. 서버 주소에 smb://192.168.0.XX를 입력하고 '다음(Next)'을 탭합니다.
  5. 사용자명과 비밀번호를 입력하면 연결됩니다.
스마트폰 파일 앱에서 홈 서버 Samba NAS 연결 화면
스마트폰에서도 집 서버의 파일에 자유롭게 접근할 수 있습니다.

11. 자주 발생하는 오류 및 해결 방법

처음 설정할 때 자주 마주치는 오류 유형과 해결 방법을 정리했습니다.

❌ 오류 1: Windows에서 "네트워크 경로를 찾을 수 없습니다"

원인: IP 주소 오기입, Samba 서비스 미실행, 방화벽 차단

해결:
① 서버에서 sudo systemctl status smbd로 서비스 상태 확인
② IP 주소 재확인 (ip addr)
sudo ufw allow Samba 재실행

❌ 오류 2: 로그인 창에서 비밀번호 거부됨

원인: smbpasswd 미설정 또는 계정명 오기입

해결:
sudo smbpasswd -a your_username으로 비밀번호 재설정
② smb.conf의 valid users에 입력한 계정명과 동일한지 확인

❌ 오류 3: 연결은 됐는데 파일 쓰기(복사)가 안 됨

원인: 공유 폴더 권한 문제 또는 smb.conf의 read only = yes

해결:
sudo chmod 777 /srv/samba/nas 재실행
② smb.conf에서 read only = no인지 확인 후 sudo systemctl restart smbd

❌ 오류 4: testparm에서 오류가 발생함

원인: smb.conf 문법 오류 (들여쓰기 또는 오타)

해결:
① 백업 파일로 복구: sudo cp /etc/samba/smb.conf.bak /etc/samba/smb.conf
② 처음부터 다시 추가. 각 줄 앞에 공백(스페이스) 3개가 있어야 합니다.


🏠 마치며: 이제 진짜 '나만의 클라우드'가 생겼습니다

수고하셨습니다! 이제 여러분의 집에는 월 구독료가 0원인 개인 NAS 서버가 생겼습니다. Google Drive나 iCloud에 수십 GB를 올려두는 대신, 집에 남는 PC 한 대가 여러분의 파일을 묵묵히 지켜줍니다.

오늘 이 글에서 완성한 것

  • Ubuntu 서버에 Samba 설치 및 서비스 실행
  • 전용 공유 폴더 생성 및 smb.conf 설정
  • 방화벽(UFW) 설정으로 보안 확보
  • SMB 포트 이해 및 외부 접속 보안 원칙 습득
  • Windows, Mac, 스마트폰 3종 기기 모두 연결 완료

다음 편에서는 이 홈 서버 위에 Nginx 웹 서버를 설치하고 나만의 개인 웹사이트나 블로그를 호스팅하는 방법을 알아보겠습니다. 설정 중 막히는 부분이 있으면 댓글로 남겨주세요! 집이나 어디나 우분투 서버 하나가 나만을 위해서 존재 하는것 만으로도 얼마나 든든한지 모릅니다. ㅎㅎ - 늘산 생각 -