今天一台ftp服务器添加了一个用户之后用户名和密码均认证无误,就是无法显示目录及文件,没有响应。
原因分析如下:

ftp 服务分为passive(被动)和port(主动)两种方式。
1.被动方式当用户名密码验证之后,服务器会分配一个端口给客户端,客户端连接到这个端口,ftp服务就建立了,之后才可以进行目录列表。
2.主动方式当用户名和密码建立之后,客户端会告诉服务器它打开了一个端口,等待服务器连接,服务器连接后,ftp服务就建立了,之后进行目录列表。

现在我本地的计算机在局域网内,外面有防火墙,不可能通过主动方式连接,只能采用被动方式。被动方式连接服务器后也无法显示目录及文件,怀疑服务器防火墙问题。
服务器屏蔽除了20(ftp-data)和21(ftp)端口以外的一切端口,所以服务器分配给客户的端口无法访问,现添加防火墙规则如下:
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

规则添加完毕,一切正常。