본문 바로가기

IT

리눅스의 samba 공유를 외부 네트웍에서 사용하기 #3

반응형

 지난 2번째 시간에서는 리눅스에서 Samba 서비스를 설정하는 방법에 대하여 알아보았습니다.


 이번에는 윈도우 7에서 SSH Tunneling 을 이용하여 외부 네트워크에서 Samba 의 파일공유를 사용하는 방법을 알아보겠습니다.


 중간에 하나라도 빼먹으면 정상적으로 작동하지 않으니 잘 살펴보고 따라 하시면 됩니다.


 많이 사용하시는 윈도우 7에서 환경설정을 하겠습니다. (제가 윈도우 8, XP는 없어서 그런겁니다.;;)


 첫번째로 할일은 ssh 에서 tunneling 에 사용할 윈도우 loopback 네트워크 드라이버를 설치하는 것으로 시작합니다.



윈도우의 시작버튼을 누르고 컴퓨터에서 오른쪽버튼을 누른 후 관리를 실행합니다. 컴퓨터 관리라는 창이 하나 뜨면서 장치관리자로 이동합니다.


 위에 표시된 2군데를 순서대로 클릭합니다. 장치관리자를 클릭하면 중앙에 PC의 하드웨어 목록이 나오고, 중앙의 PC명을 눌러야 이후 작업할 메뉴를 선택할 수 있습니다.


메뉴 -> 동작 -> 레거시 하드웨어 추가를 선택합니다. 위 이미지 이전의 이미지에서 PC명을 꼭 선택하라고 한 이유가 이겁니다. PC명을 선택하지 않으면 동작에 위와같은 메뉴가 나오지 않고 다른 메뉴가 나옵니다. PC명을 꼭 클릭하고 진행하세요.


 아래 4장의 이미지와 같이 잘 따라가시면서 클릭하여 설치를 마무리 합니다.






이렇게 Microsoft Loopback Adapter 를 마무리합니다.


 이제 윈도우시작버튼 클릭 -> 제어판 -> 네트워크 및 공유 센터를 선택합니다.


어댑터 설정 변경을 클릭하고 네트워크 연결을 보면 위와 같이 Microsoft Loopback Adapter 가 하나 설치된 것을 볼 수 있습니다. 저는 이름을 ForSambaTunnel 이라고 변경하였습니다. 이건 입맞에 맞게 변경하시거나 뭐 안바꿔도 상관없습니다.


 Microsoft Loopback Adapter 에서 오른쪽버튼 클릭 -> 속성을 클릭합니다.


 위와 같이 Microsoft 네트워크용 파일 및 프린터 공유, Internet Protocol Version 6 (TCP/IPv6) 를 체크 해제합니다. (제거하시면 안됩니다.;;;)


 그리고 Internet Protocol Version 4 (TCP/IPv4) 를 선택하고 속성을 클릭합니다.


 IP 주소를 수정합니다. 자신이 사용할 번호를 적으시면 됩니다. 좀 복잡하니 여기부터는 위와 똑같이 설정하시고 추후 완전히 내용을 복습하시고 자신의 입맛에 맞게 변경하시면 됩니다. 지금은 그대로 갑니다.

 IP주소에 10.0.0.1을 서브넷 마스크는 255.255.255.0 을 입력합니다. 게이트웨이는 비워둡니다. 마찬가지로 하단의 DNS 서버 주소 작성하지 않아도 무방합니다. 저는 그냥 넣었는데 사용할 일이 없습니다.;;


 IP설정이 끝나면 위의 이미지에 고급버튼을 누릅니다.


 WINS 탭으로 이동하여 NetBIOS over TCP/IP 사용 안 함 을 선택하고 확인 버튼을 클릭합니다. 모두 닫습니다.


 기반 설정은 모두 끝났습니다.


 하지만 중요한 것인 하나 남았습니다. 윈도우 7은 445 포트를 개방하지 않아서 터널링 작업이 순조롭게 이루어지지 않습니다. 아래의 프로그램을 다운받아서 실행하고 리부팅하십시요.



localsmb.exe


 위 프로그램은 간단한 레지스트리 정보를 수정하여 윈도우7에서 막아놓은 139, 445 포트를 개방하여 사용할 수 있도록 하는 프로그램입니다.


 추가되는 레지스트리 정보는 다음과 같습니다.


Disable CIFS (Filesharing) and Port 445
 
I needed to disable Port 445 on my Win XP installation to be able to tunnel an SMB fileshare over SSH.
Here is how to disable port 445:

- Open regedit (from the windows command-line)
- Go to "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters"
- Create a "REG_DWORD"-Entry with the name SMBDeviceEnabled


