我有 Linux(Debian 7.1 wheezy),在其中运行 pure-ftpd,创建虚拟用户,用于 ftp 的文件夹。我还安装了 openssl,为 tls 创建了私有证书。一切似乎都很好。
- 当用户以非 TLS 的被动模式从内部地址连接时 - 它可以正常工作。
- 当用户使用 TLS 以被动模式从内部地址连接时 - 它可以正常工作。
- 当用户以非 TLS 的被动模式从外部地址连接时 - 它可以正常工作。
- 当用户使用 TLS 以被动模式从外部地址连接时 - ftp 不起作用,因为 ftp 服务器返回外部客户端本地 ip 地址。而客户端不知道这个地址。
我也尝试过在 中创建 conf 文件来解决这个问题/etc/pure-ftpd/conf/ForcePassiveIP
,其中写入了外部地址。但是当用户从外部地址连接时,他得到的是外部地址,这很好,但之后他又遇到了连接错误。我认为这不好,因为来自内部网络的用户将无法连接 ftp,因为他们将从 ForcePassiveIP conf 文件中获取外部地址。
也许我可以用不同的设置创建两个 ftps 服务器,但我认为这不是最佳的。
答案1
$ echo '30000 50000' > /etc/pure-ftpd/conf/PassivePortRange
$ service pure-ftpd restart
此外,如果您使用 CSF 或 iptables,则需要打开从 30000 到 50000 的所有端口。