我在虚拟机上安装了 ubuntu 服务器。我在其中安装了 proftpd,并从虚拟机的网络设置转发了端口 21(ftp 端口)。
问题是 ftp 客户端使用的是被动模式。我检查了 proftpd.conf 并取消注释了 PassivePorts 配置(49152 和 65534)。但 FileZilla 仍然无法检索目录列表。我使用主动模式使其工作,但我希望它使用被动模式。
08:25:25 错误:连接超时
08:25:25 错误:无法检索目录列表
更新 -
我尝试转发 proftpd.conf 上配置的所有被动端口(从 65500 到 65534),这些端口在主操作系统中打开。客户操作系统尚未打开任何端口。当我创建 ftp 连接时,我重新检查了客户操作系统中打开的端口,发现该范围内的某些端口已打开,但问题仍然存在。
一直在读这个。
我觉得 Virtualbox 中的端口转发功能非常有限。还有其他方法可以让客户操作系统动态地向主操作系统打开端口,而无需每次都进行配置吗?
示例场景
- 客户操作系统启动了 ssh 服务器,从而打开了 22 端口
- vbox 也向主操作系统开放端口 22(只要没有冲突。)
答案1
FTP 使用两个连接,一个用于数据,一个用于命令。PassivePorts
配置是范围用于被动 FTP 数据传输的端口。
Virtualbox 网络配置允许您输入要转发的单个端口,但不能输入范围。因此,为了使被动模式 FTP 正常工作,必须单独转发被动端口。
如果您不希望同时传输超过 5 个数据(Filezilla 等客户端将为每个文件和每个目录列表打开 1 个数据连接),则请将服务器配置更改为使用 5 个端口范围(例如 1025-1030),并在 Virtualbox 配置中转发这 5 个端口。对于 10 个连接,请使用 10 个端口范围,等等。