vsFTPd 瀏覽器無列表
我正在嘗試通過瀏覽器訪問我的 ftp 伺服器,但我遇到了問題。
如果我使用 Filezilla 訪問它,我可以很好地看到目錄。但是使用瀏覽器我沒有目錄列表。
我已將此條目添加到 iptables 希望解決問題,但它沒有改變:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
簡單的解決方案是在連接到該 FTP 伺服器時將 Filezilla 切換為使用被動模式。
當您連接到 FTP 時,您使用稱為控制通道的埠 21。這是用於發送命令和接收有關發出命令結果的通知的連接。請注意,對於文件列表(輸出到
LIST
)、文件傳輸(獲取文件RETR
和放置文件STOR
)和其他實際需要傳輸數據的操作,會創建一個稱為數據通道的單獨通道。FTP 可以在主動或被動兩種模式中的任何一種模式下操作此數據通道。這兩個都是指數據通道是如何建立的。You issue a LIST (in active mode) CLIENT FIREWALL FTP SERVER _ (port 21) _ __ _ (port 21) |=| ---------- LIST command ---------> |=| [__]|=| ----- LIST command issued -- > |=| |=| /::/|_| . |_| <----- FTP server attempts to ---- |_| `\___ now listening on arbitrary connect and gets denied port for data channel say 8000 by firewall
在活動模式下,客戶端發布它創建的任意偵聽埠,FTP 伺服器連接到客戶端機器上的這個發布的地址和埠。這通常是防火牆阻止流量的地方,因為它指向客戶端主機上的隨機(經常變化的)高階埠號,用於通告 FTP 數據通道。Filezilla 預設使用 6000 到 7000 之間的埠。如果防火牆沒有阻止此連接,則
LIST
命令的輸出將通過此單獨的通道傳輸。You issue a LIST (in passive mode) CLIENT FIREWALL FTP SERVER _ (port 21) _ __ _ (port 21) |=| ---------- LIST command ---------> |=| [__]|=| --- LIST command issued -- > |=| |=| /::/|_| |_| <--- FTP server advertises the --- |_| listening data port over \___ server with the control channel listening data channel CLIENT FIREWALL FTP SERVER _ (port 21) _ __ _ <--- open control channel ---> |=| ---- open control channel ----> |=| [__]|=| |=| |=| /::/|_| --- client establishes a ----> |_| ---- passive data channel ----> |_| connection to the connection allowed advertised data channel by firewall
PASV
在被動模式下,角色互換,FTP 客戶端在命令之前發出LIST
命令。然後,FTP 伺服器創建一個偵聽 TCP 埠並將其通告給客戶端連接以建立數據通道。大多數防火牆通常允許這樣做(因為客戶端可以將連接出站到任何埠)。請注意,如果您的 FTP 伺服器和 Internet 之間有防火牆,則此防火牆還必須配置為打開這些埠以允許被動連接。大多數 FTP 伺服器都提供了設置這些埠將被通告的範圍的能力,並且可以打開這些埠以允許這些連接。
如果您受到限制並且有一個無法進行被動操作的客戶端,Filezilla 提供了該功能(未編輯 -> 設置… -> 連接/FTP/主動模式來設置要使用的埠),然後您可以將這些添加到您的防火牆。