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. 随机生成50个字段的elasticsearch的测试程序输入

    词典位置:https://raw.githubusercontent.com/jonbcard/scrabble-bot/master/src/dictionary.txt import json f ...

  2. SocketErrorCode:10022

    在编写.net的网络服务器时,我使用了裸socket来实现.在windows上,或者在linux上通过.net core来跑时都没有什么问题,但是通过mono运行调用socket.Bind()时却总是 ...

  3. 90年代经典“手游”—拼图板小游戏Opencv实现

    80后可能还对儿时玩过的一种经典木质的拼图板游戏记忆犹新,一般是一种4*4或5*5规格的手持活动板,通过挪动每个小板子的位置,拼出来板子上完整的图像,那时候还没有网吧,手机也还是大哥大的天下,所以这也 ...

  4. 用mkdirs创建目录

    import java.io.*; class a { public static void main(String args[]) { createDir("c:/fuck"); ...

  5. 喵哈哈村的魔法考试 Round #1 (Div.2)

    比赛地址:http://qscoj.cn/contest/2/ 都是中文题,这里不在详述题意 A.喵哈哈村的魔法石 分析:暴力求解 #include<iostream> #include& ...

  6. 高可用性和PyMongo

        High Availability and PyMongo高可用性和PyMongo************************************ PyMongo makes it e ...

  7. 洛谷P2148 E&D——打表

    题目:https://www.luogu.org/problemnew/show/P2148 先打表找个规律: #include<iostream> #include<cstdio& ...

  8. Laravel 5.4 中的异常处理器和HTTP异常处理实例教程

    错误和异常是处理程序开发中不可回避的议题,在本地开发中我们往往希望能捕获程序抛出的异常并将其显示打印出来,以便直观的知道程序在哪里出了问题并予以解决,而在线上环境我们不希望将程序错误或异常显示在浏览器 ...

  9. HTML 新属性

    accesskey 属性 -- 代表链接的快捷键访问方式 定义了accesskey的链接可以使用快捷键(ALT+字母)访问. 主菜单与导航菜单使用accesskey,通常是不错的选择. 取值: 字母 ...

  10. 【旧文章搬运】PspCidTable攻与防

    原文发表于百度空间,2009-03-29========================================================================== PspCi ...