我从防火墙端口 21 打开了 Google Cloud Engine 上的 FTP,但我只能通过主动模式连接到 FTP。我也想使用被动模式。
根据https://stackoverflow.com/questions/24566692/filezilla-ftp-server-fails-to-retrieve-directory-listing端口 50000-55000 必须打开,但我试过了。这个答案对我的情况不起作用。当我打开所有端口到 TCP 时,我可以通过被动模式连接,但我不想打开所有端口(或者我需要打开所有端口吗??)
这里我找到了所有端口的东西:
被动模式
在被动模式下,客户端无法控制服务器为数据连接选择哪个端口。因此,为了使用被动模式,您必须允许防火墙中的所有端口进行传出连接。
我的问题是,我是否需要为被动模式打开所有端口,或者我可以做其他事情吗?
系统
操作系统:CentOS 7,带最新软件包
FTP 服务:PureFTPd
更新
当我尝试被动模式时,日志显示已登录,但在检索文件列表后卡住了(我无法发布日志,因为我的日志文件不是英文的)
感谢和问候
答案1
添加以下内容:
PassivePortRange 50000 55000
在
/etc/pure-ftpd.conf
我相信您的问题会得到解决。请记住,防火墙也应允许此端口范围。
编辑:
引自这精彩来源:
在被动模式 FTP 中,客户端会发起与服务器的两个连接,从而解决了防火墙过滤从服务器到客户端的传入数据端口连接的问题。打开 FTP 连接时,客户端会在本地打开两个随机的非特权端口(N > 1023 和 N+1)。第一个端口通过端口 21 与服务器联系,但客户端不会发出 PORT 命令并允许服务器重新连接到其数据端口,而是会发出 PASV 命令。结果是服务器随后会打开一个随机的非特权端口(P > 1023)并将 P 发送回客户端以响应 PASV 命令。然后,客户端会发起从端口 N+1 到服务器上的端口 P 的连接以传输数据。
这里的诀窍是
被动端口范围 50000 55000
指令将强制 pureFtp 从您之前在防火墙中允许的此范围中随机选择端口。