每當我安裝vsftpd
時centos
,我只為使用者設定監獄環境,其餘的都是預設配置vsftpd
。我建立使用者並嘗試連接filezila
ftp 客戶端,但無法使用被動模式連線。我總是將其更改transfer settings
為活動模式以成功連接到ftp server
否則我會得到
Error: Failed to retrieve directory listing
那麼有沒有辦法更改vsftp.conf
文件中的任何指令,並且我們可以以被動模式連接到伺服器?
答案1
要為 vsftpd 設定被動模式,您需要在 vsftpd.conf 中設定一些參數。
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
這將啟用被動模式並將其限制為使用十一個連接埠進行資料連接。這很有用,因為您需要在防火牆上開啟這些連接埠。
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
如果測試後一切正常,則儲存防火牆的狀態
service iptables save
這將更新/etc/sysconfig/iptables
文件。
要在 CentOS 7 中執行此操作,您必須使用新的 firewalld,而不是 iptables:
找到你的區域:
# firewall-cmd --get-active-zones
public
interfaces: eth0
我的區域是“公共”,因此我將區域設為公共,新增連接埠範圍,然後重新載入:
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
建立連線後會發生什麼
您的用戶端透過連接埠 21 連接到 vsftpd 伺服器。
伺服器回應客戶端,告訴它要連接到上面指定的範圍中的哪個連接埠。
客戶端在指定連接埠上建立資料連接,並且會話繼續。
對於不同的 ftp 有很好的解釋模式這裡。
答案2
若要啟用被動模式,請在 vsftp.conf 中設定以下設定選項:
pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx
您當然可以更改起始端口和結束端口,並且應該將 xxx 替換為您伺服器的公共 IP。
此外,您應該在防火牆中開啟被動模式連接埠範圍。在 centos 上,您可以載入ip_conntrack_ftp
模組來處理防火牆中的 ftp 連線。編輯/etc/sysconfig/iptables-config
ip_conntrack_ftp 並將其新增至 IPTABLES_MODULES 選項。然後重新啟動 iptables:
/sbin/service iptables restart
答案3
在 旁邊pasv_enable=YES
,指定 VSFTP 將執行 PASV 模式的連接埠範圍:
pasv_min_port=50000
pasv_max_port=50999
pasv_enable=YES
不要忘記配置 iptables 允許在這些連接埠上傳輸資料包:
iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT
答案4
通常,阻止使用被動模式(阻止資料傳輸所需的 tcp 連線)的不是 ftp 伺服器 vsftpd,而是像 iptable 這樣的防火牆。