今天突然反馈说硬件ftp无法下载了,这期间没有动过相关的部分。于是开始测试分析。
在filezilla中,发现了如下的日志:
服务器发回了不可路由的地址。使用服务器地址代替。
但是可以正常下载。但是硬件设备就无法下载文件。
网上一堆相同的文章和改客户端为主动方式的解决方案,基本无用。
仔细分析,应该还是这个提示在硬件中有影响,打开详细日志,能看到更多信息:
响应: 227 Entering Passive Mode (0,0,0,0,39,62).
状态: 服务器发回了不可路由的地址。使用服务器地址代替。
本能想就应该是指0.0.0.0这个地址了。
据此为线索搜索如下:
https://stackoverflow.com/questions/41046707/vsftpd-returns-0-0-0-0-in-response-to-pasv
https://serverfault.com/questions/821025/vsftpd-passive-reply-with-0-0-0-0-address-even-with-correct-pasv-address
最终修改配置文件:
#connect_from_port_20=YES
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10050
pasv_address=1.2.3.4
pasv_addr_resolve=YES
pasv_promiscuous=YES
listen_ipv6=NO
listen=YES
其中1.2.3.4是云主机的外网地址,不是本机网卡地址。
测试通过,硬件又恢复了。说明硬件也是实现的是pasv方式的ftp获取。
造成这个可能原因:
根据上面的两个帖子,这个问题可能是IPV6环境下的bug