业务背景:业务中需要使用对方的FTP服务器,然后使用脚本自动登录FTP服务器并扫描对应目录,然后下载需要的文件。
问题:之前使用被动模式连接一直正常,突然有一天我方无法获取到正常下载文件;但是使用windows客户端是可以正常上传、下载的。
问题排查:
1、Windows客户端可以正常使用,说明网络是没问题的,ftp server也正常运行;
2、使用ftp命令/开启debug日志,查看每一步的信息;
看到关键信息:
*cmd* 'PASV'
*resp* '227 Entering Passive Mode (172,17,71,15,43,14)'
这里发送被动模式命令后,server返回的是内网地址(172.17.71.15),客户端会以内容地址加端口建立数据传输通道,从而导致数据传输失败。
3、Windows客户端为什么可以正常使用
细看Windows客户端连接过程中的信息,可以看到“状态: 服务器发回了不可路由的地址。使用服务器地址代替。”
-- 其实客户端是对这种情况做了兼容处理的。
4、windows客户端是如何处理的
查看客户端配置,“被动模式”配置项中包含如下配置
5、为什么之前正常&#x