리눅스

[Linux: 5주차 2차시] Linux 네트워크 서비스 학습 정리 (Samba & DHCP 실습 트러블슈팅)

palantirops 2026. 2. 13. 16:51

Linux 네트워크 서비스 학습 정리

Samba & DHCP 실습 트러블슈팅


목차

  1. Samba 서비스 핵심 개념
  2. 내가 겪은 문제들과 해결법
  3. 실전 명령어 정리
  4. DHCP 서비스 이해하기

1. Samba 서비스 핵심 개념

Samba란?

  • SMB/CIFS 프로토콜을 구현한 오픈소스
  • Linux ↔ Windows 간 파일/프린터 공유를 가능하게 함
  • 실무에서는 부서간 파일 공유, 백업 스토리지 등으로 활용

Samba가 사용하는 포트

포트 프로토콜 용도

445 TCP/UDP SMB Direct (현대적 방식) - 가장 중요!
139 TCP NetBIOS Session (구형 시스템)
137 UDP NetBIOS 이름 해석
138 UDP NetBIOS 데이터그램

핵심: 최신 환경에서는 TCP 445만 열어도 대부분 작동


2. 내가 겪은 문제들 (실전 트러블슈팅)

❌ 문제 1: smbpasswd: command not found

원인: samba 패키지만 설치하고 클라이언트 도구는 안 깔음

해결:

sudo dnf install -y samba samba-common samba-client

 

교훈: Samba는 서버/클라이언트 패키지가 분리되어 있음!


❌ 문제 2: NT_STATUS_LOGON_FAILURE

증상:

smbclient -L //서버IP -U 사용자명
# Password for [SAMBA\사용자명]:
# session setup failed: NT_STATUS_LOGON_FAILURE

원인: Linux 계정 ≠ Samba 계정 (완전 별개!)

 

해결:

# 1. Linux 사용자 생성
useradd smb_user

# 2. Samba 전용 비밀번호 설정 (필수!)
sudo smbpasswd -a smb_user

# 3. 서비스 재시작
sudo systemctl restart smb nmb

교훈: Samba는 자체 비밀번호 DB를 사용함. smbpasswd를 꼭 실행해야 함!


❌ 문제 3: "해당 서버가 존재하지 않습니다" (무한 로딩)

원인: SELinux가 SMB 연결을 차단함

해결:

# 실습용으로 SELinux 끄기
sudo setenforce 0

# 영구 비활성화 (재부팅 후에도 유지)
sudo vi /etc/selinux/config
# SELINUX=disabled 로 변경

교훈: 실무에서는 SELinux를 끄지 말고, 정책을 제대로 설정해야 함!


문제 4: macOS에서 접속 안 됨 (Timeout)

증상:

  • Linux VM끼리는 잘 되는데 맥북에서만 안 됨
  • Finder → Command+K → smb://서버IP 입력해도 타임아웃

원인: VMware Bridge 네트워크 + macOS SMB 조합이 불안정함

해결:

현실적 해결책 없음 😭
→ 실무에서는 NFS 또는 scp/rsync 사용
→ 또는 전용 NAS 장비 이용

 

왜 이런가?

구분 Linux VM 끼리 macOS → Linux VM

네트워크 경로 VMware 내부 직접 연결 Bridge 어댑터 경유
라우팅 단순 복잡 (가상 브리지)
SMB 패킷 직통 중간에 손실/지연
결과 성공 ❌ Timeout

교훈: 학습 환경의 한계를 인정하고, 실무에서는 안정적인 방법 선택


3. 실전 명령어 정리

서버 설정 (핵심 3대장)

# 1. Samba 비밀번호 등록 (제일 중요!)
sudo smbpasswd -a 사용자명

# 2. SELinux 끄기 (실습용)
sudo setenforce 0

# 3. 방화벽 열기
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload

공유 디렉토리 설정

# 공유 폴더 생성
sudo mkdir -p /srv/samba_share

# 권한 설정 (모두 접근 가능)
sudo chown nobody:nobody /srv/samba_share
sudo chmod 0777 /srv/samba_share

 

설정 파일 편집 (/etc/samba/smb.conf):

[samba_share]
path = /srv/samba_share
browsable = yes
writable = yes
valid_users = smb_user

 

서비스 재시작:

sudo systemctl restart smb nmb

테스트 명령어

# 공유 목록 확인
smbclient -L //서버IP -U 사용자명
# → 리스트가 나오면 90% 성공!

