
我的 ftp 伺服器出現問題,我已經嘗試修復了一個多星期了。
我的配置:
- 我在 Raspberry Pi 上運行 Raspbian。
- 我的 ftp 伺服器是 pure-ftpd,我使用以下開關來運行它:
/usr/local/sbin/pure-ftpd -D -C 5 -E -A -H -x -p 35000:36000 -u 0 -y 5:3 -Y 1
- 我已經使用選項“--with-tls”編譯了它
- 我在用明確 TLS 加密,(我也嘗試過隱式,相同的結果)
- 我已將連接埠轉送到由 pure-ftpd 中的 -p 開關定義的被動連接埠範圍
- 我也將端口20端口轉發到21端口
我正在運行的其他伺服器:
- 桑巴伺服器
- Apache Web 伺服器
- 自訂 Python 套接字伺服器
- 以及內建的 shh/sftp 伺服器
我還運行了 no-ip DUC 客戶端
簡而言之,這是我在使用 pure-ftpd 時遇到的問題:
- 沒有 TLS 的 LAN 中的 FTP(主動和被動):工作
- LAN 中使用 TLS(主動和被動)的 FTP:工作
- 沒有 TLS 的 WAN 中的 FTP(被動):工作
- 使用 TLS(主動和被動)的 WAN 中的 FTP:不工作
- 無法更改端口,因為它在 WAN 中不起作用
這是錯誤日誌和我嘗試過的事情:
ftptest.net 結果(對於有 tls 的 FTP):
…………
指令:PASV
回覆:227 進入被動模式(192,168,0,4,138,78)
錯誤:伺服器在 PASV 回覆中傳回不可路由的專用 IP 位址
我在論壇上讀到,您必須使用 -P 開關指定 PASV IP 位址,所以我這樣做了,這就是結果:
回覆:211-支援的擴展:
……………………
錯誤:未收到換行符的回車符
這是為了不帶 tls 和帶 tls 都可以!所以是的,-P 開關根本不起作用!
我還應該指出,被動模式連接埠是正確的(取自 PASV 命令)
Filezilla 日誌(有明確 tls):
指令:PASV
反應:227 進入被動模式 (192,168,0,4,138,251)
狀態:伺服器發送了帶有不可路由位址的被動回應。使用伺服器位址代替。
命令:MLSD
錯誤:無法建立資料連線:ECONNREFUSED - 連線被伺服器拒絕
錯誤:連線被伺服器關閉
錯誤:無法檢索目錄列表
使用 -P 開關:
相同的事情,除了沒有“伺服器發送了不可路由的地址*”
我還嘗試透過使用以下命令允許所有內容(從而禁用防火牆)來擾亂防火牆(iptables):
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
我也無法更改預設端口,因為如果這樣做,我會收到連接拒絕錯誤。
今天我又出現了另一個奇怪的症狀:
我只能打開連接埠 21 到 21(它可以工作),因為如果我打開 20,我就可以獲得 ssh 伺服器。
記錄一下:
狀態:已連接,正在等待歡迎訊息... 回覆:
SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
錯誤:回覆不包含有效的回應代碼
我還嘗試了連接埠轉送連接埠 443、989 到 990(用於隱式 tls),並嘗試將 Raspberry Pi 設定為 DMZ 主機。
注意:我從 vsftpd 切換過來,因為它很慢並且不支援安全 ftp(Raspberry Pi 的 3.x 需要使用安全 ftp 支援進行編譯,但我編譯時出錯),並且我不使用 proftpd,因為它無法使用tls支援進行編譯
/var/log/messages 不提供任何有用的資訊(僅表示使用者每次使用或不使用 tls 登入)
希望你們能幫助我,因為我真的迷路了!
答案1
終於解決了!我所要做的就是將被動連接埠範圍從 50000-51000 更改為 12000-13000!現在一切都很好!我現在使用 pure-ftpd,如下所示:
/usr/local/sbin/pure-ftpd -D -C 5 -E -A -H -x -S 192.168.0.4,60 -p 12000:13000 -u 0 -y 5:3 -Y 1 -P &