使用者連線 FTP時,常常發生無法列出目錄的情形
[R] 220 Welcome to XXXX FTP service.
[R] USER xxxxx
[R] 331 Please specify the password.
[R] PASS (hidden)
[R] 230 Login successful.
[R] SYST
[R] 215 UNIX Type: L8
[R] PASV
[R] 227 Entering Passive Mode (x,x,x,x,7,208)
[R] Opening data connection IP: x,x,x,x PORT: xxxx
[R] LIST -al
[R] 425 Failed to establish connection
經過判斷,有可能是因為開啟防火牆 ( iptables ) 關閉不必要的 port,導致 Passive Mode 所使用的 1024 以上的 port 被封鎖,所導致的情形。關於 Passive Mode 相關的討論,請見鳥哥的這一段文章。
處理方式 一
修改 /etc/vsftpd.conf ,加入以下的設定:
pasv_enable=YES
pasv_max_port=5005
pasv_min_port=5000
並在 iptable 的設定裡面,加上以下規則:
iptables -A INPUT -p tcp --dport 5000:5005 -j ACCEPT
就可以解決這個問題。
簡單說明:
將 vsftpd 啟動 Passive Mode ,限制所使用等待連線的 ports 在 5000-5005,然後開啟 iptables 裡面 port 5000-5005 可以被連接。
處理方式 二
Ftp client 端的軟體,請選擇預設模式或主動模式,不要使用被動模式 ( Passive Mode ),但是有一個缺點,有時候 list 要非常久。
相關文章: