강좌 & 팁
이번에 FTP 서버를 운영하면서 권한 인증까지는 되지만 파일 전송이나 목록 출력은 안되는 상황이 있었습니다.
상태: example.host.com 주소 해석
상태: 123.123.123.123에 연결...
상태: 연결 수립, 환영 메시지를 기다림...
응답: 220
명령: USER account
응답: 331 Please specify the password.
명령: PASS ***********
응답: 230 Login successful.
명령: OPTS UTF8 ON
응답: 200 Always in UTF8 mode.
상태: 연결됨
상태: 디렉터리 목록 조회...
명령: PWD
응답: 257 "/"
명령: TYPE I
응답: 200 Switching to Binary mode.
명령: PASV
응답: 227 Entering Passive Mode (123,123,123,123,156,81).
명령: LIST
오류: 연결 시간 초과
오류: 디렉터리 목록 조회 실패
알아보니 FTP는 제어 채널과 데이터 채널이 따로 있었습니다. 제어 채널은 보통 21번 포트, 데이터 채널은 서버에서 지정해준 포트를 쓰는데 방화벽에서 데이터 채널 포트 범위를 막고 있었던 게 원인이었습니다.
먼저 포트 범위를 확인하고 방화벽에서 INBOUND 정책을 설정해주면 해결됩니다.
예) FTP 서버를 vsftpd로 사용할 때 포트 범위 확인하기
$ cat /etc/vsftpd.conf
pasv_enable=YES
pasv_min_port=3500
pasv_max_port=5000
이렇게 확인하면 3500번 포트부터 5000번 포트까지 개방하면 됩니다.