问题1:500 I won’t open a connection to 你的内网IP
(only to 你的外网IP
)
这是由于主动模式的特性造成的,主动模式下,远程服务器只能将信息发送给路由器,也即你的外网ip,但无法直接到达你的内网IP。所以需要开启被动模式,在被动模式下,需要本地主动取连接远程服务器的ip的动态端口获取信息。
// 在ftp命令行开启被动模式
passive
问题2:服务器发回了不可路由的地址,使用服务器地址代替 / 卡在227 entering passive mode
更改客户端连接为被动模式后,报的错误。云服务器的基础网络是通过NAT与互联网连接,服务器上的网卡IP为内网地址,在Pure-Ftpd 配置文件中未指定强制被动通信的外网IP地址。所以本地客户端直接将信息发给这个内网地址,这显然是不可用的地址,所以发送失败。需要配置 pure-ftpd 相关文件
# 将下面这条设置的#号删去 然后在后面填写你的服务器的外网ip
# ForcePassiveIP **.**.**.**
# 变成
ForcePassiveIP 服务器外网ip
问题3:读取目录列表失败 / 卡在227 entering passive mode
云服务器的防火墙和阿里云面板的防火墙并不是实时同步的(可能是重启才会同步),也可能是两层防火墙,具体可以在服务器终端查看云服务器本身开放的端口,在阿里云面板查看阿里云的防火墙。要保证防火墙没有屏蔽Pure-Ftpd 默认的被动模式
动态端口 39000-40000
。
# 查看当前服务器开放的端口
firewall-cmd --list-ports
以下是对应vsftpd 下服务端的错误提示(前面是对应Pure-Ftpd)
500 Illegal PORT command. // 与问题1是等价的,在于客户端没有采用被动模式访问