1. 程式人生 > >配置支援ipv6的vsftpd服務

配置支援ipv6的vsftpd服務

最近需要配置一個支援ipv6的vsftpd服務,但只有ipv4的服務能正常工作。ipv6的客戶端連上後,除了pwd命令可以執行外,其他命令都報550 Permission denied.Passive mode refused.的錯誤。經過一番琢磨後發現了問題的所在。下面我來描述下我遇到的問題及解決方法。希望能夠幫助到有同樣困擾的朋友。

[[email protected] ~]# ftp 2090:db8:85a3:9812::34 8021
Connected to 2090:db8:85a3:9812::34 (2090:db8:85a3:9812::34).
220-Authorized uses only. All activity may be monitored and reported.
220
Name (2090:db8:85a3:9812::34:root): ftpbatch
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
550 Permission denied.
550 Permission denied.
Passive mode refused.
ftp>

1. 本來在/etc/vsftpd/目錄下建立兩個配置檔案,同時監聽ipv4和ipv6。

vsftpd.conf

vsftpdv6.conf

按照提示,分別配置如下: listen=YES #listen_ipv6=YES

及 #listen=YES listen_ipv6=YES 然後在兩個配置檔案中cmds_allowed都是支援這些命令:

FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,RETR

2. 後來在客服端中開啟debug模式,發現了兩個命令,EPSV,LPSV

​
ftp> debug
Debugging on (debug=1).
ftp> ls
---> EPSV 2
550 Permission denied.
---> LPSV
550 Permission denied.
Passive mode refused.
ftp>

​

搜了下,原來cmds_allowed中的PASV只支援ipv4協議。EPSV才能同時支援ipv4及ipv6。可以參考:

3. 最後在listen_ipv6的配置檔案的cmds_allowed配置項中添加了EPSV及LPSV。然後就能成功使用ls,cd這樣的命令,能成功上傳檔案了。(我覺得把PASV換成EPSV就能解決問題了,但還沒有嘗試。)