当前位置: 主页 > 日志 > Linux >

pureftpd无法列目录原来是PassivePort未开放的缘故

 

这个问题困扰了一个月了,今天突然人品爆发,竟然给解决了。

 

服务器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。
在内网测试,成功登录并列出目录。
 
 

 

[日志信息]

该日志于 2011-01-13 23:17 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “pureftpd无法列目录原来是PassivePort未开放的缘故” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部