我在使用 ProFTPD 服务器时遇到了问题,因为当多个端口处于活动状态(IP 地址相同)时,我无法将其设置为正常工作。
在我的 proftpd.conf 文件中,我添加了以下部分:
<VirtualHost 0.0.0.0>
Port 2122
Umask 022
ServerName "Example"
DefaultRoot /home/usr1/www/example1
UserAlias fuser usr1
# Valid LOGINs
<Limit LOGIN>
AllowUser usr1
DenyALL
</Limit>
</VirtualHost>
因此,当我尝试建立与端口 21 的连接时,一切正常,并且我得到了目录列表。但是当我尝试建立与端口 2122 的连接时,它连接了,但我得到了一个错误500 非法 PORT 命令在最后。
在Linux防火墙中端口21和2122是打开的。
这是我执行时得到的结果netstat -lpn | grep ftp
tcp6 0 0 :::2122 :::* LISTEN 30597/proftpd: (acc
tcp6 0 0 :::21 :::* LISTEN 30597/proftpd: (acc
现在,我不确定这个虚拟服务器可能哪里出了问题,以及为什么我最后无法获得目录列表。
重点是,我需要两个 FTP,因为一些用户应该连接到第一个,一些用户应该连接到第二个。每个 FTP 都有自己的主目录。
如果需要,我可以提供完整的 proftpd.conf 文件。
答案1
FTP 服务器有被动和主动模式,对于主动模式,您需要打开一个端口范围。在主动模式下,FTP 服务器会打开一个随机端口进行数据传输,然后客户端会连接到该随机端口。如果您的防火墙阻止了此端口,则目录列表和数据传输将失败。
在被动模式下,客户端打开新端口,然后通知服务器连接该端口进行数据传输。被动模式不适用于所有路由器,客户端可能无法打开端口进行数据传输。
解决方案:打开一个端口范围(例如 1500 到 2000),然后配置您的 FTP 服务器以使用这些端口。