作者:弹指一点红 | 来源:互联网 | 2014-05-28 09:06
之前写过一篇关于如何在Linux系统上搭建Vsftpd的文章,由于文章中并没有探讨怎么样打开被动模式,导致在连接FTP的时候出现连接超时提示。如果您对在Linux搭建Vsftpd感兴趣的话,可以参考下这篇文章:深入浅出LinuxVsftpd创建多虚拟用户教程。臭虫小明使用Fi
之前写过一篇关于如何在Linux系统上搭建Vsftpd的文章,由于文章中并没有探讨怎么样打开被动模式,导致在连接FTP的时候出现连接超时提示。如果您对在Linux搭建Vsftpd感兴趣的话,可以参考下这篇文章:深入浅出LinuxVsftpd创建多虚拟用户教程。
臭虫小明使用FileZillaFTPClient连接VsftpdFTP,在没有配置传输模式(主动模式、被动模式)时,出现了以下提示信息。我们可以手工设置传输模式为“主动模式”来解决这一问题。但由于客户端防火墙等原因,这种解决方法将不会始终有效。
状态: 正在连接 192.168.182.128:21...
状态: 连接建立,等待欢迎消息...
响应: 220 (vsFTPd 2.0.5)
命令: USER bugxm_general
响应: 331 Please specify the password.
命令: PASS ******
响应: 230 Login successful.
命令: OPTS UTF8 ON
响应: 200 Always in UTF8 mode.
状态: 已连接
状态: 读取目录列表...
命令: PWD
响应: 257 "/"
命令: TYPE I
响应: 200 Switching to Binary mode.
命令: PASV
响应: 227 Entering Passive Mode (192,168,182,128,172,85)
命令: LIST
错误: 连接超时错误: 读取目录列表失败
解决方法
在服务端配置被动模式就可以从根源上解决这问题。
1、编辑Vsftpd配置文件
vi /etc/vsftpd/vsftpd.conf
2、在最下面添加以下信息
pasv_enable=YES #开启被动模式
pasv_min_port=4000 #随机最小端口
pasv_max_port=5000 #随机最大端口
3、加载内核ip_conntrack_ftp和ip_nat_ftp(终端执行)
modprobe ip_conntrack_ftpmodprobe ip_nat_ftp
4、配置iptables开放4000到5000端口
vi /etc/sysconfig/iptables 在*filter下加入下
-A OUTPUT -p tcp --sport 4000:5000 -j ACCEPT
-A INPUT -p tcp --dport 4000:5000 -j ACCEPT
5、加载iptables配置
iptables-restore < /etc/sysconfig/iptables
6、重启Vsftpd
service vsftpd restart
测试连接
状态: 正在连接 192.168.182.128:21...
状态: 连接建立,等待欢迎消息...
响应: 220 (vsFTPd 2.0.5)
命令: USER bugxm_general
响应: 331 Please specify the password.
命令: PASS ******
响应: 230 Login successful.
命令: OPTS UTF8 ON
响应: 200 Always in UTF8 mode.
状态: 已连接
状态: 读取目录列表...
命令: PWD
响应: 257 "/"
命令: TYPE I
响应: 200 Switching to Binary mode.
命令: PASV
响应: 227 Entering Passive Mode (192,168,182,128,15,224)
命令: LIST
响应: 150 Here comes the directory listing.
响应: 226 Directory send OK.
状态: 列出目录成功
到这里,问题就成功解决了。