使用 vsftpd-linux 在 Azure 虚拟机中运行被动 FTP

使用 vsftpd-linux 在 Azure 虚拟机中运行被动 FTP

如何在 Azure Linux 虚拟机上运行被动 FTP 服务器?

配置 Azure 防火墙上的端点和 PASV 端口是不够的,因为客户端挂在“进入被动模式”

答案1

目前,无法像在专用服务器中那样顺利地运行被动 FTP,原因有两个:一是 Azure 目前只允许您为每个服务器打开 25 个端点(如果我错了,请纠正我),二是 Azure 使用的 LAN<->虚拟 IP 连接。让我们一一解决这些问题。

Azure 当前实现了 NAT/防火墙/负载平衡器,可将流量从外部虚拟 IP 转发到内部网络地址(10.0.0.0/8类)。如果您ifconfig在虚拟机上运行,​​就会发现我在说什么。一个端点是为 SSH 保留的,我不相信您真的想禁用它。因此,如果另一个端点保留到端口 21,您只能使用 23 个 PASV 端口(只要您不托管任何其他服务),严格限制可以同时连接的客户端数量。一旦您接受这一点,我们继续。

如果你逐个打开了端口 25003-25006,则可以使用以下配置来启用它们

pasv_enable=YES
pasv_min_port=25003
pasv_max_port=25006

vsftpd而任何其他 FTP 服务器都会发出一个PASV命令,基本上说“连接到端口 AA 上的 XYWZ”。任何 FTP 服务器都应该读取机器的配置以获取网络地址:这就是为什么 vsftp 基本上说“连接到端口 25003 上的 10.XYZ”,然后,为什么客户端会挂起!

使用以下命令告诉 vsftpd 使用不同的外部地址

pasv_addr_resolve=YES
pasv_address=dom.cloudapp.net

已经测试、运行并与社区分享!

注意:只要客户端不在防火墙或长城后面,主动 FTP 就可以工作,而 SFTP 是 FTP 的最佳替代品,但不幸的是许多旧版应用程序不支持它。

相关内容