centos vsftp 列出目录失败

问题:配置iptables后,能够登录到vsftpd服务器,但ls列目录失败(超时)。

分析:

主动模式 下客户连接 TCP/21,服务器通过 TCP/20 连接客户的随机端口 

――――这种情况下,通过状态防火墙可以解决

 iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

或者如下:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp  -m multiport --dport 20,21  -m state --state NEW -j ACCEPT

NEW: 该包想要开始一个新的连接(重新连接或连接重定向)
RELATED:该包是属于某个已经建立的连接所建立的新连接。如FTP的数据传输连接和控制连接之间就是RELATED关系。
ESTABLISHED:该包属于某个已经建立的连接。
INVALID:该包不匹配于任何连接,通常这些包被DROP。


被动模式 下,客户连接 TCP/21,客户再通过其他端口连接服务器的随机端口,卡住的原因,是因为服务器在被动模式下没有打开临时端口让 client 连过来。

临时打洞的方法:

优点:不影响ftp配置;缺点: 客户会感觉到连接有些延迟。原因参见ip_conntract的实现原理

在/etc/modprobe.conf中添加

alias ip_conntrack ip_conntract_ftp ip_nat_ftp

在/etc/rc.local中添加

/sbin/modprobe ip_conntract
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp

 

限制被动模式连接端口的方法:

  • 优点:对连接速度没有影响。缺点: 限制了客户端并发连接的数量。

在/etc/vsftpd/vsftpd.conf中添加

pasv_enable=YES

pasv_min_port=2222

pasv_max_port=2225

iptables中开放这段端口

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 2222:2225 -j ACCEPT

posted on 2013-11-01 10:24  luffy丶zhao  阅读(1064)  评论(0)    收藏  举报