这个问题困扰了一个月了,今天突然人品爆发,竟然给解决了。
服务器ftp软件采用的是:pureftpd(支持mysql数据库、Web管理)。
出现的问题是:可以成功登录,但是无法列出目录的文件(用户权限没有问题,并且21和20端口以及加入了防火墙例外)。
今天突然看到FTP的主动和被动模式的说明:
Port(主动)模式时服务器只需要开启21,20端口。21端口进行命令传递。20端口主动连接客户端进行数据(非命令数据)传输(因此当客户端在NAT内网中时就无法采用该模式了)。
Passive(被动)模式时服务器需要开启21及按需多个Passive端口。21端口进行命令传递,客户端主动连接服务器的Passive端口进行数据传输(因此即使客户端在内网也可以使用该模式)。
更多介绍:Active FTP vs. Passive FTP, a Definitive Explanation http://slacksite.com/other/ftp.html
恍然大悟:
我刚好处在内网中,因此主动模式无法使用。而使用被动模式时由于服务器防火墙没有开放FTP使用的Passive端口。因此命令可以成功传输,但是目录列表数据却无法传递了,这就出现了登录成功但是无法列目录的现象。
验证一:
在一台独立IP的服务器上连接该FTP,成功登录并列出目录,如下图所示:
验证二:
将pureftpd使用的Passive端口段(/usr/local/pureftpd/pure-ftpd.conf,PassivePortRange参数)加入防火墙例外,在iptables中加入:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20000:21000 -j ACCEPT
然后重启pureftpd以及iptables。
在内网测试,成功登录并列出目录。
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