Samba over SSH Howto 2008 년 1 월 4 일초판작성 만든이 : 김현식 (E-mail : wbstory@paran.com) 인하대학교지능형전자상거래연구실 서문 이문서는윈도우의 [ 네트워크드라이브 ] 를라우터너머에있는서버 ( 리눅스삼바서버 ) 에연결하는방법에대한문서입니다. 윈도우의 [ 네트워크드라이브 ] 는 NetBIOS 프로토콜을사용하는데, 이프로토콜은기본적으로라우팅이불가능하여같은네트워크세그먼트 ( 한허브에물린기기, 브로드캐스트패킷이도달하는범위 ) 에있는컴퓨터사이만연결이가능합니다. 이문서에서는 putty 를사용하여일종의 VPN 을구축함으로써라우터너머의삼바서버에접근하는방법에대하여설명합니다. 리눅스서버에는이미삼바서버가설치되어기본적인설정은끝난상태임을가정합니다. 부록에서는리눅스에서윈도우네트워크드라이브에연결하는방법을서술합니다. 리눅스의한드라이브를윈도우네트워크드라이브에연결 ( 마운트 ) 하고, 이드라이브를리눅스삼바서버의공유디렉토리로설정하면, 방화벽너머의윈도우네트워크드라이브에연결할수있습니다. Local loopback device 설치 ( 이문서는 Windows Vista 에서의설정방법을서술하지만, XP 에서도거의같은방법으로설치가능합니다 )
[ 시작 ] -> [ 제어판 ] -> [ 새하드웨어추가 ] [ 다음 ] 을클릭합니다. 목록에서직접선택한하드웨어설치 ( 고급 ) 에체크하고 [ 다음 ] 클릭.
네트워크어댑터선택, [ 다음 ] 클릭. Microsoft -> Misrosoft Loopback Adapter 선택후 [ 다음 ] 클릭.
[ 다음 ] 클릭. [ 다음 ] 클릭.
[ 마침 ] 클릭. [ 제어판 ] ->[ 네트워크및공유센터 ] -> [ 네트워크연결 ] 열기. 장치종류에 Microsoft Loopback Adapter 로표시된장치를마우스우클릭후 [ 속성 ] 클릭합니다. (lo 라는장치도 Loopback Adapter 인데, 이것은제가현재파일서버접속용으로사용하는어댑터입니다. 여러분컴퓨터에는 Loopback Adapter 가한개만있을것입니다 )
Microsoft Networks 용클라이언트, 인터넷프로토콜버전 4(TCP/IPv4) 를제외한모든항목체크해제후인터넷프로토콜버전 4(TCP/IPv4) 에서더블클릭합니다. (XP 에서도똑같이설정합니다. 특히 네트워크파일및프린터공유, NetBIOS 프로토콜, IPv6 지원 항목이활성화되어있으면반드시꺼주세요.)
IP 주소는 10.0.0.1, 서브넷마스크는 255.255.255.0, 똑같이입력합니다. 이주소는 A 클래스사설네트워크대역의주소로, 만약여러분의내부망이이미 A 클래스를사용하고있으면주소충돌의위험이있기때문에 B 클래스사설대역인 192.168.0.1 과 255.255.255.0 을사용할수있습니다. 일반적으로여러분의인터넷환경은공인 IP 이거나 B 클래스사설망 ( 공유기사용시 ) 환경일것입니다. [ 고급 ] 클릭 WINS 탭클릭 [NetBIOS over TCP/IP 사용안함 ] 을선택합니다.
Tip : 여러개의서버에접속하는방법 아까전에 [ 고급 ] 눌렀을때나오는화면입니다. [IP 설정 ] 탭인데, [ 추가 ] 를클릭하면여러개의 IP 를할당할수있습니다. 이것은 대체 IP 구성 으로, 하나의어댑터에여러개의 IP 주소를부여하는기능입니다. 이기능은여러서버에접속할때사용합니다. [ 확인 ] 을누르면다중게이트웨이설정경고가뜰텐데, 무시하고 [ 예 ] 를누릅니다. 인터페이스메트릭은 [ 자동메트릭 ] 그대로두셔도무방합니다.
Putty 설치및설정 Putty Download 아래사이트에서자신의 OS 에맞는 putty 를다운로드받습니다. http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html putty 는독립형프로그램으로, 설치프로그램이존재하지않습니다. 저는바탕화면에실행파일을두는것을추천합니다. Putty 실행화면입니다. 아마여러분은 Saved Sessions 에 Default Settings 만보일겁니다. 이제설정을시작하겠습니다. Tunnel Setting 이게가장중요한터널세팅입니다. 아래순서대로해주세요. * SSH 옆의 [+] 클릭하고, Tunnels 선택합니다. * Local ports accept connections from other hosts 에체크합니다. * Source port 에 10.0.0.1:139 입력 * Destination 에 127.0.0.1:139 입력 * Add 클릭 * Source port 에 10.0.0.1:445 입력
* Destination 에 127.0.0.1:445 입력 * Add 클릭 다하셨으면이렇게됩니다. 일단여기까지하셨으면리눅스삼바서버로연결할준비는다된것입니다. 이세팅을저장하도록하겠습니다.
Host Name(or IP address) 에주소를입력합니다. IP 주소를직접입력해도됩니다. Saved Sesions 에적당한이름을입력합니다. 저는호스트이름을사용하는것을좋아합니다. Save 를누릅니다.
그러면이렇게세션이추가됩니다. 세션이름을더블클릭합니다. 보안상계정정보는지웠습니다. 어쨌든이렇게서버에로그인합니다. 꼭로그인까지는해놓아야합니다. 그리고이상태로이창은그냥최소화시켜놓습니다. 절대로창을닫거나로그아웃시키면안됩니다!
Misc. Setting(Terminal Setting) 이세팅은 UTF-8 기반의리눅스서버 ( 요즘대부분의리눅스서버기본세팅입니다 ) 에서한글을사용하기위한세팅입니다. 네트워크드라이브연결과는관계가없고, putty 에서직접명령어를입력할때에만의미가있습니다. 스크린샷만첨부합니다. Terminal -> Keyboard -> The function keys and keypad : Linux 선택 Window -> Appearance -> Font settings 에서폰트를 굴림체 로바꿈.
Window -> Translation -> Character set translation on received data -> Received data assumed to be in which character set 을 UTF-8 로변경.
SSH -> Protocol options -> Preferred SSH protocol version 을 2 only 로변경. SSH version 1 은프로토콜버그가있습니다. 이버그를이용해 root 권한을획득하는핵이있으므로반드시 version 2 를사용해야합니다. 단, 서버에서 SSH version 2 를지원하지않는경우는예외입니다.( 이경우에는서버관리자에게 version 2 를설치하라고말씀해주시기바랍니다.) 네트워크드라이브연결 윈도우탐색기를엽니다. ( 윈도우키 + E) [ 네트워크드라이브연결 ] 을클릭합니다. (XP 에서는 [ 도구 ] -> [ 네트워크드라이브연결 ])
드라이브는원하는것을선택하시되, 폴더는반드시 \\10.0.0.1\ 로시작합니다. 이것은맨처음에설정했던 Loopback device 주소입니다. samba_name 자리에는삼바서버의공유이름을입력합니다. 이창이나오면사용자이름 (samba ID) 과암호를입력합니다. 그러면지정한드라이브로접속이됩니다. 접속이안될때해결방법 (Trouble shooting): 1. putty 가접속중인지확인하세요. 2. Loopback Adapter 의설정을점검하세요. 특히 [ 네트워크파일및프린터공유 ] 항목과 [Ipv6 지원 ] 은체크해제되어있어야합니다.
3. 삼바서버의작동상태를확인하세요. (ps aux grep smbd) 4. 윈도우방화벽을점검하세요. Loopback Adapter 에대해 22, 139, 445 번, 인터넷연결어댑터에대해 22 번포트는방화벽을통과시켜야합니다. 리눅스서버쪽에서는 22 번포트만열려있으면됩니다. 저는보안상의이유로리눅스서버의외부로통하는 139, 445 번포트 (eth 로시작하는어댑터의 139, 445 포트 ) 를막아주는것을권장합니다. 해당포트가열려있으면 SSH 터널링을거치지않고직접접속이가능해져해킹에취약해지기때문입니다. 부록 : 리눅스에서윈도우공유폴더마운트하기 이방법은 SSH 터널을사용하는것이아니기때문에라우터너머의윈도우서버에는접속할수없습니다. 이부록은방화벽너머의윈도우서버에있는공유폴더에접근하기위한방법을설명하고있습니다. 이문서에서는윈도우공유폴더설정에대해서는다루지않습니다. 윈도우서버에서의공유폴더설정에대해서는해당문서를참조해주시기바랍니다. 왜두번에걸쳐접속합니까? 윈도우용 SSH 서버가상용이어서추가비용이발생하기때문에부득이하게리눅스서버를통해연결하는것입니다. 이방법을사용하기위해서는리눅스서버의 root 권한이필요합니다. 윈도우네트워크드라이브를리눅스서버에마운트 마운트를위해서는 samba server 뿐만아니라 samba client 패키지도설치되어있어야합니다. 패키지설치방법은해당 OS 에의존적이므로 OS 에서제공하는문서를참고해주시기바랍니다. 마운트명령어는다음과같은형식을가집니다 : mount -t smbfs -o username=[user_name],password=[password],rw,dmask=0777 //[ 윈도우서버의도메인네임또는 IP]/[ 공유이름 ] [ 마운트디렉토리 ] 예제 : mount -t smbfs -o username=window_owner,password=1234,rw,dmask=0777 //123.45.67.89/share /h ome/windowserver1
제대로마운트가되었는지는 mount 명령으로확인할수있습니다. # mount /dev/md1 on / type ext3 (rw) /dev/proc on /proc type proc (rw) /dev/sys on /sys type sysfs (rw) /dev/devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/md0 on /boot type ext2 (rw) /dev/shm on /dev/shm type tmpfs (rw) /dev/md4 on /home type ext3 (rw) /dev/md2 on /usr type ext3 (rw) /dev/md3 on /var type ext3 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nfsd on /proc/fs/nfsd type nfsd (rw) //123.45.67.89/share on /home/windowserver1 type smbfs (0) 삼바공유설정 /etc/samba/smb.conf 파일의마지막에다음항목을추가합니다. [ 공유이름 ] comment = 공유설명 path = 공유할디렉토리 writeable = yes browseable = yes guest ok = yes 예제 : [windowserver1] comment = Window Server 1 path = /home/windowserver1 writeable = yes browseable = yes guest ok = yes
삼바사용자추가다음명령을차례대로입력합니다 : adduser [User_name] passwd [User_name] smbpasswd -a [User_name] 서버계정및삼바계정을추가합니다. 두개의계정을추가하는이유는 SSH 접속에는서버계정을, 네트워크드라이브 ( 삼바서버 ) 접속에는삼바계정을사용하기때문입니다. 서버계정을삼바계정과동기화시키면삼바계정을굳이추가하지않아도자동으로추가되는데, 이방법은해당매뉴얼을참고해주시기바랍니다. Samba 데몬재시작 이렇게설정하고 samba 데몬을재시작합니다. # /etc/init.d/samba restart Tip : 삼바의속도가느릴경우 smb.conf 파일의 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 를 socket options = TCP_NODELAY 로바꾸어줍니다.