수동 모드와 작동하도록 vsftpd를 구성하는 방법


49

내가 설치할 때마다 vsftpdcentos, 사용자 및 나머지 I에만 설치 감옥 환경의 기본 구성입니다 vsftpd. 사용자를 생성하고 filezilaftp 클라이언트 와 연결을 시도 했지만 수동 모드로 연결할 수 없습니다. 나는 그렇지 않으면 내가 얻는 transfer settings것에 성공적으로 연결하기 위해 항상 활성 모드로 변경합니다.ftp server

 Error: Failed to retrieve directory listing

vsftp.conf파일의 지시문을 변경하는 방법이 있습니까? 패시브 모드로 서버에 연결할 수 있습니까?

답변:


86

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

내 영역은 'public'이므로 영역을 public으로 설정하고 포트 범위를 추가 한 후 다시로드합니다.

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

연결하면 어떻게됩니까

  • 클라이언트는 포트 21에서 vsftpd 서버에 연결합니다.

  • 서버는 클라이언트에 응답하여 위에 지정된 범위에서 연결할 포트를 알려줍니다.

  • 클라이언트는 지정된 포트에서 데이터 연결을하고 세션이 계속됩니다.

다른 ftp 모드에 대한 자세한 설명이 여기에 있습니다.


max포트 뒤에 포트 를 넣었는지 궁금 min하지만 ... 더 중요한 것은 10090에서 10100 포트를 열면 11 포트이며 10 포트가 아닙니다.
Alexis Wilke

알파벳순으로 믿습니다. 별개의 지시문이므로 실제로 중요하지 않습니다.
user9517은 GoFundMonica

3
이 없이는 나를 위해 작동하지 않습니다 pasv_address.
fbmd

이걸 찾기 위해 나이가 들었습니다. vsftpd 안내서에이 목록이 없습니다 ... brilliant
Pete

멋진-이 vsftp 구성은 모든 FTP 방화벽 문제를 해결했습니다 :)
BurninLeo

24

수동 모드를 활성화하려면 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 연결을 처리하기 위해 모듈을 로드 할 수 있습니다 . /etc/sysconfig/iptables-configip_conntrack_ftp를 편집 하여 IPTABLES_MODULES 옵션에 추가 하십시오 . 그런 다음 iptables를 다시 시작하십시오.

/sbin/service iptables restart

3
pasv_address다른 모든 것이 설정되었지만 여전히 작동하지 않을 때의 트릭은 무엇입니까?
fbmd

1
pasv_address를 시도하기 전에 @fbmd도 pasv_max와 min_port가 올바른 순서인지 확인해야합니다. pasv_min_port에 max 값이 구성되어 있고 vsftpd는 단순히 이것을 무시합니다. pasv 포트가 상관 관계가 있지만 시각적으로 구성되어 있지 않다고 생각하게 만드는 것은 자동 결함 / 버그입니다. 이것은 나에게 일어 났고 내 문제를 해결했다.
Pedro Sousa

당신의 DNS 주소를 지정하려는 경우 pasv_address, 당신은 추가해야합니다 pasv_addr_resolve=YES(기본값 NO)
피에르 - 데미안

6

옆에 pasv_enable=YESVSFTP가 PASV 모드를 실행할 포트 범위를 지정하십시오.

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

iptables를 설정하는 것을 잊지 마십시오 :이 포트에서 패킷 전송이 가능합니다 :

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT

표준에 CentOS 시스템에서 함께 추가 규칙을 일으키는 담요 DROP이 iptables -A INPUT ... 무시가
user9517은 GoFundMonica 지원

pasv_addressvsftpd.conf 파일에 포함 되어 있는지 확인하십시오 .
Pedro Madrid

3

일반적으로 ftp 서버, vsftpd는 아니지만 iptable과 같은 방화벽은 수동 모드 사용을 방지합니다 (데이터 전송에 필요한 TCP 연결 차단).


실제로, vsftpd는 방화벽에서 포트를 열 수있을만큼 똑똑 할 수 있습니다 ... 그러나 여기서 볼 수있는 답변으로는 그렇게 할 수없는 것처럼 보입니다.
Alexis Wilke

3
@ 알렉시스. 앱이 규칙을 무시하고 포트를 열면 방화벽을 가리킬 필요가 없습니다.
ekerner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.