FTPS 접속 실패 질문입니다.
FTP 서버를 패시브 모드로 구축 한 상태입니다.
일반 FTP는 잘 돌아가는데 문제는 SSL 인증을 사용하여 FTPS로 돌리니 문제가 발생하더군요.
이게 더 이상한건 제 컴퓨터와 내부망에서는 문제가 없는데 외부망에 있는 PC에서 접속이 중간에 실패합니다. (그냥 FTP는 잘 됩니다.)
GnuTLS error -53 : Error in the push function.로 구글링을 열심히 해봤는데 얻을 수 있는 정보는 포트가 막혀 있다. 혹은 NAT 라우터 환경이면 포트 포워딩을 해야 한다... 라는 정보 밖에 없네요.
서버도, 클라이언트도 고정된 일반 IP를 가지고 있습니다. 그리고 외부망에 있는 PC에서 포트도 전부 다 뚫어줬는데도 불구하고 안되네요... 방금 썼듯이 그냥 FTP는 아주 잘 됩니다. SSL로 FTPS 돌리면 안됩니다. 클라이언트에서의 접속 방법은 명시적으로 접속 하는 방법을 이용하였습니다. 사실 이것도 국내에는 정보가 별로 없어서 명시적인 방법과 묵시적인 방법이 뭔 차이인지도 잘 모르것네요 -_-;;
도대체 문제가 뭔질 모르겠습니다. ㅠㅠ
파일질라에서 뜨는 로그 메세지는 다음과 같습니다.
--------------------------------------------------------
상태 : XXX.XXX.X.XXX:21에 연결 중 ...
상태 : 연결했습니다, 환영 메시지를 기다리는 중 ...
응답 : 220 Microsoft FTP Service
명령 : AUTH TLS
응답 : 234 AUTH command ok. Expecting TLS Negotiation.
상태 : TLS를 초기화하고 있습니다 ...
상태 : 인증서를 확인 중 ...
명령 : USER fastwater
상태 : TLS / SSL 연결되었습니다.
응답 : 331 Password required for fastwater.
명령 : PASS ***************
응답 : 230 User logged in.
명령 : SYST
응답 : 215 Windows_NT
명령 : FEAT
응답 : 211-Extended features supported :
응답 : LANG EN *
응답 : UTF8
응답 : AUTH TLS; TLS-C; SSL; TLS-P;
응답 : PBSZ
응답 : PROT C; P;
응답 : CCC
응답 : HOST
응답 : SIZE
응답 : MDTM
응답 : REST STREAM
응답 : 211 END
명령 : OPTS UTF8 ON
응답 : 200 OPTS UTF8 command successful - UTF8 encoding now ON.
명령 : PBSZ 0
응답 : 200 PBSZ command successful.
명령 : PROT P
응답 : 200 PROT command successful.
상태 : 연결되었습니다
상태 : 디렉토리 목록을 가져 오는 중 ...
명령 : PWD
응답 : 257 "/"is current directory.
명령 : TYPE I
응답 : 200 Type set to I.
명령 : PASV
응답 : 227 Entering Passive Mode (XXX,XXX,X,XXX,21,182).
명령 : LIST
응답 : 150 Opening BINARY mode data connection.
오류 : GnuTLS error -53 : Error in the push function.
오류 : 연결 시간 초과
오류 : 디렉토리 목록의 추출에 실패했습니다
------------------------------------------------------------------
저도 초보자라 뭐라 드릴 말씀이 없습니다만...
패시브 모드라는것은 데이터 전송을 위해서 FTP서버가 포트를 열고 기다리고 있으라는 의미입니다.
액티브 모드에서는 FTP에 접속한 사용자가 포트를 열고, 포트번호를 FTP서버에게 알려주면
FTP서버가 내 컴퓨터로 접속을 해서 데이터를 전송해 주는거죠.
그러니 당연하게도 공유기 등을 사용하는 사용자라면, 공유기 외부인 FTP서버가 공유기 내부 사용자PC의 포트로 접속이 가능할 리가 없습니다.
그럼에도 불구하고 상당수의 공유기 사용자들은 액티브 모드로도 별 문제들 없이 FTP서버를 잘 이용하는데,
그것은 공유기 자체가 FTP패킷을 감지해서 자동으로 포트 포워딩을 해주는 기능들을 가지고 있기 때문입니다.
왜냐면 공유기 제작사들이 "왜 니네 공유기만 쓰면 잘 쓰던 FTP가 안되냐?" 라는 문의를 엄청나게 받았기 때문이죠.
상식적으로 생각해보면 애초에 '서버' 인 FTP서버 쪽이 포트를 여는 패시브 모드가 더 당연해 보입니다.
그런데 내부망에 존재하는 서버나, 방화벽이 있는 서버의 경우 FTP를 위해서 딸랑 21번 포트 하나만 열어준 경우가 매우 많습니다.
이런 서버들이 거의 다 액티브 모드가 강요되는 서버인 것이죠... 하지만 공유기가 좋으니 별 문젠 없었던 겁니다.
그런데 SSL인증(FTPS)을 하게 되면 이야기가 좀 복잡해 집니다. 애초에 이녀석은 해당 서버가 맞는지 확인하는 역할과
통신내용을 암호화 하는 역할을 하기에, 중간 감시자의 입장인 공유기가 FTP패킷을 검출할래도 암호화가 되어있어 할 수가 없는데다가
더욱이 포트 포워딩이라는 것이 결국은 밖에서 들어온 접속을 공유기가 중간에 가로채서 전달해 주는것인데,
이 말은 공유기가 밖의 컴퓨터인 척 하는 상황이고... SSL은 바로 요 딴놈인 척 하는걸 막기위해 쓰는겁니다... 그러니 막히죠;
어찌되었건 방법이라면, 서버가 패시브 모드로 접속 되도록 FTP설정에서 패시브 리슨용의 포트를 특정 범위로 오픈하도록 설정하고,
방화벽이나 DMZ담당자에게 지정한 범위의 포트를 몽땅 다 열어달라고... 요청하는게 가장 현실적인 방법으로 보입니다.
이런... 문제 해결 해놓고 깜빡 잊다가 이제야 와서 댓글을 다네요.
결국은 제가 뻘짓 한거 였습니다. 열심히 로그 보니 데이터 채널 연결이 수립이 안되고 있더군요. 그래서 클라이언트 쓰는 곳에다가 포트 잘못 열었냐고 다시 열어달라고 요청했더니 잘 되었습니다.
답변 감사드립니다!!
제가 질문자는 아니지만
220-Microsoft FTP Service
220 Cafe24 .Net Hosting
230-Welcome to Cafe24 .Net Hosting Service 까지 나오고 접속된 것 같은데
아무것도 안보여서 왜그런가 구글링을 하며 시간을 버리고 버리다가 님의 답변에서
passive 모드~~~ 구절을 보고 체크했더니 정상 접속 됩니다...
감사합니다.
댓글 달기