首页 > 代码库 > [linux]解决vsftpd 读取目录列表失败的问题

[linux]解决vsftpd 读取目录列表失败的问题

 使用第三方FTP软件filezilla进行登陆,出现如下错误:

技术分享

状态:    正在连接 192.168.1.6:21...
状态:    连接建立,等待欢迎消息...
响应:    220 (vsFTPd 2.2.2)
命令:    USER ftp
响应:    331 Please specify the password.
命令:    PASS ***
响应:    230 Login successful.
命令:    SYST
响应:    215 UNIX Type: L8
命令:    FEAT
响应:    211-Features:
响应:     EPRT
响应:     EPSV
响应:     MDTM
响应:     PASV
响应:     REST STREAM
响应:     SIZE
响应:     TVFS
响应:     UTF8
响应:    211 End
命令:    OPTS UTF8 ON
响应:    200 Always in UTF8 mode.
状态:    已连接
状态:    读取目录列表...
命令:    PWD
响应:    257 "/"
命令:    TYPE I
响应:    200 Switching to Binary mode.
命令:    PASV
响应:    227 Entering Passive Mode (192,168,1,6,23,8).
命令:    LIST
错误:    连接超时
错误:    读取目录列表失败

该错误是由iptables的配置引起的,临时的解决方法是执行如下命令:

[root@localhost soft]# modprobe ip_nat_ftp

再次登陆列表正常啦!

但当你重新启动服务器则iptables规则失效,又会出现相同的情况,所以我们需要修改/etc/sysconfig/iptables-config文件,

[root@localhost soft]# vi /etc/sysconfig/iptables-config

# Load additional iptables modules (nat helpers)
#   Default: -none-
# Space separated list of nat helpers (e.g. ‘ip_nat_ftp ip_nat_irc‘), which
# are loaded after the firewall rules are applied. Options for the helpers are
# stored in /etc/modprobe.conf.
IPTABLES_MODULES=""

# Unload modules on restart and stop
#   Value: yes|no,  default: yes
# This option has to be ‘yes‘ to get to a sane state for a firewall
# restart or stop. Only set to ‘no‘ if there are problems unloading netfilter
# modules.
IPTABLES_MODULES_UNLOAD="yes"

......

IPTABLES_MODULES_UNLOAD="yes"的意义:每次iptables停止或者重启都会Unload modules

IPTABLES_MODULES=""的意义:每次防火墙规则应用以后加载的模块

我们需要把

IPTABLES_MODULES=""

修改为:

IPTABLES_MODULES="ip_nat_ftp"

这样重启服务器之后就不必再每次都执行mobprobe啦。

技术分享

 

转自:

http://blog.csdn.net/zhuchuanwan/article/details/52910719

 

[linux]解决vsftpd 读取目录列表失败的问题