关于FTP服务器出现227 Entering Passive Mode错误的解决思路

网上大多数解决办法说的非常不明白,下边说一下我自己的解决思路。
懒得看废话的小伙伴可以直接拉到最下边看解决办法。

首先搭建好ftp服务,具体过程就不多说了,我用的是xampp自带的filezilla,可以一键启动,十分方便。(服务器环境为阿里云,winserver2012)。 配置好后,服务器本地防火墙开放21端口,阿里云控制台也开放一下21端口。

随后使用windows资源管理器,在地址栏输入ftp://域名后,发现无法连接,错误提示为227 Entering Passive Mode (172,17,19,48,39,25)。

原因:

这个问题是由于连接方式使用被动方式造成的,网上关于被动方式与主动方式的介绍太复杂,我简单概括如下就是,被动方式需要服务端额外开放10个端口才能保证服务正常运行,至于为啥需要额外的十个端口我也没大看懂。

解决方法(filezilla):

在这里插入图片描述

  1. 打开filezilla控制台–>edit–>setting,弹出如上窗口,给Use custom port
    range
    打上勾,然后填写一个端口范围,保证数量大于10.
  2. 服务端本地开放这些端口
  3. 阿里云控制台开放这些端口
  4. 重要!! 选中Retrieve external IP address from,链接使用默认链接

绝大多数有问题的小伙伴应该是第四步没有设置。阿里云服务器一般有两个ip,一个是私有ip一个是弹性公网ip,如果使用默认的default,则filezilla会默认获取私有ip,导致只有服务端本地能访问ftp服务,外网无法访问ftp服务。

补充一个小知识点

关于这条错误信息227 Entering Passive Mode (172,17,19,48,39,25),括号里的前四个逗号的内容大家应该能猜出来,就是服务端的ip:172,17,19,48,那么后两位数是什么意思呢?
根据RFC文档定义(http://www.faqs.org/rfcs/rfc959.html),后两位分别为p1和p2, 且 p1*256 + p2就等于当前客户端正在访问的端口号(被动模式需要额外开放十个以上的接口,每次客户端连接的时候,服务端会从这些端口里边随机指定一个让客户端访问)。 39✖256+25=10009,可以看出这个端口号是在我刚才指定端口范围内的一个端口。

本文参考:
https://www.cnblogs.com/qtong/p/5807149.html
https://stackoverflow.com/questions/9966993/how-to-get-port-in-ftp-protocol-from-passive-mode

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值