如果 FTP Server 在 IP 分享器後面,在本地端的網域不會出問題,但是外面的 FTP Client 連進來非常容易出現 Connection Timeout 的狀況。
這時有二種選擇,一種是強迫 FTP Client 使用 PORT 連線,也就是關閉 PASV。
這時就必須設定 FTP Server 了。若是 Proftp 在 PASV 無法連線時會自己轉成 PORT 模式,所以比較不會有問題。vsftp 則必須設定 vsftpd.conf 的 pasv_enable=NO 。
如果只是消極的關閉 PASV ,那大概也不用這篇文章了。^^
所以我們走第二種選擇開啟 PASV 的話,vsftpd.conf 也必須做設定。
pasv_enable=YES pasv_min_port=65400 pasv_max_port=65410
以上範例是開啟 65400~65410 Port 給 PASV 使用。
需要注意的是 pasv_min_port 跟 pasv_max_port 這二個必須在有設定 pasv_enable=YES 的情況下才會生效。也就是在 vsftpd.conf 內沒有 pasv_enable=YES 這一行的話,會出現 OOPS 的參數無效錯誤。
如果還是一直 Timeout ,就必須要確定以下三項
1.分享器跟Server的對應是不是用 DMZ? 如果不是的話,必須把 65400~65410 轉到 vsftp 的那台機器上。
2.分享器上防火牆是不是有開啟? 是不是擋住了 65400~65410 ?
3.Linux 上的防火牆是不是有開啟? 若有的話用以下的指令:
iptables -I INPUT -p tcp --dport 65400:65410 -j accept
總之,如果 vsftp 是架設在 IP 分享器後面,不論用不用 PASV 都必需作設定,不然 Timeout 的狀況就會一直發生,相信上面的設定可以解決大多數人的困擾。
[相關連結]
鳥哥的 VSFTP 設定教學:
http://linux.vbird.org/linux_server/0410vsftpd.php
vsftp 官方網站:
http://vsftpd.beasts.org/
(Mar. 2005 – vsftpd-2.0.3 released 最近終於出新版了,今天早上看到馬上就裝了)