
如何在 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 的最佳替代方案,但不幸的是許多舊應用程式不支援它。