프로그램을 실행하고 체크박스를 체크합니다.


 레지스트리가 변경되어야 하므로 해당프로그램은 관리자 권한으로 실행해야 합니다.


 리붓하고 오셨죠? 자 이제 막바지입니다. 힘내구요~


 ssh 를 이용한 터널링은 PuTTY를 사용해도 되는데 접속한 터미널 화면이 매번뜨고 윈도우 실행마다 자동실행되었으면 하는게 보통이지요.. 궁하면 구한다고 MyEnTunnel 이라는 프로그램을 이용하겠습니다.


 홈페이지 : http://nemesis2.qx.net/pages/MyEnTunnel



 홈페이지를 1/4쯤 스크롤하다보면 다운로드 링크를 제공합니다. 유니코드 버전을 사용하도록 합시다. 받아서 적당한 곳에 압축을 해제합니다. 저는 수동으로 설치하는 프로그램은 (C:\ProgramData) 폴더에 저장한답니다. 이건 알아서 하세요.


 실행파일중에 myentunnel.exe 라는 파일을 실행하셔 설정합니다.


 프로그램을 실행하면 바로 트레이 아이콘으로 들어가버리니까요. 윈도우에서 시계가 있는 곳에 자물쇠 모양의 노란색 아이콘이 뜰겁니다. 아이콘에서 오른쪽버튼 클릭 -> Show를 눌러서 설정창을 열고 아래와 같이 설정을 시작합니다.

  Setting 탭은 접속할 Samba 서버 아이피나 도메인과 SSH 포트, Username, password는 리눅스 서버에 telnet 접속시 사용하는 아이디와 패스워드를 사용하시면 됩니다. 이곳에 Samba 설정시 추가했던 사용자 아이디와 패스워드를 사용하시면 안됩니다!!!

 지금 SSH Server에 내부아이피로 보이는 것은 제가 지금설정하는 환경이 내부 네트워크 상태인데, 외부에서 접속가능한 아이피나 도메인 주소등을 써주시면 됩니다. 대부분 공유기를 사용하실 것으로 사료되니 공유기에서 해당 Samba를 운영하는 서버의 22번 포트가 포트포워딩이나 DMZ 셋팅등으로 정상적으로 연결이 가능한 상태인 것을 확인하셔야 합니다.


 위 설정을 좀 살펴보면

 Connect on Startup : 프로그램이 시작되면 자동 연결을 시작합니다.

 Reconnect on Failure : 연결 실패시 자동으로 재연결합니다.

 Verbose Logging : Status 탭에 자세한 로그를 남깁니다.

 Infinite Retry Attempts : 연결 실패시 무한 재시도합니다.

 Enable Compression : 전송되는 데이터를 압축합니다. 이정도만 체크해주면 됩니다.



터널링의 핵심은 여기입니다. 위에 보이는 2줄을 똑같이 입력합니다.

10.0.0.1:139:127.0.0.1:139

10.0.0.1:445:127.0.0.1:445

 윈도우 파일공유, Samba에서 사용하는 2개의 TCP 아이피 포트에 대한 설정입니다.

 10.0.0.1의 2가지 포트를 SSH를 통하여 로컬의 2개의 포트로 맵핑(?)하여 실제는 Samba서버의 포트를 내PC에서 서비스하는 것처럼 사용하겠다는 의미입니다. 요 설정이 Loopback Adapter를 통하여 이루어집니다.


 localSMB.exe 프로그램으로 설정하지 않았다면, Status탭에서 445 포트를 연결하다가 Permission Deny 로 거부될겁니다. 이러면 정상적으로 사용할 수 없습니다. 위 윈도우 프로그램 꼭! 실행하여 레지스트리 정보를 추가해야 합니다.


 정상적으로 연결이 된 로그를 볼까요?


 중앙에 보이는 Local port 10.0.0.1:139 forwarding to 127.0.0.1:139 와 바로 아래 라인입니다. 정상적으로 잘 연결되었다고 나오네요..


 아! 윈도우 방화벽을 사용하고 있다면, 중간에 방화벽관련 화면이 뜹니다.

MyEnTunnel 프로그램에 같이 들어있던 plink.exe 라는 프로그램이 실제 통신에 관여하는 프로그램입니다. 둘다 체크하시고 액세스 허용으로 해주시면 됩니다.


 이제 윈도우에서 네트워크 드라이브 연결을 해보겠습니다. 탐색기를 하나 실행하시구요.


네트워크 드라이브 연결을 누릅니다.


터널링을 이용하여 네트워크공유에 사용하는 포트를 포워딩한 상태이므로 localhost에 해당하는 127.0.0.1 을 이용하거나 localhost 를 사용하시면 됩니다. 뒤는 2부에서 설정한 공유폴더를 넣어줍니다. 그리고 다른 자격 증명을 사용하여 연결을 체크하고 마침을 누릅니다.



Samba 설정에서 추가한 사용자 아이디와 패스워드를 입력합니다. 리눅스 아이디와 패스워드를 입력하면 안됩니다. 자격증명을 기억하도록 하면 윈도우가 재시작하면서 MyEnTunnel 프로그램이 터널링을 수행하고, 윈도우에서 네트워크 드라이브로 연결이 됩니다. (하지만 최초 부팅시 네트워크 드라이브를 한번 클릭하여 리플레쉬해주어야 합니다. 자동 갱신되지 않더군요.;;)


 이렇게 하여 3부에 걸친 Samba 서버를 외부 네트워크에서 접속하는 방법을 설명해보았습니다. 3부가 너무 길에서 지루했을 듯 합니다.


 아무쪼록 시행착오를 최대한 없도록 자세하게 설명하였습니다. ^^



2013/06/12 - [OS/Windows] - 리눅스의 samba 공유를 외부 네트웍에서 사용하기 #1


2013/11/13 - [OS/Linux] - 리눅스의 samba 공유를 외부 네트웍에서 사용하기 #2



끝.

반응형