转自http://blog.sina.com.cn/s/blog_4da051a60101c8ny.html

     vsftp:425 failed to establish connection解决办法


错误:

425 Failed to establish connection.


这时候,可以在ftp下使用命令:quote PASV


试试用以被动模式连接。


一般DOS命令行下都是默认以PORT主动模式连接。


即,端口21监听,处理控制信息,再以端口20连接客户端进行数据传送。


而,经常的,通过外网的NAT的,基本端口20的数据连接都会被禁止掉。


所以,如果想对外网开放ftp,最好使用PASV模式。


PASV被动模式是指,以端口21监听,有连接请求时,随机开放一个比较大的端口号来处理数据传输。



vsftp中,通过编辑 /etc/vsftp.conf 实现启用PASV连接。


sudo vi /etc/vsftp.conf


在配置文件中添加下面语句:


pasv_enable=YES

pasv_min_port=6000

pasv_max_port=7000


也即,启动PASV连接模式,开放6000-7000端口号作为数据传送端口。


此外,如果是对外网开放,必须在路由器的转发规则中,开放21端口。


为了保险,可以将6000-7000端口也写入到iptables中白名单中。


命令:


sudo iptables -A INPUT -p tcp --dport 6000:7000 -j ACCEPT


在ubuntu中一般可以不用,因为ubuntu虽然有iptables,但默认是没有规则的,


也即,不会设置端口限制,但其他版本就最好加上哈。


此外,如果带有selinux的,最好也关闭。


ubuntu是默认没安装selinux。


像redhat、centOS之类的,


修改/etc/selinux/config文件中的SELINUX="" 为disabled ,然后重启。 


这样设定后,一般就可以搞定了。


如果还不行,可以通过一下思路:


1、防火墙(本机、客户机)


2、FTP目录的权限


3、客户机是否是IPv6网络


4、客户机的网关限制了外网ftp