FTPS 접속 실패 질문입니다.

fastwater의 이미지

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.
오류 : 연결 시간 초과
오류 : 디렉토리 목록의 추출에 실패했습니다

------------------------------------------------------------------

jeemin1의 이미지


패시브 모드라는것은 데이터 전송을 위해서 FTP서버가 포트를 열고 기다리고 있으라는 의미입니다.
액티브 모드에서는 FTP에 접속한 사용자가 포트를 열고, 포트번호를 FTP서버에게 알려주면
FTP서버가 내 컴퓨터로 접속을 해서 데이터를 전송해 주는거죠.

그러니 당연하게도 공유기 등을 사용하는 사용자라면, 공유기 외부인 FTP서버가 공유기 내부 사용자PC의 포트로 접속이 가능할 리가 없습니다.
그럼에도 불구하고 상당수의 공유기 사용자들은 액티브 모드로도 별 문제들 없이 FTP서버를 잘 이용하는데,
그것은 공유기 자체가 FTP패킷을 감지해서 자동으로 포트 포워딩을 해주는 기능들을 가지고 있기 때문입니다.
왜냐면 공유기 제작사들이 "왜 니네 공유기만 쓰면 잘 쓰던 FTP가 안되냐?" 라는 문의를 엄청나게 받았기 때문이죠.

상식적으로 생각해보면 애초에 '서버' 인 FTP서버 쪽이 포트를 여는 패시브 모드가 더 당연해 보입니다.
그런데 내부망에 존재하는 서버나, 방화벽이 있는 서버의 경우 FTP를 위해서 딸랑 21번 포트 하나만 열어준 경우가 매우 많습니다.
이런 서버들이 거의 다 액티브 모드가 강요되는 서버인 것이죠... 하지만 공유기가 좋으니 별 문젠 없었던 겁니다.

그런데 SSL인증(FTPS)을 하게 되면 이야기가 좀 복잡해 집니다. 애초에 이녀석은 해당 서버가 맞는지 확인하는 역할과
통신내용을 암호화 하는 역할을 하기에, 중간 감시자의 입장인 공유기가 FTP패킷을 검출할래도 암호화가 되어있어 할 수가 없는데다가
더욱이 포트 포워딩이라는 것이 결국은 밖에서 들어온 접속을 공유기가 중간에 가로채서 전달해 주는것인데,
이 말은 공유기가 밖의 컴퓨터인 척 하는 상황이고... SSL은 바로 요 딴놈인 척 하는걸 막기위해 쓰는겁니다... 그러니 막히죠;

어찌되었건 방법이라면, 서버가 패시브 모드로 접속 되도록 FTP설정에서 패시브 리슨용의 포트를 특정 범위로 오픈하도록 설정하고,
방화벽이나 DMZ담당자에게 지정한 범위의 포트를 몽땅 다 열어달라고... 요청하는게 가장 현실적인 방법으로 보입니다.

fastwater의 이미지

결국은 제가 뻘짓 한거 였습니다. 열심히 로그 보니 데이터 채널 연결이 수립이 안되고 있더군요. 그래서 클라이언트 쓰는 곳에다가 포트 잘못 열었냐고 다시 열어달라고 요청했더니 잘 되었습니다.
답변 감사드립니다!!

익명 사용자의 이미지

220-Microsoft FTP Service

220 Cafe24 .Net Hosting

230-Welcome to Cafe24 .Net Hosting Service 까지 나오고 접속된 것 같은데
아무것도 안보여서 왜그런가 구글링을 하며 시간을 버리고 버리다가 님의 답변에서
passive 모드~~~ 구절을 보고 체크했더니 정상 접속 됩니다...
감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.