我在 Debian 10 机器上安装了 Pure-FTPd,该机器iptables
以链的默认DROP
策略运行INPUT
。OUTPUT
链设置为ACCEPT
。
问题:如果我尝试连接 FTP 客户端,但有时无法正常工作。它似乎可以随机列出文件夹或失败。通常重试新连接即可。
我的Pure-FTPd 配置了这些端口:
$ cat /etc/pure-ftpd/conf/Bind
85.xxx.xxx.xxx,57419
$ cat /etc/pure-ftpd/pure-ftpd.conf | grep Port
# Port range for passive connections - keep it as broad as possible.
PassivePortRange 30000 50000
要打开防火墙上的端口,我使用了:
iptables -A INPUT -p tcp --dport 57419 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:50000 -j ACCEPT
服务器上的日志:
pure-ftpd]: ([email protected]) [INFO] New connection from 176.x.x.x
pure-ftpd]: ([email protected]) [INFO] TLS: Enabled TLSv1.2 with ECDHE-RSA-AES256-GCM-SHA384, 256 secret bits cipher
pure-ftpd]: ([email protected]) [INFO] testuser is now logged in
// no more output until the client retries a new connection
现在,如果我将 iptablesINPUT
链设置为ACCEPT
一切正常,因此似乎仍有一些端口被阻止,而 Pure-FTPd 会随机尝试使用这些端口,我该如何调试/修复它?
谢谢。
答案1
我设法将此追溯到配置问题。
显然,将端口设置为/etc/pure-ftpd/pure-ftpd.conf
是不够的。经过进一步分析,ss -nap | grep pure
我发现 pure 试图使用防火墙允许范围之外的端口。
为了解决这个问题,我只需创建一个文件/etc/pure-ftpd/conf/PassivePortRange
并在那里设置端口范围。