aws/pure-ftpd 的被动 ftp 连接问题

aws/pure-ftpd 的被动 ftp 连接问题

我有一台通过 aws 运行 pure-ftp 的 centos 服务器。我已配置 PureDB 并添加了具有正确权限的用户。我在 aws 安全组内打开了入站端口 20/21 和 49152-65534,然后使用Passive Port Rangepure-ftpd 配置文件中的设置将这些端口映射回 pure-ftpd。在此阶段,使用机器上的测试ftp localhost按预期工作;我可以与我的用户连接并列出文件。

现在,当我尝试从我的机​​器连接到服务器时,我ForcePassiveIP在服务器上添加了设置,并将其设置为 aws 实例的公共 ip,然后尝试连接;ftp <public-ip>。连接成功,我可以登录,但 90% 的时间被动连接处于挂起状态,仅227 Entering Passive Mode (<public-ip>,<ports>)在我尝试列出文件时显示。同样,尝试使用 ftp 客户端上传新文件也会挂起然后失败:

Response: 227 Entering Passive Mode (<public-ip>,<ports>) Command: MLSD Error: Connection timed out Error: Failed to retrieve directory listing

有人知道为什么会发生这种情况吗?任何帮助都将不胜感激。

注意:我在具有相同操作系统/设置(减去设置)的 Vagrant 机器上遇到了类似的问题ForcePassiveIP,运行后工作正常modprobe ip_conntrack_ftp,但 aws 服务器并非如此。

答案1

您是否已使用以下参数正确配置了 pure-ftpd 配置文件:

PassivePortRange  49152 65534
ForcePassiveIP AWS_SERVER_PUBLIC_IP

您可以使用以下命令检查操作系统允许的端口范围:

cat /proc/sys/net/ipv4/ip_local_port_range

相关内容