close

緣起

最近要架個 ftp 站分享東西給親朋好友,於是就在網路上搜尋看看有沒有好用又免費的 FTP 伺服器端軟體。

搜尋的結果發現網路上對於 FileZilla 的評價不錯,由於這是知名且免費的 Open Source Solution,相信用的人一定不少,遇到問題一定很容易找到解答,所以就決定用它了。 

 

 

下載

FileZilla的網站在此 http://filezilla-project.org/,有分 Client 端及 Server 端的程式,Server 端程式目前只支援 Windows 作業系統,而 Client 端則幾乎所有 Platforms 都支援。

我是兩者都有下載,不過本次分享的重點主要是在 Server 端程式的安裝及設定上。

首先先把 FileZilla Client 及 Server 都抓下來。Client 抓免安裝的就可以了(就是 zip 檔那個)。

 

 

安裝

Client 程式解開來新增站台就能用了,所以就不再花時間說明,Server 程式抓下來後,點兩下執行就會進行安裝,目前最新的版本是 0.9.34。雖然網站上只有說支援 XP 及 Vista,不過我在 Windows7 64位元下執行也很正常。

 

安裝畫面-設定啟動方式及 Admin 通訊埠


 

 

這個畫面上半部是問你要不要把 FileZilla Server 安裝成 Windows 的服務(Service) 並讓它一開機就執行。如果你想要持續不斷提供服務的話,選擇這個就沒錯了。

下半部則是 Administration Interface 要用那個通訊埠和 FileZilla Server 進行連線,不是要提供服務的 Port,不用弄錯了。

 

安裝畫面-設定伺服器端使用介面的啟動方式


 

我是覺得選手動啟動 (Start Manually) 就好了,反正這些安裝設定未來都能再改。

 

 

設定

很快就安裝好 FileZilla Ftp Server 了,接下來就要透過 Administration Interface 來進行 FileZilla 的設定了。

 

按下選單中的 Edit→Setting 會出現系統設定畫面



 

 

比較重要的是 Connection settings 這部份,就是對外提供 FTP 服務的 Port,預設值是 21,請根據實際需求來設定。

接下來是設定使用群組及使用者以及群組及使用者能夠 Access 的權限,這部份應該很直覺,沒什麼好說的。

原則上就是先設定 Group 再設定 User,如果每個 User 或 Group 又有不同的要求,再依各別的要求來限制。

比較要注意的是,如果你是在家用網路上提供此項服務的話,最好在 Speed Limit 加上限制,不然一旦你的上傳頻寬被 FTP 用戶吃光的話,網路會非常的頓。

 

Speed Limits 可以在系統設定裏設定,也可以在使用者或群組的選單裏設定。


 

 

原則上是希望至少要在系統設定那依據網路實際的上傳能力來做個限制,例如  12M/2M 的家庭光纖網路,理論上的上傳速度是 250KB/sec,所以設個 8成 200KB/sec 應該就還 OK,不至於因此影響到自己的使用。

 

 

虛擬目錄

接下來就是虛擬目錄的處理

以一個例子當說明,假設你要分享 D:Test1、D:Test2、D:Test3 這幾個目錄出去,並讓使用者一連上就能看到所有分享的目錄的話,最簡單的方法當然就是把整個 D: 分享出去,不過這似乎不切實際,因為你其他 D: 下的檔案及目錄不想讓人看光光。那要怎麼處理這樣的問題呢?

可以用 Alias 的方式來進行,先隨便分享一個資料夾,假設叫 C:FTP,並把這個資料夾設為 Home 目錄(Set as home dir),就是一連進去就會看到的目錄

然後再加入要分站的 Test1、Test2、Test3 目錄,加入的結果如下圖所示


 

 

然後分別在 Test1、Test2、Test3 上按滑鼠右鍵,選擇『Edit Alias』,設定成 c:ftp 這個目錄下的虛擬目錄,如下圖所示


 

 

這樣未來使用者連入就會看到你分享的 電影、音樂、軟體 等目錄,這些虛擬目錄實際上是分別對應到 D:Test1、D:Test2、D:Test3 這幾個目錄

 

到這邊為止,FTP 連線的功能應該就差不多了,可以在本機上安裝 FileZilla Client 軟體來連看看能不能順利連線。

 

 

防火牆

如果你發現在本機上可以連線,但到了區網的另一台電腦卻連不到時,通常要檢查的是架設 Server 程式的這台電腦的防火牆是不是有打開。

消極的作法是把提供FTP服務的那台電腦的防火牆關了 (這也太消極了吧),積極的作法就是開放 FileZilla Server 的連入連線。

先選到防火牆的進階設定,會出現以下的畫面


 


 

 

 

選擇左方的輸入規則,檢查看看裏面有沒有FileZilla Server(不是FileZilla Server Interface 喔),如果裏面已經有 FileZilla Server 這個規則的話,看看此規則是不是被停用了,如果被停用就把它打開並設為允許連線。

如果沒有此規則的話,則按下剛剛那個畫面右上角的新增規則,然後選取程式路徑,就是FileZilla Server 安裝的路徑,並設定成允許連線即可。


 


 

 

到這裏為止,應該至少區網內的電腦都能連線到新加好的 Ftp Server 了。

 

 

Port Forwarding

那不在區網裏面的人能不能連過來呢?

 

沒特定設定過的話,老實說成功的機率不大,除非連線端和伺服器端都直接撥 PPPOE 上網。

 

實際上一般家用電腦上網通常都是隱藏在 IP分享器後面,由 IP 分享器進行 PPPOE 撥接或 DHCP 取得實體 IP,個人電腦在上網時再用 NAT 方式轉換虛擬 IP 成實體 IP 出去。

 

所以要達成讓別人能連到躲在 IP 分享器後面的 FTP Server 的話,就要透過 IP 分享器裏的 Port Forwarding 的功能將所有連到 port 21 的帳號都 forward 到提供服務的機器。牽涉到 IP 分享器的設定部份,就請各顯神通了。

 

如果嫌這樣太麻煩或是架此 FTP 站台只是暫時提供別人連線的話,那就直接接 ADSL Modem 透過 PPPOE 撥接出去囉,這樣就不用受到 IP 分享器的限制,不過安全上的風險當然也比較高就是了。

 

 

Passive Mode

救人喔,好不容易 FTP 架好了、使用者帳號/密碼、目錄權限、甚至連 Port Forwarding 都設定好了,但其他網路上的朋友連過來時,還是出現了 425 Can't open data connection. 這個問題,連目錄都看不到,這該怎麼辦才好?

 

這就要扯到 FTP 主動(Active)連線和被動(Passive)連線了,詳細的內容可以參考鳥哥的Linux私房菜中關於 FTP 的解釋。

http://linux.vbird.org/linux_server/0400wuftp.php

http://linux.vbird.org/linux_server/0410vsftpd.php

 

簡單來說,Client/Server 各出一個 port 讓對方連的就是 Active 連線模式,其中Server 通常就是開啟 21 這個 port 讓 Client 連入以傳送命令。

然後 Client 再開啟一個 port (隨機或指定) 讓 Server 依據 Client 要求的命令來上傳/下載資料。

 

不過由於現在的電腦通常都在防火牆或 IP 分享器後面,叫 Client 自己開一個可通過防火牆的 port 讓 Server 連進去以上傳/下載資料根本就是妄想啊。

因此後來才有被動式(passive)連線的產生。因為 Server 是提供服務的地方,理論上能開一 port 讓 Client 傳命令的話,應該同樣也能開第二個 port 讓 Client 連入來傳送資料。

這種 Server 出二個 port 讓 Client 連的模式就叫做 Passive Mode。

 

Passive Mode 要 Client 端程式和 Server 端程式都要支援才行。幸運的是 FileZilla 的 Client/Server 程式都有支援 Passive 傳輸模式,一旦 Active Mode 傳輸失敗後就會自動切換成 Passive 傳輸模式。

 

 

既然要提供至少兩個 port ,但前面的說明只有提到要設定讓 Client 傳入的 port,所以還要在設定其他的部份。

 

開啟 Administration Interface 的 Edit -> settings ,選到 Passive mode setting。




使用被動模式傳輸時,Server 程式會告知 Clinet 程式要開啟那個 IP Address 的 那個 Port 作為 Data 傳輸之用 
(Data Port)。一般來說命令傳送埠和資料傳輸埠都會在同一台主機提供服務,所以當 Client 程式發現連不上 Server 端傳來的資料傳輸 IP 時,會自動以命令傳送的 IP 來替代並再試一次。不過有些 FTP Clinet 程式不是那麼的『聰明』,不會自行替換,因此最好還是手動指定 Server 所在的 Public IP 或 網域名稱。


最下面的 use custom port range 就是 Server 選定其他的 port 讓 Client 連入來傳送資料。

同樣地,這些 Port 也要經過 IP 分享器的 Port Forwarding 機制來傳送封包到指定的主機。

 

 

經過了以上的設定,FileZilla FTP 伺服器就正式可上線運作啦,除非防火牆有限制 Client 的連出 port,不然就算在 防火牆/IP 分享器後的朋友大多也能順利連線囉,

 

規納幾種情況供參考

 

Client端網路

Server端網路

需要設定內容

固接IP 

固接IP 

Active Mode 即可連線

PPPOE

PPPOE

Active Mode 即可連線

PPPOE

NAT

Server Side 要設定 Port ForwardingActive Mode 即可連線

NAT

PPPOE

Passive Mode 才可連線

NAT

NAT

Server Side 要設定 Port ForwardingPassive Mode 才可連線

 

絕大多數有用 IP 分享器上網 ADSL 用戶應該都是最後一種

 


本文轉自 http://blog.xuite.net/ferret/blog/33845586-FileZilla+Ftp+%E7%A8%8B%E5%BC%8F%E5%AE%89%E8%A3%9D%E8%88%87%E8%A8%AD%E5%AE%9A%E5%BF%83%E5%BE%97

arrow
arrow
    全站熱搜

    S 發表在 痞客邦 留言(0) 人氣()