클라이언트가 방화벽 내부에 있는 경우는 외부의 ftp에 접속할 때 패시브모드로 접속하게 된다. 물론 vsftpd 설정에서 패시브모드를 사용할 수 있도록 설정해 놓았을 경우다. vsftpd의 패시브모드 설정은 여기를 참고한다.

그동안 21번 포트를 이용했지만, 보안상 포트를 변경해서 운영해보고자 포트를 변경했다. 그런데 접속이 되지 않았다. 파일질라로 접속하면 다음과 같은 오류를 내면서 죽어도 접속이 되지 않았다.

상태: xxxx.xxxx.xxx 주소 해석
상태: xxx.xxx.xxx.xxx:xxxx에 연결...
상태: 연결 수립, 환영 메시지를 기다림...
응답: 220 Welcome to FTP service.
명령: USER ******
응답: 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
응답: 500 OOPS: vsf_sysutil_bind
명령: PORT xx,xx,xx,xxx,19,228
응답: 500 OOPS: priv_sock_get_int
오류: 디렉터리 목록 조회 실패
오류: 서버에 의해 연결 닫힘


계정이 접속까지는 되는데 디렉터리 목록 조회에 실패하는 현상이다. 이는 패시브모드로 사용하는 포트가 ftp서버단에서 막혀서 그런듯 하다. 이 포트는 vsftpd 설정파일에서 지정할 수 있다. ftp는 한 개의 포트를 이용하는 것이 아니다. 명령어를 보내는 포트는 따로 있는데, 패시브모드로 동작시 서버로 가는 이 포트가 막혀서 명령어가 제대로 동작하지 않아서 그런듯 추측해본다.


결국 해결법은 ftp서버단에서 패시브모드를 위해 지정해둔 포트를 열어주면 된다. 그러면 방화벽 아래의 클라이언트에서도 접속하여 ftp를 이용할 수 있다.


이상한 점은 디폴트 21번 포트를 사용했을 경우는 패시브모드 포트를 열지 않아도 접속이 된다는 점이다. 이 점은 나도 아직 왜 그런지 모르겠다. 하여튼, 패시브모드 포트를 열어 해결하긴 했다. 참고하시길 바라며 잘못된 점이 있다면 지적해 주시기 바란다.


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Life 스토리


티스토리 툴바