大家,早安,
我在 MS Azure 中託管的 WIN 2012 R2 伺服器上託管 FileZilla FTP 伺服器(被動模式)。
FTP 傳輸通常運作良好 - 每天都會執行多個 FTP 上傳和檢索。
我在 Azure 入口網站/一側開啟了相對較大範圍的連接埠(端點)以允許被動模式。
我偶爾(平均每兩天一次)看到以下 FTP 傳輸問題:
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file1
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071048
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file2
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071048
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file3
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071050
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> CWD dev_updates/Infrastructure/folder
8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 250 CWD successful. "dev_updates/Infrastructure/folder" is current directory.
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> PASV
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> 227 Entering Passive Mode (104,40,Y,X,234,235)
8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> 426 Connection closed; aborted transfer of ""
8/8/2016 9:10:01 AM - USER_FILEZILLA (62.154.Y.X)> disconnected.
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> Connected on port 21, sending welcome message...
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220-FileZilla Server 0.9.57 beta
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220-written by Tim Kosse ([email protected])
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220 Please visit https://filezilla-project.org/
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> USER USER_FILEZILLA
8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 331 Password required for
如前所述,每天(自動)發生多次 FTP 傳輸,並掃描分配給 FileZilla FTP 伺服器的 140 多個連接埠範圍(以被動模式運行)。
我在 Azure 託管的 VM 上執行 Wireshark 擷取;我可以從 Wireshark 擷取中看到,「426 連線關閉」事件實際上與 Azure 中的 VM 產生的 RST 相匹配,並發送回發出 PASV 命令的用戶端(即在上面的範例中,FTP 伺服器回復到客戶端PASV 命令,連接埠:234,235 -> 60139 用戶端嘗試開啟到連接埠60139 的資料通道以開始傳輸-> FTP 伺服器立即回复(根據Wireshark 捕獲,在MS 內)發出RST給客戶)。
我想到了 FTP 伺服器端的一些臨時連接埠分配問題 -> 因此我減少了允許的動態作業系統臨時連接埠範圍,使其不與 FTP 被動連接埠範圍重疊 - 使用
netsh int ipv4 set dynamicport tcp start=49152 num=10000
另外,我透過命令明確地將連接埠範圍保留添加到 netsh 堆疊
netsh int ip add excludeportrange protocol=tcp startport=60000 numberofports=141 store=persistent
儘管如此,問題仍然偶爾發生。
我閱讀了本網站以及 MS Azure technet 會議上關於 Azure 如何監視端點狀態(當 LB 集的一部分時)的廣泛技術討論,但這不適用於我的情況,因為 FTP 被動傳輸(檢索和上傳)在保留的FTP 被動連接埠範圍內的隨機連接埠上通常運作正常。
如果需要,我可以提供其他詳細資訊 - 同時,我將不勝感激有關伺服器和客戶端故障排除/調查的其他建議(幾乎可以肯定問題與網路或網路配置無關)。
我還想詢問有關如何調試winsock以解決可能的伺服器端套接字可用性問題的其他故障排除/調查建議/提示。