윈도우의 파일 공유는 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-4...
이제 rinetd에서 루프백의 139번을 서버로 리다이렉트 시켜준뒤 루프백으로 접속하면 됩니다.
PS. 쓰다보니 귀찮아 지기도 하고... 사실 KLDP 분들에게 루프백, rinetd 설명따위는 필요 없다고 보고 대충 넘겼습니다. -_-
1. 공유기의 포트포워드 설정에서 외부 1399포트를 내부의 139포트로 mapping
2. 접속해야 하는 client pc에서 rinted를 설치하고 c:\etc\rinetd.conf 파일은 0.0.0.0 139 서버IP 1399 로 설정
3. microsoft loopback adapter 설치하고 ip는 10.10.0.1로 설정
4. 네트워크 드라이브 설정을 위해 탐색기에 \\10.10.0.1를 입력하면 해당 공유 폴더가 보임