如何在 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 的最佳替代品,但不幸的是许多旧版应用程序不支持它。