如何configurationvsftpd以使用被动模式

每当我在centos上安装vsftpd时,我只为用户设置jail环境,rest是vsftpd的默认configuration。 我创build用户,并尝试与Filezila FTP客户端连接,但我无法连接被动模式。 我总是将“传输设置”更改为活动模式,以成功连接到FTP服务器,否则我会得到

Error: Failed to retrieve directory listing 

那么有没有办法改变vsftp.conf文件中的任何指令,我们可以使用被动模式连接到服务器?

更新:感谢所有的答案给出的答案。

要为vsftpdconfiguration被动模式,您需要在vsftpd.conf中设置一些参数。

 pasv_enable=Yes pasv_max_port=10100 pasv_min_port=10090 

这使被动模式,并限制它使用十一个端口进行数据连接。 这很有用,因为您需要在防火墙上打开这些端口。

 iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT 

如果testing完这一切后,然后保存防火墙的状态

 service iptables save 

这将更新/etc/sysconfig/iptables文件。

要做到这一点是CentOS 7你必须使用新的firewalld,而不是iptables:

find您的区域:

 # firewall-cmd --get-active-zones public interfaces: eth0 

我的区域是“公共”,所以我把我的区域设置为public,添加端口范围,然后重新加载:

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

当你build立连接时会发生什么?

  • 你的客户端连接到端口21上的vsftpd服务器。

  • 服务器响应客户端告诉它在上面指定的范围内连接哪个端口。

  • 客户端在指定的端口上build立数据连接,会话继续。

这里有不同的ftp 模式的一个很好的解释。

要启用被动模式,请在vsftp.conf中设置以下configuration选项:

 pasv_enable=YES pasv_min_port=41361 pasv_max_port=65534 pasv_address=xxx.xxx.xxx.xxx 

您当然可以更改开始和结束端口,并应该用服务器的公共IPreplacexxx。

另外,你应该在防火墙中打开被动模式端口范围。 在centos上,您可以加载ip_conntrack_ftp模块来处理防火墙中的ftp连接。 编辑/etc/sysconfig/iptables-config并将ip_conntrack_ftp添加到IPTABLES_MODULES选项。 之后重启iptables:

 /sbin/service iptables restart 

pasv_enable=YES旁边,指定VSFTP将运行PASV模式的端口范围:

 pasv_min_port=50000 pasv_max_port=50999 port_enable=YES 

不要忘了configurationiptables允许在这些端口上传输数据包:

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

通常,它不是ftp服务器vsftpd,但防火墙如iptable防止使用被动模式(阻止数据传输所需的tcp连接)。