ftp开启被动模式时,客户端向服务端的服务端口发送请求传输命令pasv,服务端回复本机IP和另一个随机的数据端口('227 Entering Passive Mode (127,0,0,1,39,17),即127.0.0.1的39*256+17=10001端口),指引客户端向此端口发送数据。服务端会将自己的真实ip回复给客户端,但在网络映射情况下,客户端可能无法访问该真实ip,导致超时错误,或者服务端回复了网络规则不允许的随机端口,导致无法连接。应在服务端配置中做以下修改,使服务端回复映射后的ip和开通了网络规则的端口。
vi /etc/vsftpd/vsftpd.conf
pasv_enable=YES #开启被动模式
pasv_min_port=10001 #随机最小端口
pasv_max_port=10002 #随机最大端口
pasv_address=本机ip #服务器向客户端反馈的ip,如果服务端ip做过映射,应填写客户端可以访问的映射后的ip
pasv_addr_resolve=yes
service vsftpd restart