今天,我试图为我的朋友和我自己设置一个 FTP 服务器。服务器在我家,所以我可以在本地访问它,但我无法向公众开放它。对于我的服务器配置,它是在 Windows 7 机器上运行的 FileZilla 服务器。我已禁用所有防火墙,因此目前没有任何防火墙阻止它,我可以在本地网络中连接到它。
在将其打开到本地(在 MikroTik 路由器上)时,我尝试过:我创建了一个防火墙 NAT 规则,从我的公共 IP 地址和端口 776 转发到端口 21 上的服务器 IP 地址,以及当我尝试从外部网络连接时从 FileZilla 获得的信息:
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is current directory.
Command: TYPE I
Response: 200 Type set to I
Command: PASV
Response: 227 Entering Passive Mode (31,134,50,169,198,229)
Command: MLSD
Error: The data connection could not be established: ECONNREFUSED - Connection refused by server
Response: 425 Can't open data connection for transfer of "/"
Error: Failed to retrieve directory listing
所以我发现我可以连接但实际上无法读取文件。我知道存在这个“被动模式”问题,但据我所知,它是在尝试连接时发生的,所以这不再是我的问题了?如果我错了,请纠正我。
我也用过这个地点测试所有东西,但显示错误。我对这类东西还不熟悉,在设置连接方面也不是很熟练。
这问题[来自 ServerFault] 也在谈论这个东西,但我无法让它工作。如果有人能一步一步地向我解释我该怎么做,请。
编辑:
FileZilla 输出:
Command: MLSD
Error: The data connection could not be established: ECONNREFUSED - Connection refused by server
Response: 425 Can't open data connection for transfer of "/"
Error: Failed to retrieve directory listing
我的 NAT 规则从我的路由器 IP 和端口 776 转发到服务器本地端口 21:
我添加的用于接受入站和出站流量的 NAT 规则:
答案1
问题是您只打开了端口 21,而您需要打开其他端口:
- 出站:TCP 端口 1025 及以上。
- 入站:TCP 端口 21 和 TCP 端口 1025 及以上。
尝试一下,应该可以正常工作。
但是,端口范围非常大。您可以通过在 filezilla 服务器中配置较低的端口范围来限制暴露,例如从 (50,100 到 51,100):
- 在您的服务器上打开 FileZilla GUI。
- 点击顶部菜单编辑->设置。
- 从树形菜单中单击被动模式设置。
- 现在确保选中使用自定义端口范围复选框,并在第一个框中输入 50100,在第二个框中输入 51100。
此后,在防火墙中进行相同的更改,就应该没问题了。