vsftpd
에 설치할 때마다 centos
사용자를 위한 감옥 환경만 설정하고 나머지는 의 기본 구성입니다 vsftpd
. 사용자를 생성하고 filezila
ftp 클라이언트로 연결을 시도했지만 패시브 모드로 연결할 수 없습니다. transfer settings
성공적으로 연결하기 위해 항상 활성 모드로 변경합니다 ftp server
. 그렇지 않으면
Error: Failed to retrieve directory listing
vsftp.conf
그렇다면 파일의 지시문을 변경하고 수동 모드로 서버에 연결할 수 있는 방법이 있습니까 ?
답변1
vsftpd에 대해 패시브 모드를 구성하려면 vsftpd.conf에서 일부 매개변수를 설정해야 합니다.
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
이렇게 하면 패시브 모드가 활성화되고 데이터 연결에 11개의 포트를 사용하도록 제한됩니다. 이는 방화벽에서 이러한 포트를 열어야 할 때 유용합니다.
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
테스트 후 모든 것이 작동하면 다음을 사용하여 방화벽 상태를 저장하십시오.
service iptables save
그러면 파일이 업데이트됩니다 /etc/sysconfig/iptables
.
이렇게 하려면 CentOS 7에서 iptables가 아닌 새로운 방화벽을 사용해야 합니다.
귀하의 구역을 찾으십시오:
# firewall-cmd --get-active-zones
public
interfaces: eth0
내 영역은 '공개'이므로 내 영역을 공개로 설정하고 포트 범위를 추가한 후 다시 로드합니다.
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
연결하면 어떻게 되나요?
클라이언트는 포트 21에서 vsftpd 서버에 연결합니다.
서버는 위에 지정된 범위에서 연결할 포트를 알려주는 클라이언트에 응답합니다.
클라이언트는 지정된 포트에서 데이터 연결을 설정하고 세션은 계속됩니다.
다른 FTP에 대한 훌륭한 설명이 있습니다.모드여기.
답변2
패시브 모드를 활성화하려면 vsftp.conf에서 다음 구성 옵션을 설정하세요:
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx
물론 시작 및 끝 포트를 변경할 수 있으며 xxx를 서버의 공용 IP로 바꿔야 합니다.
또한 방화벽에서 수동 모드 포트 범위를 열어야 합니다. Centos에서는 ip_conntrack_ftp
모듈을 로드하여 방화벽에서 FTP 연결을 처리할 수 있습니다. ip_conntrack_ftp를 편집 /etc/sysconfig/iptables-config
하고 IPTABLES_MODULES 옵션에 추가합니다. 그런 다음 iptables를 다시 시작하십시오.
/sbin/service iptables restart
답변3
옆에 pasv_enable=YES
VSFTP가 PASV 모드를 실행할 포트 범위를 지정합니다.
pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES
iptables가 다음 포트에서 패킷 전송을 허용하도록 구성하는 것을 잊지 마십시오:
iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
답변4
일반적으로 FTP 서버인 vsftpd가 아니라 iptable과 같은 방화벽이 패시브 모드 사용을 방지합니다(데이터 전송에 필요한 tcp 연결 차단).