# 서비스 상태 확인
systemctl status smb nmb

# 로그 실시간 보기
tail -f /var/log/samba/log.smbd

클라이언트에서 마운트 (Linux → Linux)

# 1. CIFS 도구 설치
sudo dnf install -y cifs-utils

# 2. 마운트 지점 생성
sudo mkdir -p /mnt/samba

# 3. 마운트 실행
sudo mount -t cifs //서버IP/공유이름 /mnt/samba -o username=사용자명,password=비밀번호

# 4. 확인
df -h | grep samba
cd /mnt/samba
ls

 

주의: -o username=xxx,password=yyy 사이에 공백 없음!


마운트 명령어 해부

sudo mount -t cifs //192.168.4.131/share /mnt/samba -o username=guest,password=""

 

부분 의미

mount 연결해라
-t cifs SMB 방식으로
//192.168.4.131/share 서버의 /tmp/share 폴더를 (원본)
/mnt/samba 내 /mnt/samba에 (목적지)
-o username=guest guest 계정으로

 

쉬운 비유:

  서버 (192.168.4.131)
   └─ /tmp/share (창고 개방)
   
  클라이언트
   └─ /mnt/samba (창고로 가는 문)
   
→ /mnt/samba 열면 서버의 /tmp/share 내용이 보임!

문제 해결 순서도

안 될 때는 이 순서대로만 체크:

# 1단계: 네트워크 연결 확인
ping 서버IP

# 2단계: 서비스 작동 확인
systemctl status smb

# 3단계: SELinux 확인
getenforce  # Enforcing이면 문제
sudo setenforce 0

# 4단계: 방화벽 확인
sudo firewall-cmd --list-all

# 5단계: 로그 확인
tail -f /var/log/samba/log.smbd

4. DHCP 서비스 이해하기

DHCP란?

"자동 IP 주소 나눠주는 기계"

  • Dynamic Host Configuration Protocol
  • 네트워크에 연결된 장치에 IP 주소를 자동으로 할당
  • 수동 IP 설정의 고통 해결 (충돌, 관리 복잡도)

DHCP 4단계 과정 (DORA)

1. Discover (클라이언트 → 브로드캐스트)
   "DHCP 서버 있어요?"
   
2. Offer (서버 → 클라이언트)
   "여기 IP 192.168.1.100 어때요?"
   
3. Request (클라이언트 → 서버)
   "그거 주세요!"
   
4. Acknowledge (서버 → 클라이언트)
   "확정! 써도 돼요"

DHCP 포트

포트 방향 용도

UDP 67 서버 수신 DHCP 서버가 듣는 포트
UDP 68 클라이언트 수신 클라이언트가 듣는 포트

 

DHCP 서버 설정

# 1. 설치
sudo dnf install dhcp-server

# 2. 설정 파일 편집
sudo vi /etc/dhcp/dhcpd.conf

 

설정 예시:

# 기본 임대 시간
default-lease-time 600;
max-lease-time 7200;

# DNS 서버
option domain-name-servers 8.8.8.8, 8.8.4.4;

# IP 범위 설정
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.100 192.168.1.200;  # 할당할 IP 범위
    option routers 192.168.1.1;         # 게이트웨이
    option subnet-mask 255.255.255.0;
}
# 3. 서비스 시작
sudo systemctl enable --now dhcpd

# 4. 방화벽 설정
sudo firewall-cmd --permanent --add-port=67/udp
sudo firewall-cmd --reload

DHCP 관리 명령어

# 임대 정보 확인
sudo cat /var/lib/dhcp/dhcpd.leases

# IP 재할당 (클라이언트에서)
nmcli connection down ens160
nmcli connection up ens160

MAC 주소 기반 고정 IP

특정 기기에 항상 같은 IP 주고 싶을 때:

host 회의실_프린터 {
    hardware ethernet 00:1A:2B:3C:4D:5E;
    fixed-address 192.168.1.50;
}

 

Samba

  1. Linux 계정 ≠ Samba 계정 → 반드시 smbpasswd 실행
  2. SELinux가 진짜 주범 → 실습 시 setenforce 0
  3. 방화벽은 기본 → firewall-cmd --add-service=samba
  4. macOS + VMware는 불안정 → 실무에서는 NFS 고려

DHCP

  1. DORA 프로세스 이해 필수
  2. UDP 67/68 방화벽 열기
  3. 임대 시간 개념 숙지
  4. 고정 IP는 MAC 주소로 설정