我在装有 Windows 10 的主机上安装了 IIS + FTP 服务(不是 FTP 扩展)。使用 WinSCP 软件,我可以从我的公共静态 IP 访问此 FTP 站点。如果我的 FTP 站点托管在 VMWare Workstation 上的虚拟机(Windows Server 2019)上,则无法访问它。只有关闭虚拟机上的私有防火墙后,我才能从虚拟机访问 FTP 站点。我已将家用路由器上的端口 21(TCP)转发到虚拟机。我尝试在虚拟机上使用 Bridge 和 NAT 网络,但在这两种设置下,只有关闭私有防火墙后,FTP 才可用。我需要进行哪些额外设置才能在虚拟机上运行实时 FTP 站点?
答案1
以下是我要检查的内容:
VM 是否使用桥接网络?如果没有,请切换到桥接网络,这样您的 VM 就不会位于第二个 VMWare 虚拟路由器后面,后者执行 NAT,也需要转发端口。因此,除非您只有一个 IP(我不认为您有,因为您提到了家用路由器),否则请先将 VM 网络模式切换到桥接,然后看看会发生什么。
FTP 是一种奇怪的协议,其原始“主动”形式会让服务器在您连接时尝试打开一个端口回客户端。这需要客户端和服务器之间的所有防火墙/NAT 系统理解协议并动态允许流量。后来,FTP 协议中添加了“被动”模式。它让客户端两次连接到服务器。在某个时候,您必须知道这一点并指示客户端请求被动模式。现代 GUI FTP 客户端似乎理解这一点,并且在放弃之前也会尝试被动。因此,理想情况下,使用被动 FTP 或至少对其进行测试(如果您可以在客户端中明确指定)。
额外想法:
- 您需要使用 FTP 吗?如果您只是为全世界提供文件,那它很好。但是如果您要对用户进行身份验证和/或允许人们上传内容,您可能需要查看 SFTP。它加密身份验证握手和客户端与服务器之间的所有流量。它还全部通过单个端口运行,因此可以根据需要轻松转发或建立隧道。
- 根据我的经验,在 Windows 上运行面向公众的 HTTP 或 FTP 服务并不是一个很安全的选择。由于您拥有 VMWare,因此您可以选择其他在互联网上具有更好生存记录的操作系统。