내 서버(ubuntu 16.04 x86_64)에서 proftpd를 사용하고 있습니다.
기본적으로 proftpd는 표준 포트 21을 사용합니다. 아무 문제 없이 활성 모드를 사용하여 집 노트북에서 FTP에 연결할 수 있습니다.
이제 proftpd를 중지하고 포트를 21에서 10021로 변경하고 서비스를 다시 시작했습니다. 이제 능동 모드로는 연결할 수 없고 수동 모드로만 연결할 수 있습니다.
무엇이 바뀌었나요?
나도 이해가 안되는데 왜 활성 모드에서 작동합니까? 라우터를 통해 인터넷에 접속할 수 있습니다. 라우터의 어떤 포트도 내 노트북으로 전달하지 않습니다. 이제 연결할 때 내 노트북(ftp 클라이언트)은 1023보다 큰 포트에서 서버 포트 21로 연결을 생성합니다. 내 노트북은 두 번째(데이터) 포트도 서버로 보내고, 서버는 이 데이터를 사용하여 자체 포트 20에서 내 포트에 연결합니다. 하지만 내 포트가 WAN으로 인해 닫혀 있는 경우 어떻게 두 번째 연결을 설정할 수 있습니까?
답변1
방화벽(라우터)에는 FTP 연결 추적 도우미가 있습니다. FTP 제어 연결(TCP 대상 포트 == 21로 식별됨)을 찾으면 명령을 모니터링합니다. 클라이언트가 명령을 보내는 것을 보면 PORT
명령을 다시 작성하고(외부 IP 주소, 다른 포트에) FTP 서버에서 예상되는 연결을 추적합니다. 연결이 도착하면 통과가 허용됩니다.
포트를 변경해도 10021은 FTP 제어 연결로 인식되지 않기 때문에 아무 일도 일어나지 않습니다.
적어도 Linux에서는 함수가 모듈이며 nf_conntrack_ftp
필요한 경우 ports
10021을 포함하도록 옵션을 설정할 수 있습니다.
추신: 서버 앞의 방화벽을 사용하여 비슷한 작업을 수행할 수 있습니다. 비록 그 반대이긴 하지만 이는 활성 모드가 아닌 수동 모드 전송에서 수행됩니다.