VSFTP Passive mode¿¡¼­ ÀϺΠClient Á¢¼Ó ºÒ°¡ Çö»ó ÇØ°á Tip

RIGIDBODY   
   Á¶È¸ 6674   Ãßõ 0    

리눅스로 서버운영시 FTP 서버데몬으로 VSFTP를 기본으로 사용하실 겁니다.

그런데, FTP를 Passive mode로 사용 시에 어떤 Client에서는 잘되고 또 어떤 Client App.에서는 안되는 현상을 경험해보셨을 겁니다. 

이는 Client의 문제일 수도 있고 Server의 설정 문제일 수도 있고 두가지 방식으로 접근이 가능합니다.

먼저, 문제의 원인은 FTP 작동 방식에 있는데, 최초 서버측 21번 Port를 이용하여 접속하고 이는 Command session이 되며, 이후 Data 이동 및 폴더 정보 전달을 위한 별도의 Port가 요구 됩니다. 이를 위해 Passive mode에서는 해당 Port를 서버단에서 지정하여 Client에 통보해주고 Client는 해당 Port로 Data Session을 체결하여 패킷이 오갑니다.

그런데 이 과정 중에, 서버의 IP정보도 함께 전달하게 되는데 문제가 되는 것은, Router하단에 물려 사설망에서 작동하는 서버의 경우, 자신의 IP인 사설IP를 전달하게 되고 이를 수신한 Client App.에서는 수신받은 사설IP와 Port 넘버로 접속시도시에 Error가 발생하는 것입니다.

그런데, FileZila, FlashFXP와 같이 인지도 있고 기능 많은 App,은 스마트하게도 알아서 이 사설 주소를 무시하고 원래 접속했던 Public IP로 Override하여 문제 없이 Data Session이 체결 됩니다.

하지만 문제가 되는 것은 대부분의 다른 FTP App.은 이렇게 하지를 못하고 있는 그대로 사설 IP로 접속을 시도하게 되어

서버의 목록도 출력이 안되고 접속 Error를 뱉고 맙니다. 

ex) 기본 설정으로 접속시 Error 발생 화면

반면에, FileZila로 접속하면 아무 문제가 없습니다. 아래에 보시면, "서버가 알 수 없는 주소와 수동형 응답을 보냈습니다.

대신 서버 주소를 사용합니다."라고 뜨는 것을 알 수 있습니다. 즉, 사설IP를 알려주어, 공인IP로 오버라이드해서 접속하겠다는 겁니다. 하지만, 대부분의 다른 FTP Client App.은 이런 오버라이드 기능이 없어 Error를 출력하게 됩니다.



그럼, 서버 설정부터 확인해서 수정하도록 하겠습니다.

우분투 18.04LTS 기준으로 설명하겠습니다. 기본적인 Passive mode 설정은 되어 있다고 가정합니다.

/etc/vsftpd.conf 파일을 편집기(nano, vi 등)로 오픈하여 아래 옵션을 설정합니다.

=========================================================================

listen=YES #기본값은 NO이나 YES로 변경합니다. 이 부분을 설정하지 않으면 Error발생

listen_ipv6=NO #기본값은 YES이나 NO로 변경합니다. 이 부분을 설정하지 않으면 Error발생

pasv_addr_resolve=YES #이 항목을 삭제하실 경우, pasv_address 에는 공인IP를 입력하셔야합니다.

pasv_address=joongon.com #본인 소유의 도메인네임을 입력합니다. 

===========================================================================

이제 접속하시면 정상적으로 접속되는 것을 알 수 있습니다.

다만, 내부 Client에서 내부 Server로 접속시에도 접속 주소는 Domain Name으로 해주셔야 정상적으로 접속 됩니다.

pasv_addr_resolve 옵션을 제거하실 경우, pasv_address 옵션에 공인IP를 입력해주셔야 하는데,

보통 가정에서 사용하실 경우 유도IP이므로 변경시에 또 변경을 수동으로 해줘야 하는 불편함이 있고,

이를 해결하기 위해서는 쉘스크립트를 작성해서 Crontab에 등록해주셔야 하는데 번거롭습니다.

pasv_addr_resolve 옵션을 주는 것이 훨씬 간결하죠.

Beyond imagination


Á¦¸ñPage 1750/28
°Ô½Ã¹°ÀÌ ¾ø½À´Ï´Ù.