如何在“centos like”vps 上進行無 kmod 的 FTP?
我最近發現我的 VPS 正在執行一個不完全是 CentOS 的 Linux 發行版。它是 OpenVZ/Virtuozzo 容器中的 CentOS。有關更多資訊,請參閱“當 CentOS 不是 CentOS 時”。我想允許從我的 iptables 防火牆後面進行 FTP(當所有規則都設置為 ACCEPT 時,FTP 工作正常)。有人能幫忙嗎?
FTP 有兩種類型——主動和被動。使用活動的 FTP,伺服器需要打開埠 20(數據)和 21(命令)——在伺服器上設置更容易,但為客戶端設置更難(因為伺服器發起與客戶端的連接)。測試活動的 FTP 有時是一個很好的起點,可以確定您的伺服器的防火牆是否是導致問題的原因。
被動 FTP 通常更普遍兼容,因為連接是由客戶端建立的。但是,它需要打開埠 21(命令埠)和另一個高編號埠(用於數據傳輸)。大多數 FTP 伺服器將允許您指定將用於被動 FTP 的埠範圍。
有關主動和被動 FTP 之間差異的詳細概述,請參閱此站點。
Kmods 通常會添加功能 - 通過驗證接受所有連接可以解決您的問題,您在很大程度上表明在這種情況下您不需要 kmod,但只是有一些必要的埠被阻止。
在您的 FTP 配置中,設置適當的指令來定義將使用的被動埠範圍,然後在 iptables 中打開這些相同的埠,您應該一切順利。
純FTPd:
有一個指令
PassivePortRange
:PassivePortRange min_port max_port
vsFTPd:有兩個指令
pasv_max_port
和pasv_min_port
:pasv_max_port=xxxxx pasv_min_port=xxxxx
您還需要使用
pasv_enable=YES
.預設情況下,vsFTPd 從中讀取配置
/etc/vsftpd.conf
(因此您應該將指令放在那裡 - 檢查它們是否不存在)。但是,可以通過在命令行上將不同的文件路徑傳遞給 vsFTPd 來覆蓋預設配置位置(您的一個 init 腳本可能會這樣做)。一旦你指定了必要的埠,你可以在一個 ipTables 命令中添加它們:
iptables -A INPUT -p tcp -m tcp --dport xxxxx:xxxxx -j ACCEPT
(注意:FTP 是唯一的 TCP - 您不需要啟用 UDP)