在服务端配置被动模式就可以从根源上解决这问题。
1、编辑Vsftpd配置文件
vi /etc/vsftpd/vsftpd.conf
2、在最下面添加以下信息
pasv_enable=YES #开启被动模式
pasv_min_port=4000 #随机最小端口
pasv_max_port=5000 #随机最大端口
加载内核ip_conntrack_ftp和ip_nat_ftp(终端执行)
modprobe ip_conntrack_ftpmodprobe ip_nat_ftp
3、配置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
4、加载iptables配置
iptables-restore < /etc/sysconfig/iptables
如果不是使用iptables,而是 firewall,那么查看端口是:
firewall-cmd --zone=public --list-ports
在合适的位置添加:
firewall-cmd --zone=public --add-port=3999/tcp --permanent
firewall-cmd --zone=public --add-port=4000-5000/tcp --permanent
重新加载:
firewall-cmd --reload
systemctl restart firewalld
移除:
firewall-cmd --permanent --remove-port=4000-5000/tcp
开放21端口:
firewall-cmd --permanent --add-port=21/tcp
5、重启vsftpd检测
systemctl restart vsftpd
查看vsftp状态
service vsftpd status