[lunux] FTP 모드, 포트정보 및 passive 관련 설정하기
ftp에 관해서.. 좀 설명을 하고.. pasv설정하는 방법을 좀 나열하려 한다.
(역시나.. 나중에 내가 보기 위해서..^^)
일단.. FTP는 2가지 모드가 있다.. 그리고.. 2개의 포트를 사용한다.
우선.. 통상적인 active모드와 passive 모드가 있는데.. active모드부터 설명하려 한다.
ftp는 2개의 포트를 사용한다고 했는데.. 여기부터 좀 헷갈리기 시작한다.
기본적으로 알고있는 ftp포트는.. 21번 포트가 있는데.. 이는 command포트이다. 즉 초기접속, 인증, 명령전달 등을 수행하고.. 실제로 파일전송이 시작되면.. 20번포트(Data port)를 열어 사용한다.
문제는.. 이 20번포트가.. 서버->클라이언트로의 접속이라는 얘기다.
도표로 설명을 해보면..
▨ Active모드 접속방식
command접속
클라이언트(임의포트:1024이후) —-> (21번포트)ftp서버
data접속
클라이언트(임의포트:1024이후) <—- (20번포트)ftp서버
문제는.. 보통 PC인 클라이언트단은.. 방화벽이라던가.. 사설ip환경, 혹은 사내정책에 따라서 외부에서의 접속이 막혀있는 경우가 대부분이라는.. 그래서 대안으로 passive모드가 존재한다.
passive모드는.. data접속이 필요할경우, 서버가 클라이언트에게 (임의의)포트를 준비해서 알려주고, 클라이언트는 해당 포트로 접속한다.
▨ Passive모드 접속방식
command접속
클라이언트(임의포트:1024이후) —-> (21번포트)ftp서버 // data접속이 필요하면 (임의의)포트번호 알려줌
data접속
클라이언트(임의포트:1024이후) —-> (임의포트:1024이후)ftp서버
passive모드의 경우에는 data접속도 client에서 접속하기 때문에.. PC단의 방화벽 정책에 크게 방해받지 않는다.
다만.. 또다른 요인이 있는데.. 서버단에서 임의의 포트를 사용하기때문에 서버단 방화벽에서 열어주기가 애매하다는 것이다.
(나는 방화벽까진 아니지만.. 공유기를 사용하기 때문에.. 해당 포트를 포워딩 해줘야하는데… ㅠ.ㅠ)
뭐.. 설정방법이 있겠지.. 하고 찾아봤다.
역시나.. 있다.. 예상했겠지만.. 서버에서 passive접속을 위한 포트 범위를 지정해버리고, 해당포트 범위를 방화벽등에서 풀어주면 된다.
$ vi /etc/vsftpd.conf
## 아래내용 추가 ## passive모드 관련 pasv_enable=YES pasv_min_port=5001 pasv_max_port=5010
서버 리스타트..
$ /etc/init.d/vsftpd restart
이제.. 방화벽(혹은 공유기)에서 해당포트(위에서는 5001~5010)를 열어주고, 클라이언트에서 접속할때 passive모드로 접속하면 된다.
테스트해보니.. 잘 되는듯. ^^
(근데.. 직장에서 해보니.. 직장에서는 나가는 21번 포트도 막아놨군.. 쩝.. 어쩔수없이.. 그냥 ssh를 이용한 sftp를 사용해야할듯..)
※ 급하게 작성하느라.. 혹 오류사항 있으면 알려주세요.. 수정해놓을께요.. ^^