Virtual Box에 centos 6.5를 설치했습니다. 기본 FTP 서버를 구성하려고 합니다. 자세한 내용은 다음과 같습니다.
DVD/Yum에서 vsftpd 설치: 상태 -> 성공
테스트 목적으로 방화벽을 비활성화합니다.
chkconfig iptables off : successful service iptables stop : successful
또한 selinux를 비활성화 모드로 설정합니다: 성공
VirtualBox에서 NAT를 통한 포트 전달 규칙을 추가했습니다.
Rule Protocol Host Port Guest Port Ftp tcp. 2121. 21
이제 로컬 사용자나 익명 사용자와 연결하려고 하면 매번 다른 오류가 많이 발생합니다.
또한 내 호스트 컴퓨터에 Filezila가 표시하는 로그 메시지를 추가했습니다.
-> LocalUserLogFromClient
Status: Disconnected from server
Status: Resolving address of localhost
Status: Connecting to [::1]:2121...
Status: Connection attempt failed with "ECONNREFUSED - Connection refused by
server", trying next address.
Status: Connecting to 127.0.0.1:2121...
Status: Connection established, waiting for welcome message...
Response: 220 Welcome to C6G FTP service.
Command: AUTH TLS
Response: 530 Please login with USER and PASS.
Command: AUTH SSL
Response: 530 Please login with USER and PASS.
Status: Insecure server, it does not support FTP over TLS.
Command: USER FUser1
Response: 331 Please specify the password.
Command: PASS *****
Error: Connection timed out after 20 seconds of inactivity
Error: Could not connect to server
->익명 사용자 로그
Status: Resolving address of localhost
Status: Connecting to [::1]:2121...
Status: Connection attempt failed with "ECONNREFUSED - Connection refused by
server", trying next address.
Status: Connecting to 127.0.0.1:2121...
Status: Connection established, waiting for welcome message...
Status: Insecure server, it does not support FTP over TLS.
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/"
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (10,0,2,15,88,204).
Command: LIST
Error: The data connection could not be established: 10065
Error: Connection timed out after 20 seconds of inactivity
Error: Failed to retrieve directory listing
답변1
로그에 두 가지 다른 문제가 표시됩니다.
익명 사용자가 아닌 경우 로그인 시간이 초과됩니다. 로그인이 완료될 때까지 20초를 기다린 후 FTP 클라이언트가 포기합니다. 이는 특히 가상 사용자 등을 설정하려는 경우 서버의 인증 구성이 작동하지 않음을 의미할 수 있습니다. 이 외에도 서버에서 로그를 작성하는 데 시간이 오래 걸리거나 DNS 확인을 수행할 수 있습니다.
익명 사용자 로그에 NAT 문제가 있을 수 있습니다.
227 Entering Passive Mode (10,0,2,15,88,204).
이는 클라이언트가 10.0.2.15:22732/tcp에 연결하고 시간 초과를 보고해야 함을 의미합니다. FTP 연결 자체가 localhost로 이루어지기 때문에 반드시 연결해야 하는 이상한 주소입니다.
(참고: 마지막 두 숫자는 네트워크 바이트 순서로 된 포트 번호의 2바이트입니다. 따라서 88×256 + 204 = 22732입니다.)
답변2
포트 전달자 뒤에 있는 FTP 서버는 사용된 소프트웨어가 다음과 같은 경우를 제외하고는 수동 모드로 서비스될 수 없습니다.특별한 디자인FTP 데이터 연결을 전달합니다. 사례는 다음과 같습니다:
- NAT 소프트웨어는
227 Entering Passive Mode
FTP 제어 연결을 스니핑하고 그에 따라 포트 전달을 수행하며 FTP 제어 데이터를 일부 수정할 수 있습니다. - FTP 서버는 수동 모드에서 전송된 가시(NAT) IP 주소를 사용하고 NAT는 지정된 포트 범위를 전달합니다.
내 초기 추론의 결함을 지적한 @derobert에게 감사드립니다.
Linux 커널 NAT는 (선택 사항) FTP 지원을 제공합니다. 하지만 리눅스라면손님, NAT는 문제와 관련이 없습니다. 실제로 호스트 시스템의 NAT는 게스트 시스템에 대해 NAT를 수행해야 합니다. Windows NAT 소프트웨어에 그러한 기능이 있습니까? 모르겠습니다. 어쨌든 Linux 문제는 아닙니다. 권장 해결 방법: 가상 머신의 NAT를 브리지로 교체합니다.