개인적인 파일 서버로 다소 구식이긴 하지만 FTP 기능을 쓰고 있다. 요즘은 대안도 많고 FTP로 굳이 쓰지 않는 경우가 많지만 나는 어느컴퓨터던 간단히 '설치'하고 '액세스'할 수 있다는 점에서 만족중이다.

그러던 와중 우연찮게 다른 공유기에서 설정하는 과정 에서 '비정규포트'에 따른 몇몇 서버의 접속 문제가 생겨 기록해놓는다. 다시말하면 아래 오류는 공유기를 사용해 내부 네트워크를 구성중인 과정에서, 외부 네트워크에서 접속 시 발생하는 오류에 관한 것이다.

대부분 Passive Mode FTP를 사용할 테니 그를 기준으로 설명한다. 애초에 Active면 문제가 발생하지 않는다.

방화벽 문제

Filezilla를 사용하는 경우, 서버를 방화벽 등록하면 된다. (filezilla server.exe 어차피 시작하면 물어보니까 굳이 포트를 따로 열어줄 필요는 없다.)

방화벽에 걸리면 timed out 에러가 뜨는지, 아예 반응도 없었는지는 잘 기억 안난다. 이에 걸리는 경우는 거의 없을 것이다.

포트포워딩 문제

DMZ를 쓰는 사람도 많지만 서버를 여러개 돌리는 상황에서 포트포워딩은 필수이다. Passive는 처음에 접속하기 위한 FTP 포트 하나를 정하고, 통신 포트를 구간으로 정해서 설정한다.

그 과정에서 실수로 통신 포트가 아니라 접속 포트만 허용하는 경우가 있어서 기록해놓는다.

윈도우 기본 인터넷 설정 문제 or 서버 설정 문제

쓸 일 없다. 사실 본질적인 문제는, Filezilla client를 사용하거나 Chrome 내장 FTP 브라우저, 안드로이드 ES file manager를 사용할 때 모두 발견하지 못한 문제이지만 오직 '윈도우 내장 FTP 기능'을 이용할 때만 오류가 발생하였다. 즉, 윈도우 탐색기나 인터넷 익스플로러의 접근이 불가능했다는 뜻이다.

이 경우 오류라 하면 대개 포트포워딩 문제시 많이 발생하거나, Passive 설정을 잘못했을 때 뜨는 오류였다.

200 Type set to A
227 Entering Passive Mode 

첫번째로, 파일질라 서버의 기준으로 패시브 모드 설정 메뉴에서 외부 IP를 받는 부분에 설정한 DDNS를 넣어주거나, 기본값으로 IP 반환하는 사이트가 지정되어 있으니 그를 사용하면 된다. 서버가 외부 통신을 위해 알아야 하는 정보이다.

두번째로, 검색 결과 가끔씩 오류가 뜨면 인터넷 설정 에서 Passive Mode 설정을 끄면 오류가 사라진다고 하는데, 확실히 오류는 사라진다. 다만 Active Mode로 송수신하기 때문에 아무것도 할수가 없다 (...) 혹시 이게 설정이 잘못되어있는지 확인하자.

결국, 비정규포트 문제

IPTIME 공유기 기준, 설정에 보면 '비정규 포트'라는 부분이 있다. 고급 Nat 설정이라는 깊은 곳에서 발견했다.

그곳에 접속시 입력하는 FTP 포트를 등록해주면 문제는 끝난다.

비정규 포트에 대한 이야기는 아래 FTP 원리에 대한 글을 읽어보면 잘 알 수 있다.

FTP-알아보기-PORT-Ftp-modeActive-Passive

원리 상으로 보면 PASSIVE 모드는 그 과정에서 굳이 방화벽을 뚫어 다른 포트를 허용하기를 원하지 않는다. 아마도 대다수의 클라이언트에서 그동안 잘 써먹었던 것은 그런 이유일 것이다.

다만 윈도우 FTP 프로그램에 대해선 무엇 때문인지 정확히 모르겠다. 특히 IPTIME 에서만 지금 'FTP 비정규 포트'라는 메뉴를 발견하였다. 타 공유기에서는 포트포워딩시 이상없이 작동함을 확인하였다.

자세히 알기 위해서는 이 'FTP 비정규 포트'가 무슨 기능을 하는지 IPTIME측에게 문의해봐야 할 듯 싶다.

로그 상으로 보면 윈도우 측에서 접근한다고 잘못된 순서나 방법을 쓰고 있지는 않기 때문이다.

아무튼 해결은 됐으나 원인은 모르겠는 상황이다. 보안상의 이유 때문인가? 윈도우 내장 FTP의 패킷만을 감지하여 서버측에서 클라이언트에게 PASV 모드 승인을 보내는 것을 막는가? 즉 이 경우에는 공유기단에서 이 승인 신호를 보내는 것을 막는 것으로 보아야 하는가? 어쨌든 타 공유기에는 이러한 현상이 없으므로 이런 해석으로 받아들여야 할 듯 싶다.