2003 서버에서 FTP 포트변경하기... Passive Mode

서버/IIS 2010. 7. 9. 00:07

2003 설치했다. 포트 변경했다가.. 안돼서 ..고민한적이 있나요??

나처럼 고생할 사람들을 위해 글로 남겼다.

 

요즘은 2003 서버 서비스 팩 덕에.. .방화벽이 기본으로... 들어 있다.

당연히 방화벽은 올려야 된다..

 

그런데 FTP 를 기본 21이 아닌 다른 포토로 변경했을때 ... .문제가 발생한다...

리얼IP면 상관 없지만 사설일경우에 문제가 생긴다...

사설이라 들어오는 포트가 차단되다 보니 서버와 FTP 통신이 안된다.

 

 

이럴때 사용되는것이 Passive 모드 통신이다.

하지만 기본적으로 서버가 지정한 랜덤 패시브 포트 역시.... 방화벽에 의해 기본 차단되어 있다....

 

아주 낭패다.....

 

이럴때 해결법은 서버에서 Passive 모드에 대한 셋팅을 지정하고 방화벽 또한 맞추어준다.

 

 

1> 메타베이스를 수정한다.

    메타 수정도 2가지 방법이 있다.

 

     2가지 방법은 MS사이트에 소개돼 있다.

 

http://support.microsoft.com/kb/555022

 

a) To Enable Direct Metabase Edit
1. Open the IIS Microsoft Management Console (MMC).
2. Right-click on the Local Computer node.
3. Select Properties.
4. Make sure the Enable Direct Metabase Edit checkbox is checked.

 
b) Configure PassivePortRange via ADSUTIL script
1. Click Start, click Run, type cmd, and then click OK.
2. Type cd Inetpub\AdminScripts and then press ENTER.
3. Type the following command from a command prompt.
    adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5700"
4. Restart the FTP service.

한글로 설명하자면 IIS관리창의 서버에서 속성->메타베이스 직접편집 허용을 체크한후

C:\WINDOWS\system32\inetsrv\metabase.xml   파일을 열어서

<IISFtpService> 부분을 찾어서 

 PassivePortRange="5001-5011"      <= 를 추가한다.   (사이에공란이 없도록)

위줄을 추가한후 저장. IIS 를 재시작 한다.

이때 방화벽에서 포트 하나 하나 열어야 되므로 범위를 좁게 잡자...... 난 11개 열었다....

 

그리고 ADSUTIL 을 이용한 방법은..
Adsutil.vbs set /MSFTPSVC/PassivePortRange "5001-5011"

 

 

 

 

2> 방화벽을 포트를 연다.

  

    패시브 포트로 연 포트들을 방화벽에서 하나하나 등록해야 된다....

 

 

 

 

위 작업을 간단히

배치파일로 처리가 가능하다.

 

 

================= PassivePort.bat ======

Echo OFF

ECHO ADDING PORT RANGE TO IIS
CScript.Exe C:\Inetpub\AdminScripts\adsutil.vbs set /MSFTPSVC/PassivePortRange "5001-5011"

ECHO OPENING FIREWALL PORTS
FOR /L %%I IN (5001,1,5011) DO NETSH FIREWALL ADD PORTOPENING TCP %%I 패시브FTP%%I

iisreset

ECHO FINISHED
Pause

=========================================

위 내용부분을 서버에서 bat  파일로 저장후에 실행하자..... 간단히 해결된다....

 

 

 

 

참고한사이트들..  (참고라기보단 긁거온거에 가까운가...)

http://support.microsoft.com/kb/555022
http://www.dervishmoose.com/blog/index.cfm/2008/9/2/Windows-2003-Server-FTP-and-Firewall-Passive-port-range-tweak

http://clintm.esria.com/2006/11/20/configuring-windows-2003-firewall-and-iis-6-for-pasv-ftp-port-range/
http://cafe.naver.com/younetwork.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=286

 

 

 

 

PassivePortRange는 5001이상 부터 사용이 가능합니다.
서버에 Windows방화벽을 사용하면서 Passive포트의 구간을 정해서 사용하려면 위에서 설정한 구간의 포트값들을 Windows방화벽의 예외 부분에 포트값으로 추가해줘야합니다. (20개 구간이라면 20번작업)
* 고급란에서 따로 더 추가해 주는 부분이 있는데, 이분에 FTP서버를 설정해버리면 예외부분과 중복이 되서...Passive모드 정상동작이 안됩니다. *

 

 

덧붙이자면,
서버가 방화벽을 사용 중이라면 클라이언트가 private IP일 경우엔 연결이 안됩니다.(20/21 포트 외 다른 포트를 사용할 때)

: