先介绍一下基础环境:ftp服务部署在公网环境,而客户端在内网电脑,需求是用内网电脑去下载ftp上的文件,在下载过程中提示了425 Use PORT or PASV first报错,下面介绍下解决的思路和方法。
思路
先到CMD或者linux终端用命令行模式ftp命令测试一下,如果能登录,不能使用ls或者dir命令。说明你的客户端环境无法使用PORT模式,而CMD里的ftp客户端默认支持PORT模式。主要问题在端口被防火墙控住。
PASV
1、调整模式为PASV
在ftp下使用命令:
--修改为被动模式连接
quote PASV
一般DOS命令行下都是默认以PORT主动模式连接。即,端口21监听,处理控制信息,再以端口20连接客户端进行数据传送。而经常通过外网的NAT的,基本端口20的数据连接都会被禁止掉。所以,如果想对外网开放ftp,最好使用PASV模式。
PASV被动模式是指,以端口21监听,有连接请求时,随机开放一个比较大的端口号来处理数据传输。
2、修改配置
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中白名单中。这样设定后,一般就可以搞定了。
如果还不行,可以通过一下思路:
1、防火墙(本机、客户机)
2、FTP目录的权限
3、客户机是否是IPv6网络
4、客户机的网关限制了外网ftp