WSL2에서 삼바(Samba) 서버 사용하기

WSL2에서 삼바(Samba) 서버를 구축하고 고정 IP로 삼바를 이용하는 방법을 정리해 본다.

동기

현재 WSL에서는 탐색기에서 배포판 내의 파일이나 디렉토리를 선택한 후에 마우스 우 클릭 시에, 간혹 탐색기 팝업이 상당히 오래 있다가 뜨는 문제점이 있는데 😢, 이에 대한 대응책으로 삼바(Samba)를 이용할 수 있다.

그런데 삼바를 이용하는 방식에는 한 가지 문제점이 있는데, 그것은 WSL2 VM이 재시작할 때마다 WSL2의 IP 주소가 바뀐다는 것이다. 따라서 WSL2 삼바 서버 주소를 고정시킬 수 없는 불편함이 있다.
이 문제를 구글링 해보니, 포트 포워딩을 이용하는 방법으로 회피할 수 있었고, 이번 글에서는 이 방법을 사용하여 삼바 서버를 설치해 본다.

삼바 서버 설치

  1. WSL2에서 아래와 같이 삼바 서버를 설치한다.
    $ sudo apt install samba
    
  2. /etc/samba/smb.conf 파일에 아래 예와 같이 사용자를 추가한다. (아래에서 user_name 부분을 실제 사용자 이름으로 대체하면 됨)
    [user_name]
        comment = user_name home directory
        path = /home/user_name
        writeable = yes
        browseable = yes
        valid users = user_name
        create mask = 644
        directory mask = 755
    
  3. 아래와 같이 삼바 사용자를 추가하고 삼바 접속 암호를 설정한다.
    $ sudo smbpasswd -a $USER
    
  4. 아래와 같이 삼바 서버를 재시작 시킨다.
    $ sudo service smbd restart
    

IP 설정 방법

  1. WSL2에서 아래 예와 같이 실행한다. (아래 예에서는 eth0:1 인터페이스에 192.168.10.100 IP 사용)
    $ sudo ip addr add 192.168.10.100/24 broadcast 192.168.10.255 dev eth0 label eth0:1
    

    결과로 ifconfig 명령으로 확인해 보면 아래와 같이 eth0:1 인터페이스가 192.168.10.100 주소로 추가되었음을 확인할 수 있다.

    $ ifconfig eth0:1
    eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         inet 192.168.10.100  netmask 255.255.255.0  broadcast 192.168.10.255
         ether 00:15:5d:8f:c4:59  txqueuelen 1000  (Ethernet)
    
  2. Windows 관리자 권한의 콘솔에서 아래와 같이 실행한다. (아래 예에서는 192.168.10.50 사용)
    C:\>netsh interface ip add address "vEthernet (WSL)" 192.168.10.50 255.255.255.0
    

    결과로 ipconfig 명령으로 확인시 아래와 같이 192.168.10.50가 추가되었음을 확인할 수 있다.

    이더넷 어댑터 vEthernet (WSL):
    
     연결별 DNS 접미사. . . . :
     링크-로컬 IPv6 주소 . . . . : fe80::5015:a7fb:3b72:f483%46
     IPv4 주소 . . . . . . . . . : 172.21.112.1
     서브넷 마스크 . . . . . . . : 255.255.240.0
     IPv4 주소 . . . . . . . . . : 192.168.10.50
     서브넷 마스크 . . . . . . . : 255.255.255.0
     기본 게이트웨이 . . . . . . :
    

Windows 작업 스케줄러에 추가

  1. Windows 부팅시마다 자동으로 IP 설정이 되게 하려면 아래 예와 같이 배치 파일을 작성하여 (예로 D:\wsl_samba.bat 파일로 저장) 이용하는 것이 편하다.
    wsl -u root service smbd restart
    wsl -u root ip addr add 192.168.10.100/24 broadcast 192.168.10.255 dev eth0 label eth0:1
    netsh interface ip add address "vEthernet (WSL)" 192.168.10.50 255.255.255.0
    

    이후, 이 배치 파일을 작업 스케줄러에 추가하면 된다. (단, 위 배치 파일은 관리자 권한으로 실행되어야 하므로, 보안 옵션에서 “가장 높은 수준의 권한으로 실행” 란을 체크해야 함)
    커맨드 방식으로는 콘솔에서 아래 예와 같이 실행하면 된다.

    C:\>schtasks /Create /TN "WSL IP" /SC ONLOGON /RL HIGHEST /TR "'D:\wsl_samba.bat'"
    
  2. 물론 WSL2를 shutdown 시켰다가 다시 start 시킨 경우에는 WSL2에서 다시 아래와 같이 실행해 주어야 한다.
    $ sudo ip addr add 192.168.10.100/24 broadcast 192.168.10.255 dev eth0 label eth0:1
    $ sudo service smbd restart
    

접속 테스트

이제 Windows에서 \\192.168.10.100\user_name 주소와 같이 WSL2 삼바에 접속할 수 있다. (위에서 IP를 고정시킨 덕분에 92.168.10.100와 같은 고정 주소를 사용할 수 있음)
또는 Windows 콘솔에서 아래 형태로 실행해도 된다. (아래에서 삼바경로\\192.168.10.100\user_name 형태로 하면 됨)

C:\>net use 드라이브명: 삼바경로 /user:{USERID} {PASSWD}

이후 삼바 드라이브의 연결을 끊을 때는 아래 명령으로 할 수 있다.

C:\>net use 드라이브명: /delete

맺음말

WSL을 사용하는 경우에는 탐색기에서 WSL 배포판의 파일이나 디렉토리의 마우스 우 클릭 시 속도가 아주 느린 경우가 있었는데, 위와 같이 삼바를 이용하니 이 문제를 회피할 수 있었다. 😅

카테고리:

업데이트: