성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>윈도우 8.1에서 방화벽과 함께 FTP 서버 여는 (하지만, 권장하지 않는) 방법</h1> <p> 지난 글에서 방화벽과 함께 FTP 서비스를 사용하는 방법을 살펴보았는데요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 윈도우 8.1에서 방화벽과 함께 FTP 서버 여는 방법 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/2870'>http://www.sysnet.pe.kr/2/0/2870</a> </pre> <br /> 그런데, 이와 관련해서 검색해 보면 다른 방식으로 설명하는 글이 종종 눈에 띕니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > How to Allow FTP Traffic Through Windows 8, 8.1 and Windows 7 Firewall ; <a target='tab' href='http://www.sysprobs.com/how-to-allow-ftp-traffic-through-windows-8-8-1-windows-7-firewall'>http://www.sysprobs.com/how-to-allow-ftp-traffic-through-windows-8-8-1-windows-7-firewall</a> </pre> <br /> 위의 글에 설명된 방법을 직접 명령행으로 구성해 보면 이렇게 되는데요. (Passive 모드에서는 20번 포트가 필요없으므로 21번만 설정했습니다.)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > netsh advfirewall firewall add rule name="FTP Service" action=allow localport=21 protocol=TCP dir=in </pre> <br /> 이 명령어를 '관리자 권한으로 실행한 cmd.exe'에서 수행시키면 "Inbound Rules" 방화벽 설정에 21번 포트가 열리도록 설정이 됩니다.<br /> <br /> 그리고, FTP로 연결해 보면 이렇게 잘 됩니다. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp><span style='color: blue; font-weight: bold'>ftp 192.168.0.22</span> Connected to 192.168.0.22. 220 Microsoft FTP Service User (192.168.0.22:(none)): <span style='color: blue; font-weight: bold'>testuser</span> 331 Password required Password: 230 User logged in. ftp> <span style='color: blue; font-weight: bold'>ls</span> 200 PORT command successful. 150 Opening ASCII mode data connection. myfile.txt 226 Transfer complete. ftp: 15 bytes received in 0.00Seconds 15000.00Kbytes/sec. ftp> </pre> <br /> 아시는 분들도 계시겠지만, 윈도우 운영체제에서 제공하는 FTP 클라이언트(ftp.exe) 프로그램은 '액티브(Active: 능동형)' 연결 모드만 지원합니다. 즉, 위의 연결은 액티브 모드로 접속이 된 것입니다.<br /> <br /> '패시브(Passive: 수동형)' 모드로 접속 테스트를 해보려면 '알드라이브' 같은 프로그램을 사용해서 연결 정보의 "고급" 탭에서 아래 그림과 같이 "수동형"을 선택하시면 됩니다. (기본값이 수동형입니다. 요즘의 네트워크 환경에서는 능동형은 인트라넷 사이트를 제외하고는 현실성이 없습니다.)<br /> <br /> <img alt='ftp_nat_4.png' src='/SysWebRes/bbs/ftp_nat_4.png' /><br /> <br /> 이렇게 하고, 연결을 해보면 알드라이브의 경우 다음과 같이 "시간 초과 했습니다. (Error: Connection time-out)"라는 오류를 냅니다.<br /> <br /> <img alt='ftp_nat_5.png' src='/SysWebRes/bbs/ftp_nat_5.png' /><br /> <br /> 왜냐하면, 수동형 모드는 FTP 서버 측에서 동적할당한 포트로 클라이언트가 데이터 채널 용 연결을 시도하는 방식이므로, 21번 포트만 허용한 경우 자연스럽게 연결 시간 초과 오류가 발생하게 됩니다. (다시 말해, 위의 경우는 컨트롤 채널인 21번 포트 연결은 정상적으로 된 것입니다. 이 때문에 화면에는 접속은 했지만 목록을 못 가져오는 것처럼 보입니다.) 따라서, 패시브 연결을 허용하고 싶다면 동적 포트 범위의 연결을 허용하도록 다음과 같이 명령을 주어야 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > netsh advfirewall firewall add rule name="FTP Service" action=allow <span style='color: blue; font-weight: bold'>localport=21,1024-65535</span> protocol=TCP dir=in </pre> <br /> 이렇게 설정하고 연결을 해보면 정상적으로 알드라이브에서도 패시브 모드로 연결이 되는 것을 확인할 수 있습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 그런데, 위의 설정 방법이 좀 이상하다고 느껴지지 않나요?<br /> <br /> netsh 명령에 보면 포트를 지정하고 모든 프로그램에 허용하도록 되어 있습니다. 즉, 시스템 전체에서 21번 포트와 1024~65535 범위의 모든 포트를 열도록 만든 것입니다. 결국 21번을 제외한 1023번 포트 이내의 포트만 막혔을 뿐 사실상 거의 방화벽이 해제되어 있다고 봐도 좋을 수준인 것입니다.<br /> <br /> 그렇기 때문에 이 방법이 권장되지 않는 것입니다. 그렇다면 이전에 제가 설명한 방식(<a target='tab' href='http://www.sysnet.pe.kr/2/0/2870'>윈도우 8.1에서 방화벽과 함께 FTP 서버 여는 방법</a>)과 어떤 면에서 틀린 걸까요?<br /> <br /> 이전 글에서 열었던 "FTP Server (FTP Traffic-In)"과 "FTP Server Passive (FTP Passive Traffic-In)" 방식은 마찬가지로 21번 포트와 1024~65535 범위의 포트를 열지만 그 대상을 svchost.exe에서 실행중인 FTP 서비스에 한해서만 허용하는 옵션을 가지고 있습니다.<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='ftp_nat_6.png' src='/SysWebRes/bbs/ftp_nat_6.png' /><br /> <br /> 대응되는 명령어로 보면, "service" 옵션이 지정되어 더욱 명확하게 포트 관리를 하고 있는 것입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > netsh advfirewall firewall add rule name="FTP Service" action=allow localport=21,1024-65535 <span style='color: blue; font-weight: bold'>service=FTPSVC</span> protocol=TCP dir=in </pre> <br /> 방화벽을 설정할 정도로 보안에 공을 들이기 때문에 이 글을 읽고 계실텐데요. 그러하니, 부디 "<a target='tab' href='http://www.sysprobs.com/how-to-allow-ftp-traffic-through-windows-8-8-1-windows-7-firewall'>How to Allow FTP Traffic Through Windows 8, 8.1 and Windows 7 Firewall</a>" 글에서 설명한 방식으로 포트를 열지 마시고, 반드시 제가 쓴 글에서 설명한 방식(<a target='tab' href='http://www.sysnet.pe.kr/2/0/2870'>윈도우 8.1에서 방화벽과 함께 FTP 서버 여는 방법</a>)으로 열기 바랍니다. ^^<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2119
(왼쪽의 숫자를 입력해야 합니다.)