1.vsftp登录报错:227 Entering Passive Mod

服务器上装了vsftp,由于做了iptables限制,文件不能传到ftp服务器上,查看路由都是好的,就登录看下。


2.原因和解决办法

原因是FTP主动模式造成的。客户端连接ftp的时候默认是被动模式,要把ftp服务器模式改为被动。

#将vsftpd的模式修改为被动模式,添加下面三行到配置文件,重启vsftp服务

pasv_enable=YES

pasv_min_port=30000

pasv_max_port=30999


防火墙允许客户端210.21.18.205访问

/sbin/iptables -A INPUT -p tcp -s 210.21.18.205 --dport 5021 -i eth3 -j ACCEPT

/sbin/iptables -A INPUT -p tcp -s 210.21.18.205 --dport 30000:30999 -i eth3 -j ACCEPT


3.原理:FTP的传输模式

FTP协议的数据传输存在两种模式:主动模式和被动模式。


这两种模式发起连接的方向截然相反,主动模式是从服务器端向客户端发起;被动模式是客户端向服务器端发起连接。


但是如果服务器和客户之间存在防火墙,主动模式经常会引起一些麻烦。设想,客户位于防火墙之后,防火墙允许所有内部向外部的连接通过,但是对于外部向内部发起的连接却存在很多限制。在这种情况下,客户可以正常地和服务器建立控制连接,而如果使用主动模式,ls、put和get等数据传输命令就很难成功运行,因为防火墙会阻塞从服务器向客户发起的数据传输连接。简单包过滤防火墙把控制连接和数据传输连接完全分离开了,因此很难通过配置防火墙允许主动模式的FTP数据传输连接通过。如果防火墙允许ICMP或者TCP RST报文通过,客户程序就会马上返回connection refused错误信息;而如果防火墙只是做简单的丢弃处理,会造成客户程序挂起一段时间。