developerworks/Unix

ftp가 왜 안되는지에 대한 결론..

수상한 김토끼 2013. 3. 6. 14:53

이건.. 애초부터 안되는게 이상한 상태가 맞는 것 같다..


원인을 찾아보니.. ftp라는게 2개의 포트를 사용하게되는데.. 20번 21번 포트가 그것이다.

21번포트로 접속을하고 20번 포트로 데이터를 전송하게되는데.. 문제는 클라이언트쪽에서 passive mode라고 임의의 엉뚱한포트를 통해 데이터를 전송하는데 있었다.

ftp서버쪽에서는 20번을 통해 데이터를 전송.. 21번을 통해서 접속이 잘되는데.. 클라이언트쪽에서는 임의의 11000 ~ 11500번대의 통해 데이터를 전송받게 된단다.. 이쪽도 열어주면 될줄 알았으나.. virtual box에서는 이런식으로 열수가 없게 되어 있다. 즉.. 포트 11000-11500 이런식으로 포드포워딩을 해줄수가 없으니 정상적인 방법으로는 사용이 불가능한것이 맞는 것 같다. 또 하나의 이유로는.. NAT의 문제인데.. NAT의 경우 dhcp환경과마찬가지로 가상ip를 사용하게되는데.. ftp서버쪽에서는.. 이런 가상아이피는 알 수 없으니 host os의 ip의 특정포트로 데이터를 보내게되고 위에 쓴 것처럼 passive mode는 임의의포트를 잡아서 사용하게되니.. 그쪽으로 포드포워딩을 해 줄수 없다는 결론..


아무 생각없이 쓰던 ftp인데.. 막상 안되니 또 한없이 답답해 지네..


결론은.. 일단 포기.. 


세줄요약을 해보면

NAT 환경에서 ftp서버로는 사용할 수 없음..(가상ip사용으로 인해 ip를 읽어버림.. ip가 날라감~~ 홀라당)

NAT 환경에서는 ftp클라이언트도 사용할 수 없음..(passive mode.. 포드포워딩이 어려움.. 랜덤값이라..)

제길 안써..