FTP Client와 Server 간의 통신 방식은 설정은 기본적으로 FTP 통신 인증이 이루어지고,
Data 연결부분에서는 임의의 Port를 이용하는 방식으로 구성되는 편입니다.
그래서, 간혹 방화벽을 21번 포트만 Open 해줘서,
FTP Client 프로그램에서 기본 FTP 통신 Port 21번만 연결되고,
FTP의 Data을 목록과 데이터를 읽어오는 부분에서 멈추게 되는 경우를 경험하곤 합니다.
그걸 오류를 막아주기 위해서는
FTP 설정에서 사용할 포트의 범위를
"데이터 포트 범위 (Data Port Chanel Rate)"라는 설정 해 줘야 합니다.
그리고 네트워크 공유기와 Route에서 해당 포트를 연결해줘야만 원활한 FTP 서비스가 가능합니다.
FTP 서버 설정 작업 순서
- IIS에서 FTP 방화벽 지원 설정
- FTP 서비스 재기동하기
- 공유기에서 포트 포워딩 설정
- 윈도우 방화벽 예외 처리
STEP 1. IIS 기본 셋팅 홈
- 방화벽의 외부 IP주소(E): 부분은 옵션사항입니다. 공백으로 사용하셔도 됩니다.
IIS설정에서 FTP방화벽 지원를 선택
STEP 2. FTP방화벽 지원
변경된 설정값을 적용하기 위해서는, ftpsvc를 재시작해야 합니다.
FTP의 Data통신에서 사용할 Port범위를 설정합니다.
(주의: 서버의 Root노드 선택해야 합니다. Site>FTP(일반 사이트)는 Read Only입니다.)
Root 노드 선택 (활성) | 일반사이트 선택 (비활성) |
STEP 3. 서비스 중지/시작
관리자 권한 커맨드 창 사용
(꼭, FTP방화벽 설정을 적용을 위해서, 재시작해야 합니다.)
net stop ftpsvc
net start ftpsvc
net명령으로 ftp서비스 restart
STEP 4. 라우터 포트 포워딩
공유기에 Port포워딩 설정
(참고: 라우터 설정하기(영문 안내) Active and Passive FTP Overview and Configuration)
STEP 5. 윈도우 방화벽 부분 예외처리
윈도우 방화벽에서 FTP서버 오픈해줍니다.
또는
[ Windows Firewall with Advanced Security에서 New Rule...로 추가 설정 ]
Port
> TCP / Specific local ports: 5000-5010 추가
> Allow the connection
> [v] Domain / Private / Public
> Passive FTP Port 5000 - 5010 형식으로 추가
(AWS) AWS에서 ftp Port Rule 추가해주기
서버가 AWS 서비스를 사용하고 계신다면, 보안 룰에서도 FTP Data통신 범위의 포트를 오픈해 줘야 합니다.
Security Groups에 Port Rage를 추가합니다.
(ex: 50000-50010일 때)
50000-50010 포트를 사용할때, 오픈해주는 모습
참고: NAT 환경에서 IIS 7.5 Passive 모드 설정하기
참고 2: (추천) AWS EC2 2012 Server FTP setting
FTP통신 방식: Active Mode와 Passive Mode
Active Mode: 최초 승인 21번 포트, 데이터 전송 20번 포트
FTP권한 통신
21번 기본 포트로 권한 승인처리
Data 데이터 통신부터는 서버가 가지는 포트로 변경 (20번 포트)
Data통신 포트는 20번으로 고정되어 있는 경우.
Passive Mode: 최초 승인 21번 포트, 데이터 전송 임의 포트 정보 제공
FTP 권한 승인
FTP 권한 통신은 21번 포트를 사용하는 부분은 동일
Data통신부터는 서버에서 지정된 범위의 Port를 사용
FTP의 Data포트 범위로 지정된 부분의 Port중에 사용
참고: FTP 동작방식 - Active mode, Passive mode
FTP 오류 메시지
오류 메시지: 530 User <Username> Cannot Log In. Login Failed.
현상:
FTP 유틸리티를 사용하여 FTP 사이트에 연결하면 다음 오류 메시지가 나타납니다.
530 User <username> cannot log in.
Login failed.
원인:
이 문제는 다음과 같은 경우에 발생합니다.
- Microsoft Management Console(MMC)에서 익명 연결만 허용을 설정한 경우
- 사용자 관리자에서 사용자 이름에 로컬 로그온 권한이 없는 경우
- 사용자 관리자에서 사용자 이름에 네트워크에서 이 컴퓨터 액세스 권한이 없는 경우
- 사용자 이름과 함께 도메인 이름을 지정하지 않은 경우(형식: DOMAIN\username)
해결 방법:
참고: https://support.microsoft.com/ko-kr/kb/200475
개인적인 CAST:
FTP 데이터 채널 포트를 제한 후에,
net stop ftpsvc / net start ftpsvc를 통해서, 재시작하지 않았을 때도 이런 에러가 나타납니다.
(방화벽에서, FTP 데이터 채널 포트가 달라서 에러가 발생합니다.)
FTP 오류 메시지 2
C:\Users\Administrator>ftp test.******.com
Connected to test.******.com
220 Microsoft FTP Service
User (test.******.com:(none)): userid
331 Password required
Password:
230 User logged in.
ftp> ls
501 Server cannot accept argument.
150 Opening ASCII mode data connection.
멈춤 증상...(Hang Out 됨)
IIS 오류 코드:
간혹, WIN10의 경우 Allowed apps에 등록이 안돼서 ftp유틸이 실행이 안될 수 있습니다.
cmd의 ftp.exe를 이용한 해결 방법을 찾지 못했습니다. (W2012 R2는 불가능으로 결론)
해당 원인은 DATA 연결 부분에, Passive모드가 안되기 때문에 문제가 발생한다고 하네요.
(참고로, 윈도우 OS의 모든 firewall를 off 시켜도 동일한 반응이 나타납니다.)
Window Server 2008 / 2012 R2의 경우 불가능한 것으로 결론.
[해결방법: Window Server에서 cmd로 ftp 서버로 파일 보내기]
WinSCP(Potable)를 다운로드하여서, /command 방식으로 cmd실행을 처리하였습니다.
https://winscp.net/eng/docs/commandline
필요사항
- WinSCP(Portable) 프로그램.
- PATH에 winscp.exe가 있는 경로 추가.
@ECHO OFF
for /f %%I in ('wmic os get localdatetime ^|find "20"') do set dt=%%I
set dt=%dt:~0,8%T%dt:~8,4%
winscp /command "open ftp://username:password@test.com:2222" "bi" "cd DATA" "mput data_%dt%.zip" "exit"
추가로, WinSCP의 synchronize 기능을 통해서, SYNC처리가 가능합니다.
출처: https://blog.edit.kr/entry/공유기에서-FTP-PORT-포워딩-하기 [소금인형 - SW개발자?]
'[AWS] > ROG' 카테고리의 다른 글
WinSCP 를 이용한 FTP 동기화 (0) | 2021.08.07 |
---|---|
[AWS] EC2 2012 Server FTP 설정 (0) | 2021.08.07 |
[AWS] Windows 서버 FTP 구성 정리 (0) | 2021.08.06 |
[AWS] EC2 Windows Server FTP 구축 (0) | 2021.08.06 |
[AWS] FTP 530-User cannot log in 발생 원인 (1) | 2021.08.05 |
댓글