不過在架設伺服器之前,請先瞭解一下網路環境是否真的適合?
因為台灣絕大多數的網路使用者都是採用非對稱的流量機制(無論是ADSL、CABLE,甚至FTTB皆為此種方式),也就是說上傳的速率遠小於下載的速率,一但架設伺服器後,它所需要的頻寬是使用你的上傳流量,就拿現在最多人使用的2M/256K~512Kbps來看,上傳的速率也才不過20KB~50KB/s而已。
如果有人全速從你的伺服器下載一個1~200MB的檔案,你就會發現你連開個入口網站可能都有問題(YAHOO、PcHOME...等),因為我們所使用的網路機制是你的上傳頻寬如果被佔滿,連帶會影響你下載的速率(並非能夠同時下載2Mbps及上傳512Kbps!),所以你有可能就要限制上傳的速率,以免影響在家使用的網路的流暢性。如此一來能夠用來上傳資料的頻寬更小,是不是還有架設FTP Server的必要呢?(剩下10~30KB/s),說不定燒張DVD或用隨身碟COPY還比較快。
解釋完網路頻寬對於伺服器架設的影響之後,就可以知道為什麼FTP伺服器大多是公司行號或是學術團體才有,因為它們有較大的上傳頻寬,才會提供FTP這種服務,一般來說都是用來讓使用者或客戶下載書面資料、驅動程式、使用手冊...等。
聽我說了一大堆有的沒的介紹之後,就直接進入伺服器架設的部份吧!我這邊採用的是現在LINUX系統中可用的vsftpd(文字版的FTP伺服器),如果你在安裝LINUX時,有勾選檔案伺服器的選項的話,應該也會同時安裝上去,目前最新的版本是vsftpd-2.0.5(Jul 2006 released)
我這邊是採用FEDORA 6的LINUX系統(目前已經出到8,我還沒去載來用...),所以我使用的版本是vsftpd-2.0.5-10.fc6,硬體的規格老實說不太重要,只要能夠讓LINUX穩定的運行即可,因為有辦法先突破頻寬限制,再來考慮硬體規格是否足以支援吧!
以下是我做的相關設定檔:(路徑:/etc/vsftpd/vsftpd.conf)
#伺服器設定
anonymous_enable=NO(禁止使用匿名)
local_enable=YES(允許一般使用者登入)
write_enable=YES(允許寫入)
local_umask=022(檔案或目錄使用的遮罩)
dirmessage_enable=YES(進入該目錄時的注意事項)
xferlog_enable=YES(上傳或下載的動作記錄)
xferlog_file=/var/log/vsftpd.log(動作記錄檔的位置)
connect_from_port_20=YES(主動連線的使用PORT)
pasv_min_port=65000(被動連線的起始PORT)
pasv_max_port=65010(被動連線的結束PORT)
pam_service_name=vsftpd(pam的模組名稱)
use_localtime=YES(使用本地時間,否則時間會差8小時)
listen=YES(以 standalone 的方式啟動)
#與使用者有關的設定
banner_file=/etc/vsftpd/welcome.txt(登入時顯示的文件檔)
idle_session_timeout=600(發呆10分鐘後斷線)
chroot_local_user=YES(鎖定本機使用者於家目錄中)
chroot_list_enable=YES(啟動限制目錄的列表)
chroot_list_file=/etc/vsftpd/chroot_list(限制目錄的設定檔)
#安全性:
userlist_enable=YES(被列入user_list檔內的使用者皆無法使用)
tcp_wrappers=YES(使用tcp_wrappers來管理連線限制)
#其它:
user_config_dir=/etc/vsftpd/user_config_dir(各別使用者參數)
說明:
1.手動新增的部份有:其餘內建,只需把#註解拿掉即可。
use_localtime=YES
banner_file=/etc/vsftpd/welcome.txt
user_config_dir=/etc/vsftpd/user_config_dir
2.同時啟動chroot_local_user和chroot_list_enable:
代表一般使用者都會被限制在自己家目錄中,列入/etc/vsftpd/chroot_list內的使用者反而不會被限制。
3.同時允許主動或被動連線:
不過還是被動連線能夠接受的機制較多,因為有使用防火牆的使用者才能有效並清楚的知道應該開啟那些PORT,但是不是所有FTP軟體都支援被動連線,所以我都都採用。
4.各別設定檔的設定方式:(不可更動伺服器部份的設定)
例:使用者為test,在/etc/vsftpd/user_config_dir資料夾內建立一個名為test的檔案,並把相關設定檔寫入即可。
test的內容:5.安全性的延伸:tcp_wrappers效能高,iptables功能強,視狀況使用。
local_max_rate=30000(test的傳輸速率上限為30KB/s)
(1)透過iptables:(僅對被動連線有用)
iptables -A INPUT -p TCP -i eth0 --dport 21 -j ACCEPT
iptables -A INPUT -p TCP -i eth0 --dport 65000:65010 -j ACCEPT
(2)透過tcp_wrappers:(設定檔路徑:/etc/hosts.allow)
vsftpd:192.168.99.0/255.255.255.0(允許區網內存取)
後記:其實我原本最想做的方式是,在不開啟匿名登入的狀況下,讓使用者只能上傳、列出內容,但是無法刪除及讀取。試驗了很久,測試過很多奇怪的手段跟方法,還是無法達成...,如果有那位高手有辦法使用vsftpd達到此訴求的話,還請指教。
現在很多使用者連 FTP 是什麼都不知道,能給他個網址點下去就開始下載是最好的。 peace!
回覆刪除說得好呀!
回覆刪除應該是說ftp躲得太好了!很多時候使用者真的也只點下去東西又來了。
根本沒有想過興怎來的跟用什麼方式載下來的...
畢竟使用者的觀感最大。我們都是苦命的工具操作者。XD
上傳滿載,用Cfos可以調節,不會影響下載
回覆刪除唔!有人提到cfos了!
回覆刪除其實我也知道這套軟體(在網路上還挺熱門的),就是幫你調節上傳下載封包所使用的一套軟體。
只是...該軟體似乎沒有for linux的版本吧!(還是我有漏看)。
那軟體我想最大的受益者是頻寬量不夠,但是卻有大量資料進出的使用者吧!^^
不過還是多謝你提到這軟體,我也附上個官網連結好了!
http://www.cfos.de/index2_tw.htm