前段時間配置了PureFTP上傳程式,但期間出現種種讓人不爽的問題!比如在本地使用 FlashFTP 時出現最多的“資料 Socket 錯誤 串連已逾時”錯誤,無論使用主動還是被動模式上傳,都會有類似錯誤!
[右] 資料 Socket 錯誤: 沒有到主機的通道
[右] 列表 錯誤
[右] PASV
[右] 227 Entering Passive Mode (116,255,246,176,83,197)
[右] 正在開啟資料連線 IP: 116.255.246.176 連接埠: 21445
[右] 資料 Socket 錯誤: 串連已逾時
[右] 列表 錯誤
[右] 以 PASV 模式串連失敗,正在嘗試使用 PORT 模式。
[右] 偵聽於連接埠: 4447,正在等候串連。
[右] PORT 192,168,1,222,17,95
[右] 500 我不能開啟串連到 129.79.76.201 (僅 125.40.55.15)
[右] 列表 錯誤
[右] QUIT由於當時時間緊,一直沒有靜心排查,今兒突然想通了,可能是CentOS防火牆規則的問題,因為FTP能串連到主機,但無法顯示列表!
於是查看防火牆規則:# vi /etc/sysconfig/iptables,其中關於FTP的有如下兩條:
代碼如下 |
複製代碼 |
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT |
應該不會有錯了,又翻查了一下錯誤資訊,發現被動模式的連接埠總是無法串連上,靈光一閃,查看PureFTP設定檔裡的被動模式連接埠號碼段:
代碼如下 |
複製代碼 |
# vi /usr/local/pureftpd/pure-ftpd.conf PassivePortRange 10000 20000於 |
是在 iptables 裡加了一條:
代碼如下 |
複製代碼 |
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10000:20000 -j ACCEPT |
然後儲存防火牆規則並重啟防火牆,再次使用 FlashFTP,一切正常!!
總結:問題是小問題,解決方案也簡單,關鍵在於細心!細心!