윈도우 공유(cifs/smbfs)를 인터넷상에서 하자. (139번포트 넘기)

vamf12의 이미지

윈도우의 파일 공유는 netbios기반으로 제작되었지만, cifs가 되면서 tcp/ip기반으로 변경 되었습니다. 다시 말해 인터넷 상에서 자유롭게 사용가능합니다. 단 대한민국을 제외하고 말입니다. cifs가 보안에 취약하고, 웜의 전파 경로로 사용되기 때문에, 인터넷 업체들에서 cifs가 사용하는 139번 포트를 틀어 막아 버렸습니다.

더욱 짜증나는 사실은 윈도우의 파일 공유는 포트를 변경 할 수 없고, 변경된 포트로 접근할 수도 없습니다. (하여튼 이래서 MS는 욕먹는 거겠죠.. -_-)

지금까지 cifs사용의 대안은 3가지 - sshfs, ftpfs, cifs over ssh 입니다. ssh류들은 암호화 오버헤드 때문에 너무 느려서 짜증나고, ftpfs는 억지로 구현된거라서 짜증납니다. 그래서 4번째 대안을 제시합니다. rinetd를 이용해서 포트를 리다이렉트 시켜서 사용합니다.

0. 사용되는 프로그램
a. rinetd - http://www.boutell.com/rinetd
원래 nix용인 rinetd를 윈도우용으로 맹글어준 bountell에 감사의 뜻을 표합시다.
b. hiddenstart - http://www.ntwind.com/software/utilities/hstart.html
윈도우에서 응용 프로그램을 시작할때 여러가지 설정을 해주는 유틸입니다.
rinetd의 콘솔창을 없애는 용도로 사용합니다.

1. rinetd 간단 사용법
rinetd는 특정 포트를 원하는 곳으로 재지정해줍니다. 실행시에 설정파일을 지정해서 사용합니다.

rinted -c rinted.conf

rinted.conf은 직접 만들어 줘야 합니다. (파일 명은 상관 없습니다. 설정.txt같은걸 써도 됩니다.)
출발지IP 출발지Port 목적지IP 목적지Port
0.0.0.0 5139 127.0.0.1 139

이렇게 설정하면 설정된 컴퓨터의 5139번 포트로의 접속 내부 139번으로 재지정됩니다. IP를 지정할때 IP를 지정할수도 있고, 0.0.0.0으로 설정해서 모든 IP로 할수도 있고, 도메인 네임으로도 할 수 있습니다.

2. 파일을 공유할 서버쪽에서 139번이 아닌 다른 포트에서 접속을 대기 하기
간단합니다. rinetd를 이용해서 서버의 다른 임의의 포트를 139번으로 리다이렉트 해주면 됩니다.

3. 서버에 접근할 클라이언트 쪽에서 139번이 아닌 다른 포트로 접속 하기
이건 좀 복잡한 방법으로 합니다. (기존에 사용되던 인터넷 공유를 살리기 위해서 입니다.)
결론적으로 로컬 루프백 139번 포트를 rinetd를 이용해서 서버의 임의의 포트로 연결 합니다.

제어판 -> 새 하드웨어 추가 -> 내트워크 어댑터 -> 마이크로 소프트 루프백 어댑터

이렇게 추가하면 네트워크 연결이 하나 추가됩니다. 제어판 -> 네트워크 연결 에서 추가된 연결의 ip를 지정해줍니다. (IP는 아무 상관 없습니다. 전 10.10.0.1을 즐겨 씁니다.) 속성을 열어서 파일공유 기능의 체크 표시를 없앱니다. tcp/ip설정으로 들어가서 WINS서버 -> TCP/IP에서 NetBios사용 않함으로 합니다.

서비스팩2에서는 로컬 루프백 패치를 해줘야합니다.
http://www.microsoft.com/downloads/details.aspx?FamilyId=17D997D2-5034-4BBB-B74D-AD8430A1F7C8&displaylang=ko&displaylang=en

이제 rinetd에서 루프백의 139번을 서버로 리다이렉트 시켜준뒤 루프백으로 접속하면 됩니다.

PS. 쓰다보니 귀찮아 지기도 하고... 사실 KLDP 분들에게 루프백, rinetd 설명따위는 필요 없다고 보고 대충 넘겼습니다. -_-

Forums: 
Rina의 이미지

Direct hosting of SMB over TCP/IP (445) 를 이용하면 사용가능하지 않나요?
내부 네트웍에서는 파일 공유시 ip 사용하면 NetBT 없이 공유 가능하던데... ^^

흐... 445 포트도 막나.. 안 되는군요. ^^
----------------------------------------------------------------------------------------------------
Rina's Blog
http://rinapc.com

----------------------------------------------------------------------------------------------------
Rina's Blog
http://rinapc.com

vamf12의 이미지

윈도우에서 기본적으로 열리는 포트는 싸그리 막혀 있습니다.. -_-

gusgh의 이미지

친구는 139번이 열려 있으나 저는 막혔있는데 이방법 대로 하면 되는지 궁금 하며,이부분은에서 (출발지IP 출발지Port 목적지IP 목적지Port) 출발지는 제 ip 사용하는건 알겠는데 목적지ip에 루프백 주소로 되어있는데 친구ip를 써야 하는지 잘 모르겠습니다 그리구 rinetd 명령어를 도스에 실행 하면 커서만 깜박거리는게 실행이 잘된는건지두...알려주세요
그리구 (rinetd에서 루프백의 139번을 서버로 리다이렉트 시켜준뒤 루프백으로 접속)이부분 설정은 정확히 어떡해 하는지 잘모르겠습니다 지금 2시간쨰 삽질중인데...너무 어렵습니다
꼭 답변 부탁드립니다...즐거운 하루 되세요^^
p.s 메일로 알려 주시면 더욱 고맙겠습니다
c173136504@empal.com

즐거운 하루 되세요

mapoo의 이미지

ssh 터널링으로 삼바를 연결해서 쓰면 느린 속도와 NAT 장비 밑단의 모든 삼바서버를 일일이 ssh 터널을 맺고 연결 해야되는 불편함 때문에
다이렉트로 원격지 삼바서버를 연결 방법을 알아보던 중 이글을 보구 희망을 가졌으나.. 알려주신 방법대로 해보았지만 잘 되질 않네요.

연결구성 :
윈도우xp_sp2 클라이언트(192.168.0.79) ----> 공유기 ----> 인터넷 ----> 공유기(wanip:5139,5445 -> 192.168.0.252:139,445 포트리다이렉션) ----> 리눅스삼바서버(192.168.0.252)

윈도우 클라이언트에서 원격지에 있는 리눅스삼바 서버로 연결을 하려고 하는데 알려주신대로 해도 잘 돼질 않네요..
리눅스서버 앞단에는 공유기가 있고 공유기에서 5139(외부) -> 192.168.0.252:139(내부)로 리다이렉션 시켜놓은 상태임.
.................................................................5445(외부) -> 192.168.0.252:445(내부)

isp에서 139, 445포트를 안막고, 윈도우 클라이언트가 기본적으로 cifs / smbfs 를 연결 시 포트를 변경해서 연결할 수만 있다면 고민 할 필요도 없을텐데... 암튼,
다른 포트로 연결이 안되니깐 알려주신대로 rinetd를 사용하게 됐는데, 생각처럼 쉽게 안되네요.
제가 하려고 하는것은 윈도우 클라이언트에서만 아웃바운드 139포트만 5139포트로 변경되서 원격지의 삼바서버연결을 하면됩니다.
서버측에선 iptables를 이용하거나 네트워크 윗단의 NAT장비(공유기)에서 포트리다이렉트를 해버리면 간단하게 해결되니 구지 rinetd를 사용 안해도 되지만
문제는 포트변경이 안되는 윈도우클라이언트...
생각하기엔 rinetd가 nat 기능이 있어서 루프백 아답터가 없어도 의도대로 될 수 있을거 같은데 되질 않네요.

윈도우 클라이언트에서 rinetd.conf 파일은 아래와 같이 설정 했으며
0.0.0.0 5139 127.0.0.1 139
또는 0.0.0.0 5139 192.168.0.79
0.0.0.0 5445 127.0.0.1 445
또는 0.0.0.0 5445 192.168.0.79

서버쪽에선 공유기에서 포트리다이렉션 했으므로 별도로 건든게 없음.

위와 같이 설정하고 \\삼바서버wanip 하고 윈도클라이언트에서 netstat를 보면 서버측wainp로 5139포트, 5445가 아닌 139, 445포트로만 연결 시도 함

루프백 아답터를 설치해서 rinetd.conf를 어떻게 설정을 해야되며, 제 환경에선 최종적으로 클라이언트에서 시작 -> 실행 -> \\리눅스삼버서wanip 로 연결을 해야되나요?
그리구 rinetd가 아웃바운드 패킷에 대해서도 포트리다이렉션이 가능한지 가능하다면 루프백 아답터가 꼭 필요한지..
위의 글에서 1, 2, 3중 3번이 클라이언트쪽 설정 방법인거 같으나 설명이 좀 자세하지 못해서 원하는게 구현이 안되는군요.
이글을 보시면 좀 자세히 설명 좀 부탁드리겠습니다.

혹시 이 문제를 다른방법으로라도 해결 하실줄 아시는 분께서 답글을 남겨주시면 감사하겠습니다. ^^

bushi의 이미지

글 내용으로 보면 루프백 장치로 접속하면 될 것 같은데요.
\\127.0.0.1 처럼 말입니다.

lo(139) -> (rinetd) -> eth -> ... -> eth(5139)

OTL

mapoo의 이미지

그렇게 하면, 윈도우xp_sp2 클라이언트측 공유 폴더가 열립니다. -,,-

pinebud의 이미지

혹시 설정에서 클라이언트쪽 포트 포워딩 방향이 반대로 된 것 아닌가요?
또 loopback 장치 주소는 192.168.xxx나 10xx같이 private IP 주소대로 해야할 것 같습니다.

그런데 공유기의 포트 포워딩이 내부->외부도 동작할까요?
예를 들면
외부:5445 -> 내부:139 로 포워딩을 했을때
외부:5445에서 접속 시도한 것은 내부:139로 포워딩이 되겠지만
내부에서 외부:139로 접속 시도를 하면 외부:5445로 포워딩이 될까요?
그런 설정이 따로 있을까요?
제 생각에는 안될 것 같은데 헷갈리네요.

A rose is a rose is a rose..

junilove의 이미지

저는 서버쪽 공유기에는 DMZ설정으로 해서 공인IP를 부여하고, 그 서버에 VPN서버를 구축해서, 클라이언트단에서 VPN연결을 통해 사설망에 연결한후에 공유폴더를 사용하도록 했습니다. 둘다 공유기를 사용하고 NAT된 사설IP를 사용중이였으며 윈도우XP Pro환경입니다. 별도 프로그램 설치가 필요없어서 편하긴 합니다. 단 문제는 설정이 문제인지, 공유기 제한상의 문제인지 동시접속이 1대만 된다는 것 뿐이네요.(937 에러코드) 공유기는 애니게이트 400A 입니다.

pinebud의 이미지

클라이언트 로컬 루프백 + 서버 공유기 포트 포워딩을 사용해도 되겠네요. 해봐야겠습니다. 얼래.. 위에 시도하신 분이 있군요..

A rose is a rose is a rose..

웃는 남자의 이미지

저는 WAN 상에서 ssh tunneling (Samba over SSH) 으로 CIFS 를 쓰고 있는데요.
Windows 클라이언트에서 samba/cifs over ssh 를 사용할 경우 한가지 문제점이 발생합니다.

139번 포트를 터널링해서 포워딩시켜버리면 모든 outbound cifs 프로토콜이 터널링된 곳으로만
나가버려서 로컬 서브네트워크상의 윈도우 공유폴더에는 접속하지 못하게 됩니다.

즉, 동시에 로컬네트워크상의 윈도우공유폴더와 cifs over ssh 에 접속이 안됩니다.

그렇지만 이런 문제를 해결하기위해 윈도우 클라이언트에서 cifs over ssh 를 위한 별도의 Loopback network adapter 를 추가해주는 방법이 있습니다.

자세한 내용은 아래 링크를 보십시요.

Sharing (tunneling) Samba/CIFS/SMB file systems over SSH

http://www.blisstonia.com/eolson/notes/smboverssh.php

----------------------------------------
Nothing left after Nirvana.

----------------------------------------
Nothing left after Nirvana.

mapoo의 이미지

100Mbps <---> 100Mbps 환경에서
ssh 터널링과 VPN 터널링 모두 속도 저하가 있어서 samba 다이렉트 연결이 아무래도 속도 면에서 잇점이 있죠.

윈도우xp 클라이언트 :
루프백 아답터 설치, 설정 후
rinetd를 이용해 아웃바운드 포트리다이렉션
rinetd.conf :
10.0.0.1 139 삼바서버IP또는Domain 5139

