如何配置vsftpd以使用被动模式


49

每当我安装vsftpdcentos,我只会为用户设置监狱环境,其余的是默认配置vsftpd。我创建用户并尝试与filezilaftp客户端连接,但是无法与被动模式连接。我总是将其更改transfer settings为活动模式以成功连接到ftp server其他设备,否则我将得到

 Error: Failed to retrieve directory listing

那么,有没有一种方法可以更改vsftp.conf文件中的任何指令,并且可以通过被动模式连接到服务器?

Answers:


86

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

pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090

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

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

如果在测试之后一切正常,则使用以下命令保存防火墙的状态

service iptables save

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

要在CentOS 7中做到这一点,您必须使用新的firewalld,而不是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指南都没有列出...辉煌
皮特

太棒了-这个vsftp配置解决了我所有的FTP防火墙问题:)
BurninLeo

24

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

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

当然,您可以更改起始端口和结束端口,并且应该用服务器的公共IP替换xxx。

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

/sbin/service iptables restart

3
pasv_address设置完所有其他功能后仍然无法正常工作时,诀窍是什么?
fbmd

1
@fbmd在尝试pasv_address之前,还应检查pasv_max和min_port的顺序是否正确。我碰巧在pasv_min_port中配置了最大值,而vsftpd只是忽略了这一点。这是已知的无声缺陷/错误,从视觉上使您认为pasv端口已正确配置,但未配置。这发生在我身上,解决了我的问题。
Pedro Sousa

如果要在中指定DNS地址pasv_address,则应添加pasv_addr_resolve=YES(默认为NO
Pierre-Damien

6

在旁边pasv_enable=YES,指定VSFTP将在其中运行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 2012年

确保包含pasv_address在vsftpd.conf文件中。
佩德罗马德里

3

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


实际上,vsftpd可能足够聪明,可以在防火墙中打开端口...但是从我在这里看到的答案来看,它似乎不具备这样的功能。
亚历克西斯·威尔克

3
@Alexsis。如果应用程序只是忽略规则并仍然打开端口,那么防火墙是没有意义的。
ekerner '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.