1,需求和问题的产生

实践中需要分布在各地的各个客户端向云端服务器上传文件,因此在阿里云服务器上安装了FileZilla Server软件作为文件FTP服务端。

客户端程序采用FTP方式向服务端传输文件。由于客户端为局域网地址,服务端无法主动访问客户端,因此需要设置服务端为被动模式。

但实践发现,客户端程序可以连接上服务端,但无法向服务端正常传输文件,服务端生成的文件大小为0。而服务端则出现“425 Can't open data connection for transfer”错误。

2,问题分析

首先怀疑是客户端程序写得有问题。于是,在客户端电脑上安装FlashFXP和WinSCP软件,用这两种软件作为FTP客户端连接FileZilla Server,测试结果表明文件传输正常。

因此怀疑客户端程序有问题。但客户端程序先后更换了INDY、ICS、CIS等多种FTP客户端组件,其结果均不正常。

由于客户端采用FlashFXP和WinSCP能正常传输文件,因此显然与防火墙设置无关了,况且为简化情况已将服务端和客户端的防火墙全部禁用,360杀毒和安全卫士也关闭。

因此又怀疑是FileZilla Server设置问题,但网上查了很多资料,均不得要领。

某次打开“Passive mode settings”发现,最下方有个网址可以帮助检查问题。

于是在客户端电脑上点击进去,访问https://ftptest.net/

结果如下:

显然是网络配置有问题的,而且解决方案也很明确,就是第2条,必须让“the server knows its external IP address”。这就很明确了,服务端应该配置明确的外网地址!

3,问题解决

于是在“Passive mode settings”选项中,设置明确的外网地址如下:

再次访问https://ftptest.net/测试,hula!测试通过!

客户端软件上传文件试试,也OK了!

至此,内网向阿里云服务器FTP上传文件的问题得到解决。

4,总结

至此还有一个疑惑未解,就是为什么服务端“Passive mode settings”选项中,未设置明确的外网地址时,FlashFXP和WinSCP软件也能正常使用呢?

其实分析FlashFXP的日志不难发现,在FileZilla Server的被动模式下未设置明确的外网地址时,其得到的服务器地址确实是阿里云服务器的内网地址(172,18,134,181),但软件足够聪明,下一步打开数据连接时将IP地址自动转换为了外网地址(120.25.204.13),因此能连接成功。如下图:

但普通的FTP客户端软件缺少这一转换,直接使用服务器返回的内网地址去建立数据连接,显然只能失败。如下图:

当FileZilla Server的被动模式下设置了明确的外网地址时,客户端得到的是服务器的外网地址,因此数据连接能够成功。如下图:

总之,为了确保被动模式下FTP连接不出现“425 Can't open data connection for transfer”错误,应在服务端“Passive mode settings”选项中,设置明确的外网地址。

FileZilla Server 端设置passive模式注意事项的更多相关文章

  1. [备忘]Windows Server 2008 R2部署FTP FileZilla Server防火墙设置

    有一台服务器,之前文件迁移少,现准备用FileZilla Server当FTP服务器,服务器系统是Windows Server 2008 R2,同样适用FileZilla Client连接服务器FTP ...

  2. filezilla server配置为 passive mode

    首先要配置filezilla的setting里面的Passive mode setting选项 (2)关键部分,打开win8.1下的防火墙,新建入站规则 注意,要打开80,443端口.已经passiv ...

  3. 防火墙内设置FileZilla Server注意事项

    开启了Windows下的防火墙,如何设置FileZilla Server 相关选项,能在服务器端只开启21,23端口就可以正常连接使用 方法/步骤   1.       开启windows防火墙,同时 ...

  4. FileZilla Server ftp 服务器下通过alias别名设置虚拟目录(多个分区)

    最近检查服务器的时候发现磁盘空间不够用了,正好有两个硬盘正好,一个硬盘还空着,正好通过ftp服务器的别名功能实现添加空间了,这样就不用重新弄机器了 说明:FileZilla Server 的虚拟目录设 ...

  5. FileZilla Server下通过别名设置虚拟目录

    说明:FileZilla Server 的虚拟目录设置与其它 FTP 服务器软件有所不同.在 FileZilla Server 中设置虚拟目录,必须采用 FTP 根目录 + 虚拟目录名的形式来进行.比 ...

  6. FTP服务器FileZilla Server配置及使用方法

    FileZilla Server下载安装完成后,安装过程不写说明了,网上一抓一大把,直接从配置开始记录. 1.创建服务器 ²  Password:栏位中输入本服务器Filezilla服务的密码, ²  ...

  7. 免费ftp服务器FileZilla Server配置

    FileZilla Server下载安装完成后,必须启动软件进行设置,由于此软件是英文,本来就是一款陌生的软件,再加上英文,配置难度可想而知,小编从网上找到一篇非常详细的教程进行整理了一番,确保读到这 ...

  8. FileZilla Server超详细配置

    FileZilla Server下载安装完成后,必须启动软件进行设置,由于此软件是英文,本来就是一款陌生的软件,再加上英文(注:本站提供中文版本,请点击下载),配置难度可想而知,站长从网上找到一篇非常 ...

  9. [转] FileZilla Server超详细配置

    FileZilla Server下载安装完成后,必须启动软件进行设置,由于此软件是英文,本来就是一款陌生的软件,再加上英文(注:本站提供中文版本,请点击下载),配置难度可想而知,站长从网上找到一篇非常 ...

随机推荐

  1. hdu 2112 HDU Today 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目意思:又是求最短路的,不过结合埋字符串来考查. 受之前1004 Let the Balloo ...

  2. html5--3.1 form元素

    html5--3.1 form元素 学习要点 form元素及其属性 form元素 用来定义一个表单,是建立表单的基础元素,(就类似定义表格的table) 表单的其他元素包含在form元素中,其主要子元 ...

  3. cf 620C Pearls in a Row(贪心)

    d.有一串数字,要把这些数字分成若干连续的段,每段必须至少包含2个相同的数字,怎么分才能分的段数最多? 比如 是1 2 1 3 1 2 1 那么 答案是 21 34 7 即最多分在2段,第一段是1~3 ...

  4. python中optparse模块用法

    optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数. 首先需要引入optparser模块,然后执行初始化,实例化一个OptionParser对象(可以带参,也可以不带 ...

  5. MYSQL数据库学习----索引和触发器

    一:索引 索引是创建在数据库表上,其作用是提高对表中数据的查询速度. 假设数据库中有一张1000条记录的表格,如果没有创建索引的话,用户想通过查询条件查询,实际上是把整个数据库中1000条记录都读取一 ...

  6. Synchronized之四:Synchronized的可重入性

    本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock. 可重入锁,也叫做递归锁,指的是同一线程外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响.在JAVA ...

  7. 杂项-公司:Aspose

    ylbtech-杂项-公司:Aspose Aspose 于2002年3月在澳大利亚悉尼创建,旗下产品覆盖文档.图表.PDF.条码.OCR.CAD.HTML.电子邮件等各个文档管理领域,为全球.NET ...

  8. virtualBox更改虚拟机内存大小

    在cmd中进入到virtualbox安装目录 查看目前的虚拟机列表: VBoxManage list vms 读取虚拟机具体信息 VBoxManage showvminfo <uuid>| ...

  9. 用Xtrabackup实现MySQL全库备份与恢复

    xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下: (1)xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisa ...

  10. Ubuntu16.04安装Python3.6 和pip

    root账户,不是root账户,命令前加sudo 安装: 1.add-apt-repository ppa:jonathonf/python-3.6 2.apt-get update 3.apt-ge ...