리눅스서버 :
smb.conf, iptables, hosts.allow 설정에 윈도우xp 클라이언트측 wan ip 허용
상단의 NAT(공유기) 장비에서 5139 --> 139로 포트리다이렉션, 또는 환경에 따라 리눅스서버에서 iptables나 rinetd을 이용한 포트리다이렉션

역시 속도가 잘 나오네요. 터널링으로 연결하면 HD급의 동영상은 실시간으로 보기 힘들었는데 다이렉트로 연결하자 끊기지 않고 잘 돌아갑니다.
터널링 기법은 속도가 잘 안나오고 그리고 VPN의 경우 기본적으로 서버측 로컬 환경이 모두 보이기 때문에 경우에 따라 위 rinetd 방법이 나을 수 있습니다.
물론 터널링에서 오는 잇점인 패킷 암호화는 기대할 수 없지만 속도가 우선이라면 해볼 만한 방법이 되겠죠.

vamf12의 이미지

너무 대충 적었군요... 안그래도 새로 블로그에 올릴 예정입니다.

여하튼 위의 설정에서 루프백 장치의 cifs를 꺼주어야 합니다. 윈도우가 점유해버리면 rinetd가 포트를 사용할 수 없습니다.
윈도우가 점유한 상태에서는 루프백 장치로 접근하면 현재 컴퓨터의 공유폴더가 나옵니다.

댓글 첨부 파일: 
첨부파일 크기
Image icon cifswithrinetd.PNG14.45 KB
moonhyunjin의 이미지

Client가 XP SP3라서 패치는 하지 않았습니다.

서버는 공유기 뒤에 있어서 공유기에서 1139(임의 포트 번호) -> 139로 해줬습니다.

loopback으로 접속하는게 포인트네요. 좋은 글 감사합니다~

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

moonhyunjin의 이미지

장치 관리자 -> 동작(A) -> 레거시 하드웨어 추가(A)

아.. 윈도우가 제일 어려워요~ㅎㅎ

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

moonhyunjin의 이미지

제가 생각에는 x64라서 rinetd이 동작하지 않는 것으로 보입니다.

해결책 아시는 분 알려주세요~

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

shame2의 이미지

걍 하마치쓰면 안되나여 ㅡㅡ

프비 매니아~

moonhyunjin의 이미지

이 방법은 서버가 공유기 뒤에 있다면 서버에는 설정해 줄 것이 없거든요.

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

moonhyunjin의 이미지

클라이언트가 windows 7일 때, windows 7의 139번 포트에 접속은 되지만 열리지는 않네요.

혹시 방법 아시는 분?

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

ellil의 이미지

445번 포트 때문 아닐까요?

rinetd를 쓰는 경우는 아니지만 (ssh터널을 씁니다) W7로 바꾸고 나서 똑같이 세팅했음에도 동작을 하지 않아서 좀 들여다 봤습니다.

0.0.0.0:445를 어딘가에서 계속 열어놓고 있어서 192.168.42.1:445를 putty에서 열지를 못하는 것 같습니다. rinetd를 이용하는 경우라면 rinetd에서 192.168.42.1:445를 열지 못하는 경우로 봐야겠죠.

(192.168.42.1은 새로 추가한 로컬 루프백 어댑터의 IP 입니다.)

0.0.0.0:445를 잡고 있는 놈이 누군지를 찾아서 내리면 될 것 같습니다.

Windows의 SMB 버전이 2.0으로 올라가면서 생긴 변화인건지 어쩐건지는 정확히는 더 찾아봐야 알 것 같아요.

moonhyunjin의 이미지

PID 4가 잡고 있습니다.

이거 종료하면 큰일나겠죠? (솔직히 종료 시키는 방법도 모르겠습니다. 'Windows 작업 관리자'에도 안 보입니다)

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

<- 이거면 안 되는 게 없어~
정품 소프트웨어 사용 캠패인

ellil의 이미지

http://forums.techarena.in/networking-security/1255095.htm

445번 포트를 누가 잡고 있는 이유 & 닫는 방법인것 같습니다.
어차피 랩톱이 SMB/CIFS 서버로 동작할 일은 없을테니; 한번 시도해봐야 될 듯 싶어요

hj04jh의 이미지

간단하게 네트워크 드라이버 건드려서 포트포워딩 해주면 끝납니다.

익명 사용자의 이미지

설명 좀 부탁드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.